return expr_;
}
-const char Stencil::type_p_name_[] = "ly:stencil?";
+const char * const Stencil::type_p_name_ = "ly:stencil?";
Interval
Stencil::extent (Axis a) const
void
Stencil::rotate (Real a, Offset off)
{
- rotate_degrees (a * 180 / M_PI, off);
+ rotate_degrees (a, 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
pts.push_back (Offset (shifted_box.x ().at (RIGHT), shifted_box.y ().at (UP)));
pts.push_back (Offset (shifted_box.x ().at (LEFT), shifted_box.y ().at (UP)));
- const Offset rot = complex_exp (Offset (0, a * M_PI / 180.0));
+ const Offset rot (offset_directed (a));
dim_.set_empty ();
for (vsize i = 0; i < pts.size (); i++)
dim_.add_point (pts[i] * rot + absolute_off);
}
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);
+ expr_);
dim_.translate (o);
}
s.translate (z);
return s;
}
+
+Stencil
+Stencil::with_outline (Stencil const &ol) const
+{
+ Stencil new_stencil (ol.extent_box (),
+ scm_list_3 (ly_symbol2scm ("with-outline"),
+ ol.expr (),
+ expr ()));
+ return new_stencil;
+}