summaryrefslogtreecommitdiffstats
path: root/src/display
diff options
context:
space:
mode:
authorFelipe Corr??a da Silva Sanches <juca@members.fsf.org>2009-12-05 23:30:37 +0000
committerFelipe C. da S. Sanches <juca@members.fsf.org>2009-12-05 23:30:37 +0000
commit34c82e4c01d1f782e6fca1ced0c00b1085a28e07 (patch)
tree846871959b79999d28c93f2b827c0dc3a43d20f8 /src/display
parentadd cxxtests for marker_loc enum. code depends on the exact values of the enu... (diff)
parentUpdating to current trunk (diff)
downloadinkscape-34c82e4c01d1f782e6fca1ced0c00b1085a28e07.tar.gz
inkscape-34c82e4c01d1f782e6fca1ced0c00b1085a28e07.zip
merging gsoc 2009 color management work by Felipe Sanches (a.k.a. JucaBlues)
(bzr r8869)
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 */