diff options
| author | Krzysztof Kosi??ski <tweenk.pl@gmail.com> | 2010-08-14 19:22:11 +0000 |
|---|---|---|
| committer | Krzysztof KosiĆski <tweenk.pl@gmail.com> | 2010-08-14 19:22:11 +0000 |
| commit | aa844be794b36b44b624e579db7f0945b5d3927b (patch) | |
| tree | f83306b1ac51d8089373023162945eb25951bf68 /src/dyna-draw-context.cpp | |
| parent | Fix paint bucket tool (diff) | |
| download | inkscape-aa844be794b36b44b624e579db7f0945b5d3927b.tar.gz inkscape-aa844be794b36b44b624e579db7f0945b5d3927b.zip | |
Completely remove NRPixBlock
(bzr r9508.1.67)
Diffstat (limited to 'src/dyna-draw-context.cpp')
| -rw-r--r-- | src/dyna-draw-context.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/dyna-draw-context.cpp b/src/dyna-draw-context.cpp index de6c151c3..468124bb7 100644 --- a/src/dyna-draw-context.cpp +++ b/src/dyna-draw-context.cpp @@ -34,6 +34,7 @@ #include "svg/svg.h" #include "display/canvas-bpath.h" +#include "display/cairo-utils.h" #include <2geom/isnan.h> #include <2geom/pathvector.h> #include <2geom/bezier-utils.h> @@ -62,7 +63,6 @@ #include "display/canvas-bpath.h" #include "display/canvas-arena.h" #include "livarot/Shape.h" -#include "libnr/nr-pixblock.h" #include "dyna-draw-context.h" @@ -438,16 +438,16 @@ sp_dyna_draw_brush(SPDynaDrawContext *dc) double trace_thick = 1; if (dc->trace_bg) { // pick single pixel - NRPixBlock pb; - int x = (int) floor(brush_w[Geom::X]); - int y = (int) floor(brush_w[Geom::Y]); - nr_pixblock_setup_fast(&pb, NR_PIXBLOCK_MODE_R8G8B8A8P, x, y, x+1, y+1, TRUE); - sp_canvas_arena_render_pixblock(SP_CANVAS_ARENA(sp_desktop_drawing(SP_EVENT_CONTEXT(dc)->desktop)), &pb); - const unsigned char *s = NR_PIXBLOCK_PX(&pb); - double R = s[0] / 255.0; - double G = s[1] / 255.0; - double B = s[2] / 255.0; - double A = s[3] / 255.0; + double R, G, B, A; + NRRectL area; + area.x0 = floor(brush_w[Geom::X]); + area.y0 = floor(brush_w[Geom::Y]); + area.x1 = area.x0 + 1; + area.y1 = area.y0 + 1; + cairo_surface_t *s = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, 1, 1); + sp_canvas_arena_render_surface(SP_CANVAS_ARENA(sp_desktop_drawing(SP_EVENT_CONTEXT(dc)->desktop)), s, area); + ink_cairo_surface_average_color_premul(s, R, G, B, A); + cairo_surface_destroy(s); double max = MAX (MAX (R, G), B); double min = MIN (MIN (R, G), B); double L = A * (max + min)/2 + (1 - A); // blend with white bg |
