summaryrefslogtreecommitdiffstats
path: root/src/display
diff options
context:
space:
mode:
authorFelipe Corr??a da Silva Sanches <juca@members.fsf.org>2009-06-20 11:49:01 +0000
committerJucaBlues <JucaBlues@users.sourceforge.net>2009-06-20 11:49:01 +0000
commit59c1c219f9b89e50bd9fa9acce9bed9860a281e7 (patch)
tree4bf3bfd95e92122ee96aedea4a2d91d92d7a1732 /src/display
parentbool sp_svg_read_icc_color( gchar const *str, SVGICCColor* dest ); (diff)
downloadinkscape-59c1c219f9b89e50bd9fa9acce9bed9860a281e7.tar.gz
inkscape-59c1c219f9b89e50bd9fa9acce9bed9860a281e7.zip
parsing and handling of icc-color in feFlood SVG Filters
TODO: implement interface to set icc-color to the flood-color parameter (bzr r8050.1.4)
Diffstat (limited to 'src/display')
-rw-r--r--src/display/nr-filter-flood.cpp27
-rw-r--r--src/display/nr-filter-flood.h3
2 files changed, 25 insertions, 5 deletions
diff --git a/src/display/nr-filter-flood.cpp b/src/display/nr-filter-flood.cpp
index 026cbce16..06025392b 100644
--- a/src/display/nr-filter-flood.cpp
+++ b/src/display/nr-filter-flood.cpp
@@ -9,8 +9,14 @@
* Released under GNU GPL, read the file 'COPYING' for more information
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include "display/nr-filter-flood.h"
#include "display/nr-filter-utils.h"
+#include "svg/svg-icc-color.h"
+#include "svg/svg-color.h"
namespace Inkscape {
namespace Filters {
@@ -26,6 +32,7 @@ FilterFlood::~FilterFlood()
{}
int FilterFlood::render(FilterSlot &slot, FilterUnits const &/*units*/) {
+g_message("rendering feflood");
NRPixBlock *in = slot.get(_input);
if (!in) {
g_warning("Missing source image for feFlood (in=%d)", _input);
@@ -43,12 +50,18 @@ int FilterFlood::render(FilterSlot &slot, FilterUnits const &/*units*/) {
true);
unsigned char *out_data = NR_PIXBLOCK_PX(out);
-
unsigned char r,g,b,a;
- r = CLAMP_D_TO_U8((color >> 24) % 256);
- g = CLAMP_D_TO_U8((color >> 16) % 256);
- b = CLAMP_D_TO_U8((color >> 8) % 256);
- a = CLAMP_D_TO_U8(opacity*255);
+
+
+ r = CLAMP_D_TO_U8((color >> 24) % 256);
+ g = CLAMP_D_TO_U8((color >> 16) % 256);
+ b = CLAMP_D_TO_U8((color >> 8) % 256);
+ a = CLAMP_D_TO_U8(opacity*255);
+
+#if ENABLE_LCMS
+ icc_color_to_sRGB(icc, &r, &g, &b);
+g_message("result: r:%d g:%d b:%d", r, g, b);
+#endif //ENABLE_LCMS
for(i=0; i < 4*in_h*in_w; i+=4){
out_data[i]=r;
@@ -70,6 +83,10 @@ void FilterFlood::set_opacity(double o) {
opacity = o;
}
+void FilterFlood::set_icc(SVGICCColor *icc_color) {
+ icc = icc_color;
+}
+
void FilterFlood::area_enlarge(NRRectL &/*area*/, Geom::Matrix const &/*trans*/)
{
}
diff --git a/src/display/nr-filter-flood.h b/src/display/nr-filter-flood.h
index 9e6a53abb..d38c0d4f5 100644
--- a/src/display/nr-filter-flood.h
+++ b/src/display/nr-filter-flood.h
@@ -15,6 +15,7 @@
#include "display/nr-filter-primitive.h"
#include "display/nr-filter-slot.h"
#include "display/nr-filter-units.h"
+#include "svg/svg-color.h"
namespace Inkscape {
namespace Filters {
@@ -27,11 +28,13 @@ public:
virtual void set_opacity(double o);
virtual void set_color(guint32 c);
+ virtual void set_icc(SVGICCColor *icc_color);
virtual int render(FilterSlot &slot, FilterUnits const &units);
virtual void area_enlarge(NRRectL &area, Geom::Matrix const &trans);
private:
double opacity;
guint32 color;
+ SVGICCColor *icc;
};
} /* namespace Filters */