summaryrefslogtreecommitdiffstats
path: root/src/draw-context.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/draw-context.cpp')
-rw-r--r--src/draw-context.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/draw-context.cpp b/src/draw-context.cpp
index 356853e09..33e9b4a5d 100644
--- a/src/draw-context.cpp
+++ b/src/draw-context.cpp
@@ -99,6 +99,7 @@ static void sp_draw_context_init(SPDrawContext *dc)
dc->red_color = 0xff00007f;
dc->blue_color = 0x0000ff7f;
dc->green_color = 0x00ff007f;
+ dc->halo_color = 0xffffff10;
dc->red_curve_is_valid = false;
dc->red_bpath = NULL;
@@ -107,6 +108,8 @@ static void sp_draw_context_init(SPDrawContext *dc)
dc->blue_bpath = NULL;
dc->blue_curve = NULL;
+ dc->halo_bpath = NULL;
+
dc->green_bpaths = NULL;
dc->green_curve = NULL;
dc->green_anchor = NULL;
@@ -176,6 +179,10 @@ static void sp_draw_context_setup(SPEventContext *ec)
dc->blue_bpath = sp_canvas_bpath_new(sp_desktop_sketch(ec->desktop), NULL);
sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(dc->blue_bpath), dc->blue_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT);
+ // Create halo bpath
+ dc->halo_bpath = sp_canvas_bpath_new(sp_desktop_sketch(ec->desktop), NULL);
+ sp_canvas_bpath_set_stroke(SP_CANVAS_BPATH(dc->halo_bpath), dc->halo_color, 1.0, SP_STROKE_LINEJOIN_MITER, SP_STROKE_LINECAP_BUTT);
+
// Create blue curve
dc->blue_curve = new SPCurve();
@@ -532,6 +539,8 @@ void spdc_concat_colors_and_flush(SPDrawContext *dc, gboolean forceclosed)
dc->red_curve->reset();
sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(dc->red_bpath), NULL);
+ sp_canvas_bpath_set_bpath(SP_CANVAS_BPATH(dc->halo_bpath), NULL);
+
if (c->is_empty()) {
c->unref();
return;
@@ -752,6 +761,12 @@ static void spdc_free_colors(SPDrawContext *dc)
dc->blue_curve = dc->blue_curve->unref();
}
+ // Halo
+ if (dc->halo_bpath) {
+ sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->halo_bpath));
+ dc->halo_bpath = NULL;
+ }
+
// Green
while (dc->green_bpaths) {
sp_canvas_item_destroy(SP_CANVAS_ITEM(dc->green_bpaths->data));