summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorFelipe Corr??a da Silva Sanches <juca@members.fsf.org>2008-02-21 10:38:19 +0000
committerjucablues <jucablues@users.sourceforge.net>2008-02-21 10:38:19 +0000
commiteeec9f25018827941b79f8b658615eb40cc0bf8c (patch)
treef64145ba1354039aa141602eda9535cab5290fb8 /src
parentMore sensible size constraints for undo history panel. (diff)
downloadinkscape-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.cpp2
-rw-r--r--src/display/nr-filter-displacement-map.cpp15
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);