diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2013-04-14 20:54:08 +0000 |
|---|---|---|
| committer | Jabiertxo Arraiza Zenotz <jtx@jtx.marker.es> | 2013-04-14 20:54:08 +0000 |
| commit | 08acf66f4df391ff3289b59b80bc770397860343 (patch) | |
| tree | 1961c00c1f5f59982dbe5e7a37f2ea00ef839a0f /src/display/canvas-bpath.cpp | |
| parent | adding halos (diff) | |
| download | inkscape-08acf66f4df391ff3289b59b80bc770397860343.tar.gz inkscape-08acf66f4df391ff3289b59b80bc770397860343.zip | |
halo
(bzr r11950.1.92)
Diffstat (limited to 'src/display/canvas-bpath.cpp')
| -rw-r--r-- | src/display/canvas-bpath.cpp | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/src/display/canvas-bpath.cpp b/src/display/canvas-bpath.cpp index 6ac69a325..defd95b45 100644 --- a/src/display/canvas-bpath.cpp +++ b/src/display/canvas-bpath.cpp @@ -16,8 +16,9 @@ #endif #include <sstream> #include <string.h> -#include "desktop.h" +#include "document.h" +#include <2geom/pathvector.h> #include "color.h" #include "display/sp-canvas-group.h" #include "display/sp-canvas-util.h" @@ -146,10 +147,6 @@ sp_canvas_bpath_render (SPCanvasItem *item, SPCanvasBuf *buf) cairo_set_tolerance(buf->ct, 0.5); cairo_new_path(buf->ct); - feed_pathvector_to_cairo (buf->ct, cbp->curve->get_pathvector(), cbp->affine, area, - /* optimized_stroke = */ !dofill, 1); - - if (dofill) { // RGB / BGR ink_cairo_set_source_rgba32(buf->ct, cbp->fill_rgba); @@ -159,16 +156,37 @@ sp_canvas_bpath_render (SPCanvasItem *item, SPCanvasBuf *buf) } if (dostroke) { - ink_cairo_set_source_rgba32(buf->ct, cbp->stroke_rgba); - if(cbp->stroke_rgba == 0xffffff10){ - cairo_set_line_width(buf->ct, 3); + SPCurve* orig = new SPCurve(cbp->curve->get_pathvector()); + Geom::Point origPoint(orig->first_path()->initialPoint()); + if(cbp->stroke_rgba == 0x12345678){ + cairo_save(buf->ct); + orig->moveto(origPoint[Geom::X]+1,origPoint[Geom::Y]+1); + feed_pathvector_to_cairo (buf->ct, cbp->curve->get_pathvector(), cbp->affine, area, + /* optimized_stroke = */ !dofill, 1); + ink_cairo_set_source_rgba32(buf->ct, 0x00000020); + cairo_set_line_width(buf->ct, 1); + cairo_move_to(buf->ct, origPoint[Geom::X] + 1, origPoint[Geom::Y] + 1); + cairo_stroke_preserve(buf->ct); + cairo_restore(buf->ct); + cairo_save(buf->ct); + feed_pathvector_to_cairo (buf->ct, cbp->curve->get_pathvector(), cbp->affine, area, + /* optimized_stroke = */ !dofill, 1); + ink_cairo_set_source_rgba32(buf->ct, 0xffffff20); + cairo_set_line_width(buf->ct, 1); + cairo_move_to(buf->ct, origPoint[Geom::X] - 1, origPoint[Geom::Y] - 1); + cairo_stroke_preserve(buf->ct); + cairo_restore(buf->ct); }else{ + feed_pathvector_to_cairo (buf->ct, cbp->curve->get_pathvector(), cbp->affine, area, + /* optimized_stroke = */ !dofill, 1); + ink_cairo_set_source_rgba32(buf->ct, cbp->stroke_rgba); cairo_set_line_width(buf->ct, 1); + cairo_move_to(buf->ct, origPoint[Geom::X], origPoint[Geom::Y]); + if (cbp->dashes[0] != 0 && cbp->dashes[1] != 0) { + cairo_set_dash (buf->ct, cbp->dashes, 2, 0); + } + cairo_stroke(buf->ct); } - if (cbp->dashes[0] != 0 && cbp->dashes[1] != 0) { - cairo_set_dash (buf->ct, cbp->dashes, 2, 0); - } - cairo_stroke(buf->ct); } else { cairo_new_path(buf->ct); } |
