lollis: draw stems in fill color (optionally)
This commit is contained in:
parent
f3e996bdb7
commit
8a204bcf51
@ -61,6 +61,7 @@ public:
|
|||||||
Coord _radius;
|
Coord _radius;
|
||||||
Coord _length;
|
Coord _length;
|
||||||
Item* bounding_parent;
|
Item* bounding_parent;
|
||||||
|
bool line_color_is_fill;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ Lollipop::Lollipop (Canvas* c)
|
|||||||
, _radius (8)
|
, _radius (8)
|
||||||
, _length (0)
|
, _length (0)
|
||||||
, bounding_parent (0)
|
, bounding_parent (0)
|
||||||
|
, line_color_is_fill (true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -42,6 +43,7 @@ Lollipop::Lollipop (Item* parent)
|
|||||||
, _radius (8)
|
, _radius (8)
|
||||||
, _length (0)
|
, _length (0)
|
||||||
, bounding_parent (0)
|
, bounding_parent (0)
|
||||||
|
, line_color_is_fill (true)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,8 +64,6 @@ Lollipop::compute_bounding_box () const
|
|||||||
void
|
void
|
||||||
Lollipop::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const
|
Lollipop::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) const
|
||||||
{
|
{
|
||||||
setup_outline_context (context);
|
|
||||||
|
|
||||||
Duple p = _parent->item_to_window (Duple (_center.x, _center.y));
|
Duple p = _parent->item_to_window (Duple (_center.x, _center.y));
|
||||||
Duple l (p);
|
Duple l (p);
|
||||||
|
|
||||||
@ -72,11 +72,14 @@ Lollipop::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) cons
|
|||||||
l = l.translate (half_a_pixel);
|
l = l.translate (half_a_pixel);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* the line */
|
setup_outline_context (context);
|
||||||
|
|
||||||
|
if (!line_color_is_fill) {
|
||||||
|
/* draw line in outline color */
|
||||||
context->move_to (l.x, l.y + _radius);
|
context->move_to (l.x, l.y + _radius);
|
||||||
context->line_to (l.x, l.y + _length);
|
context->line_to (l.x, l.y + _length);
|
||||||
context->stroke ();
|
context->stroke ();
|
||||||
|
}
|
||||||
|
|
||||||
/* the circle: clip to avoid weirdness at top and bottom of parent */
|
/* the circle: clip to avoid weirdness at top and bottom of parent */
|
||||||
|
|
||||||
@ -89,6 +92,7 @@ Lollipop::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) cons
|
|||||||
|
|
||||||
context->arc (p.x, p.y, _radius, 0.0 * (M_PI/180.0), 360.0 * (M_PI/180.0));
|
context->arc (p.x, p.y, _radius, 0.0 * (M_PI/180.0), 360.0 * (M_PI/180.0));
|
||||||
|
|
||||||
|
|
||||||
if (fill()) {
|
if (fill()) {
|
||||||
setup_fill_context (context);
|
setup_fill_context (context);
|
||||||
if (outline()) {
|
if (outline()) {
|
||||||
@ -103,6 +107,14 @@ Lollipop::render (Rect const & area, Cairo::RefPtr<Cairo::Context> context) cons
|
|||||||
context->stroke ();
|
context->stroke ();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (line_color_is_fill) {
|
||||||
|
setup_fill_context (context);
|
||||||
|
/* draw line in fill color */
|
||||||
|
context->move_to (l.x, l.y + _radius);
|
||||||
|
context->line_to (l.x, l.y + _length);
|
||||||
|
context->stroke ();
|
||||||
|
}
|
||||||
|
|
||||||
if (bounding_parent) {
|
if (bounding_parent) {
|
||||||
context->restore ();
|
context->restore ();
|
||||||
}
|
}
|
||||||
@ -172,3 +184,4 @@ Lollipop::covers (Duple const & point) const
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user