X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Fstencil.cc;h=3da186954132a5cfc3940471e116671bac07faf0;hb=a26d69cbc5f9bdc3064d97223bc8f8f8936a9938;hp=c8985105ea44f0216ca58a3153a31cb89f3b55f2;hpb=15066d8beec430ab889fef51e5cdeeb9eeee83c2;p=lilypond.git diff --git a/lily/stencil.cc b/lily/stencil.cc index c8985105ea..3da1869541 100644 --- a/lily/stencil.cc +++ b/lily/stencil.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1997--2012 Han-Wen Nienhuys + Copyright (C) 1997--2015 Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,6 @@ #include "string-convert.hh" #include "warn.hh" -#include "ly-smobs.icc" Stencil::Stencil () { @@ -39,24 +38,13 @@ Stencil::Stencil (Box b, SCM func) dim_ = b; } -int -Stencil::print_smob (SCM, SCM port, scm_print_state *) -{ - scm_puts ("#", port); - return 1; -} - SCM -Stencil::mark_smob (SCM smob) +Stencil::mark_smob () const { - Stencil *s = (Stencil *) SCM_CELL_WORD_1 (smob); - return s->expr_; + return expr_; } -IMPLEMENT_SIMPLE_SMOBS (Stencil); -IMPLEMENT_TYPE_P (Stencil, "ly:stencil?"); -IMPLEMENT_DEFAULT_EQUAL_P (Stencil); +const char Stencil::type_p_name_[] = "ly:stencil?"; Interval Stencil::extent (Axis a) const @@ -67,7 +55,7 @@ Stencil::extent (Axis a) const bool Stencil::is_empty () const { - return (expr_ == SCM_EOL + return (scm_is_null (expr_) || dim_.is_empty ()); } @@ -116,10 +104,10 @@ Stencil::rotate_degrees_absolute (Real a, Offset absolute_off) * *this = rotated() */ - expr_ = scm_list_n (ly_symbol2scm ("rotate-stencil"), + expr_ = scm_list_3 (ly_symbol2scm ("rotate-stencil"), scm_list_2 (scm_from_double (a), scm_cons (scm_from_double (x), scm_from_double (y))), - expr_, SCM_UNDEFINED); + expr_); /* * Calculate the new bounding box @@ -179,11 +167,10 @@ Stencil::translate (Offset o) } if (!scm_is_null (expr_)) - expr_ = scm_list_n (ly_symbol2scm ("translate-stencil"), + expr_ = scm_list_3 (ly_symbol2scm ("translate-stencil"), ly_offset2scm (o), - expr_, SCM_UNDEFINED); - if (!is_empty ()) - dim_.translate (o); + expr_); + dim_.translate (o); } void