diff options
| author | Felipe Corr??a da Silva Sanches <juca@members.fsf.org> | 2008-02-21 10:38:19 +0000 |
|---|---|---|
| committer | jucablues <jucablues@users.sourceforge.net> | 2008-02-21 10:38:19 +0000 |
| commit | eeec9f25018827941b79f8b658615eb40cc0bf8c (patch) | |
| tree | f64145ba1354039aa141602eda9535cab5290fb8 /src | |
| parent | More sensible size constraints for undo history panel. (diff) | |
| download | inkscape-eeec9f25018827941b79f8b658615eb40cc0bf8c.tar.gz inkscape-eeec9f25018827941b79f8b658615eb40cc0bf8c.zip | |
* convert to non-premultiplied alpha on fedisplacementmap
* corrected a slight mistake on a comment (!) on fecolormatrix :-P
(bzr r4805)
Diffstat (limited to 'src')
| -rw-r--r-- | src/display/nr-filter-colormatrix.cpp | 2 | ||||
| -rw-r--r-- | src/display/nr-filter-displacement-map.cpp | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/src/display/nr-filter-colormatrix.cpp b/src/display/nr-filter-colormatrix.cpp index 51017ab02..054b3899b 100644 --- a/src/display/nr-filter-colormatrix.cpp +++ b/src/display/nr-filter-colormatrix.cpp @@ -42,7 +42,7 @@ int FilterColorMatrix::render(FilterSlot &slot, FilterUnits const &/*units*/) { true); // this primitive is defined for non-premultiplied RGBA values, - // thus convert them to that format before blending + // thus convert them to that format if (in->mode != NR_PIXBLOCK_MODE_R8G8B8A8N) { NRPixBlock *original_in = in; in = new NRPixBlock; diff --git a/src/display/nr-filter-displacement-map.cpp b/src/display/nr-filter-displacement-map.cpp index 5d454e6cd..1345924fc 100644 --- a/src/display/nr-filter-displacement-map.cpp +++ b/src/display/nr-filter-displacement-map.cpp @@ -12,6 +12,7 @@ #include "display/nr-filter-displacement-map.h" #include "display/nr-filter-types.h" #include "display/nr-filter-units.h" +#include "libnr/nr-blit.h" #include "libnr/nr-pixops.h" namespace NR { @@ -58,7 +59,19 @@ int FilterDisplacementMap::render(FilterSlot &slot, FilterUnits const &units) { out->area.x1 = out_x0 + out_w; out->area.y1 = out_y0 + out_h; - nr_pixblock_setup_fast(out, map->mode, out->area.x0, out->area.y0, out->area.x1, out->area.y1, true); + nr_pixblock_setup_fast(out, texture->mode, out->area.x0, out->area.y0, out->area.x1, out->area.y1, true); + + // this primitive is defined for non-premultiplied RGBA values, + // thus convert them to that format + if (map->mode != NR_PIXBLOCK_MODE_R8G8B8A8N) { + NRPixBlock *original_map = map; + map = new NRPixBlock; + nr_pixblock_setup_fast(map, NR_PIXBLOCK_MODE_R8G8B8A8N, + original_map->area.x0, original_map->area.y0, + original_map->area.x1, original_map->area.y1, + false); + nr_blit_pixblock_pixblock(map, original_map); + } unsigned char *map_data = NR_PIXBLOCK_PX(map); unsigned char *texture_data = NR_PIXBLOCK_PX(texture); |
