summaryrefslogtreecommitdiffstats
path: root/src/filters
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/filters
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/filters')
-rw-r--r--src/filters/flood.cpp25
-rw-r--r--src/filters/flood.h2
2 files changed, 25 insertions, 2 deletions
diff --git a/src/filters/flood.cpp b/src/filters/flood.cpp
index 625e35d42..221b0daf2 100644
--- a/src/filters/flood.cpp
+++ b/src/filters/flood.cpp
@@ -17,12 +17,13 @@
# include "config.h"
#endif
+#include "strneq.h"
+
#include "attributes.h"
#include "svg/svg.h"
#include "flood.h"
#include "xml/repr.h"
#include "helper-fns.h"
-#include "svg/svg-color.h"
/* FeFlood base class */
@@ -79,6 +80,7 @@ static void
sp_feFlood_init(SPFeFlood *feFlood)
{
feFlood->opacity = 1;
+ feFlood->icc = NULL;
}
/**
@@ -120,16 +122,34 @@ sp_feFlood_set(SPObject *object, unsigned int key, gchar const *value)
gchar *end_ptr = NULL;
guint32 read_color;
double read_num;
+ bool dirty = false;
switch(key) {
/*DEAL WITH SETTING ATTRIBUTES HERE*/
case SP_PROP_FLOOD_COLOR:
cend_ptr = NULL;
read_color = sp_svg_read_color(value, &cend_ptr, 0xffffffff);
+
if (cend_ptr && read_color != feFlood->color){
feFlood->color = read_color;
- object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
+ dirty=true;
+ }
+
+ if (cend_ptr){
+ while (g_ascii_isspace(*cend_ptr)) {
+ ++cend_ptr;
+ }
+ if (strneq(cend_ptr, "icc-color(", 10)) {
+ if (!feFlood->icc) feFlood->icc = new SVGICCColor();
+ if ( ! sp_svg_read_icc_color( cend_ptr, feFlood->icc ) ) {
+ delete feFlood->icc;
+ feFlood->icc = NULL;
+ }
+ dirty = true;
+ }
}
+ if (dirty)
+ object->parent->requestModified(SP_OBJECT_MODIFIED_FLAG);
break;
case SP_PROP_FLOOD_OPACITY:
if (value) {
@@ -208,6 +228,7 @@ static void sp_feFlood_build_renderer(SPFilterPrimitive *primitive, Inkscape::Fi
nr_flood->set_opacity(sp_flood->opacity);
nr_flood->set_color(sp_flood->color);
+ nr_flood->set_icc(sp_flood->icc);
}
diff --git a/src/filters/flood.h b/src/filters/flood.h
index 046c0e868..f386e2cd4 100644
--- a/src/filters/flood.h
+++ b/src/filters/flood.h
@@ -15,6 +15,7 @@
#include "sp-filter.h"
#include "flood-fns.h"
+#include "svg/svg-icc-color.h"
#include "display/nr-filter.h"
#include "display/nr-filter-flood.h"
@@ -25,6 +26,7 @@ class SPFeFloodClass;
struct SPFeFlood : public SPFilterPrimitive {
/** FLOOD ATTRIBUTES HERE */
guint32 color;
+ SVGICCColor *icc;
double opacity;
};