source file of the GNU LilyPond music typesetter
- (c) 1997--2005 Han-Wen Nienhuys <hanwen@xs4all.nl>
+ (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#include "grob.hh"
#include <cstring>
-#include "main.hh"
#include "input-smob.hh"
-#include "warn.hh"
-#include "pointer-group-interface.hh"
-#include "misc.hh"
-#include "paper-score.hh"
-#include "stencil.hh"
-#include "warn.hh"
-#include "system.hh"
+#include "international.hh"
#include "item.hh"
-#include "stencil.hh"
+#include "main.hh"
#include "misc.hh"
#include "music.hh"
-#include "item.hh"
-#include "paper-score.hh"
-#include "ly-smobs.icc"
#include "output-def.hh"
+#include "pointer-group-interface.hh"
+#include "stencil.hh"
+#include "system.hh"
+#include "warn.hh"
-
-
-
+#include "ly-smobs.icc"
Grob *
Grob::clone (int count) const
else
{
SCM expr = m->expr ();
- if (point_and_click_global)
- expr = scm_list_3 (ly_symbol2scm ("grob-cause"),
- self_scm (), expr);
+ expr = scm_list_3 (ly_symbol2scm ("grob-cause"),
+ self_scm (), expr);
retval = Stencil (m->extent_box (), expr);
}
+ SCM rot = get_property ("rotation");
+ if (scm_is_pair (rot))
+ {
+ Real angle = scm_to_double (scm_car (rot));
+ Real x = scm_to_double (scm_cadr (rot));
+ Real y = scm_to_double (scm_caddr (rot));
+
+ retval.rotate (angle, Offset (x, y));
+ }
/* color support... see interpret_stencil_expression () for more... */
SCM color = get_property ("color");
dim_cache_[a].offset_ is unaliased.
*/
Real off = robust_scm2double (internal_get_property (sym), 0.0);
- *me->dim_cache_[a].offset_ += off;
-
- me->del_property (sym);
- return *me->dim_cache_[a].offset_;
+ if (me->dim_cache_[a].offset_)
+ {
+ *me->dim_cache_[a].offset_ += off;
+ me->del_property (sym);
+ return *me->dim_cache_[a].offset_;
+ }
+ else
+ return 0.0;
}
MESSAGES
****************************************************************/
void
-Grob::warning (String s) const
+Grob::warning (string s) const
{
SCM cause = self_scm ();
while (Grob *g = unsmob_grob (cause))
}
-String
+string
Grob::name () const
{
SCM meta = get_property ("meta");
}
void
-Grob::programming_error (String s) const
+Grob::programming_error (string s) const
{
SCM cause = self_scm ();
while (Grob *g = unsmob_grob (cause))
"meta "
"minimum-X-extent "
"minimum-Y-extent "
+ "rotation "
"springs-and-rods "
"staff-symbol "
"stencil "
}
Grob *
-common_refpoint_of_array (Link_array<Grob> const &arr, Grob *common, Axis a)
+common_refpoint_of_array (vector<Grob*> const &arr, Grob *common, Axis a)
{
- for (int i = arr.size (); i--;)
+ for (vsize i = arr.size (); i--;)
if (Grob *s = arr[i])
{
if (common)