summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2014-06-29 15:10:43 +0000
committertavmjong-free <tavmjong@free.fr>2014-06-29 15:10:43 +0000
commit74ac381c0cfbee634a7677aba3db6b2a0fd5f13f (patch)
tree1581e62537f4a17402052f251900933fbad6ea3e /src
parentRemove the incorrect fix for the bug 1241902 (diff)
downloadinkscape-74ac381c0cfbee634a7677aba3db6b2a0fd5f13f.tar.gz
inkscape-74ac381c0cfbee634a7677aba3db6b2a0fd5f13f.zip
Enable rendering of new filter blend modes (but don't add them to GUI).
(bzr r13341.1.70)
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-filter-blend.cpp9
-rw-r--r--src/display/nr-filter-blend.h2
-rw-r--r--src/filter-enums.cpp8
-rw-r--r--src/filters/blend.cpp8
-rw-r--r--src/ui/widget/filter-effect-chooser.cpp13
5 files changed, 12 insertions, 28 deletions
diff --git a/src/display/nr-filter-blend.cpp b/src/display/nr-filter-blend.cpp
index 099816bce..25aea6f13 100644
--- a/src/display/nr-filter-blend.cpp
+++ b/src/display/nr-filter-blend.cpp
@@ -83,8 +83,7 @@ void FilterBlend::render_cairo(FilterSlot &slot)
case BLEND_LIGHTEN:
cairo_set_operator(out_ct, CAIRO_OPERATOR_LIGHTEN);
break;
-#ifdef WITH_CSSBLEND
- // NEW
+ // New in CSS Compositing and Blending Level 1
case BLEND_OVERLAY:
cairo_set_operator(out_ct, CAIRO_OPERATOR_OVERLAY);
break;
@@ -118,7 +117,6 @@ void FilterBlend::render_cairo(FilterSlot &slot)
case BLEND_LUMINOSITY:
cairo_set_operator(out_ct, CAIRO_OPERATOR_HSL_LUMINOSITY);
break;
-#endif
case BLEND_NORMAL:
default:
@@ -167,15 +165,12 @@ void FilterBlend::set_input(int input, int slot) {
void FilterBlend::set_mode(FilterBlendMode mode) {
if (mode == BLEND_NORMAL || mode == BLEND_MULTIPLY ||
mode == BLEND_SCREEN || mode == BLEND_DARKEN ||
- mode == BLEND_LIGHTEN
-#ifdef WITH_CSSBLEND
- || mode == BLEND_OVERLAY ||
+ mode == BLEND_LIGHTEN || mode == BLEND_OVERLAY ||
mode == BLEND_COLORDODGE || mode == BLEND_COLORBURN ||
mode == BLEND_HARDLIGHT || mode == BLEND_SOFTLIGHT ||
mode == BLEND_DIFFERENCE || mode == BLEND_EXCLUSION ||
mode == BLEND_HUE || mode == BLEND_SATURATION ||
mode == BLEND_COLOR || mode == BLEND_LUMINOSITY
-#endif
)
{
_blend_mode = mode;
diff --git a/src/display/nr-filter-blend.h b/src/display/nr-filter-blend.h
index 0a2927d87..c0504993b 100644
--- a/src/display/nr-filter-blend.h
+++ b/src/display/nr-filter-blend.h
@@ -28,7 +28,6 @@ enum FilterBlendMode {
BLEND_SCREEN,
BLEND_DARKEN,
BLEND_LIGHTEN,
-#ifdef WITH_CSSBLEND
// New in CSS Compositing and Blending Level 1
BLEND_OVERLAY,
BLEND_COLORDODGE,
@@ -41,7 +40,6 @@ enum FilterBlendMode {
BLEND_SATURATION,
BLEND_COLOR,
BLEND_LUMINOSITY,
-#endif
BLEND_ENDMODE,
};
diff --git a/src/filter-enums.cpp b/src/filter-enums.cpp
index 7ee57f7fa..09a1a7614 100644
--- a/src/filter-enums.cpp
+++ b/src/filter-enums.cpp
@@ -53,7 +53,6 @@ const EnumData<Inkscape::Filters::FilterBlendMode> BlendModeData[Inkscape::Filte
{Inkscape::Filters::BLEND_SCREEN, _("Screen"), "screen"},
{Inkscape::Filters::BLEND_DARKEN, _("Darken"), "darken"},
{Inkscape::Filters::BLEND_LIGHTEN, _("Lighten"), "lighten"},
-#ifdef WITH_CSSBLEND
// New in Compositing and Blending Level 1
{Inkscape::Filters::BLEND_OVERLAY, _("Overlay"), "overlay"},
{Inkscape::Filters::BLEND_COLORDODGE, _("Color Dodge"), "color-dodge"},
@@ -66,10 +65,13 @@ const EnumData<Inkscape::Filters::FilterBlendMode> BlendModeData[Inkscape::Filte
{Inkscape::Filters::BLEND_SATURATION, _("Saturation"), "saturation"},
{Inkscape::Filters::BLEND_COLOR, _("Color"), "color"},
{Inkscape::Filters::BLEND_LUMINOSITY, _("Luminosity"), "luminosity"}
-#endif
};
+#ifdef WITH_CSSBLEND
const EnumDataConverter<Inkscape::Filters::FilterBlendMode> BlendModeConverter(BlendModeData, Inkscape::Filters::BLEND_ENDMODE);
-
+#else
+// Disable new blend modes in GUI until widely implemented.
+const EnumDataConverter<Inkscape::Filters::FilterBlendMode> BlendModeConverter(BlendModeData, Inkscape::Filters::BLEND_OVERLAY);
+#endif
const EnumData<Inkscape::Filters::FilterColorMatrixType> ColorMatrixTypeData[Inkscape::Filters::COLORMATRIX_ENDTYPE] = {
{Inkscape::Filters::COLORMATRIX_MATRIX, _("Matrix"), "matrix"},
diff --git a/src/filters/blend.cpp b/src/filters/blend.cpp
index 5c78f4f9f..fd5a9871e 100644
--- a/src/filters/blend.cpp
+++ b/src/filters/blend.cpp
@@ -96,23 +96,18 @@ static Inkscape::Filters::FilterBlendMode sp_feBlend_readmode(gchar const *value
case 's':
if (strncmp(value, "screen", 6) == 0)
return Inkscape::Filters::BLEND_SCREEN;
-#ifdef WITH_CSSBLEND
if (strncmp(value, "saturation", 6) == 0)
return Inkscape::Filters::BLEND_SATURATION;
-#endif
break;
case 'd':
if (strncmp(value, "darken", 6) == 0)
return Inkscape::Filters::BLEND_DARKEN;
-#ifdef WITH_CSSBLEND
if (strncmp(value, "difference", 10) == 0)
return Inkscape::Filters::BLEND_DIFFERENCE;
-#endif
break;
case 'l':
if (strncmp(value, "lighten", 7) == 0)
return Inkscape::Filters::BLEND_LIGHTEN;
-#ifdef WITH_CSSBLEND
if (strncmp(value, "luminosity", 10) == 0)
return Inkscape::Filters::BLEND_LUMINOSITY;
break;
@@ -137,7 +132,6 @@ static Inkscape::Filters::FilterBlendMode sp_feBlend_readmode(gchar const *value
case 'e':
if (strncmp(value, "exclusion", 10) == 0)
return Inkscape::Filters::BLEND_EXCLUSION;
-#endif
default:
std::cout << "Inkscape::Filters::FilterBlendMode: Unimplemented mode: " << value << std::endl;
// do nothing by default
@@ -244,7 +238,6 @@ Inkscape::XML::Node* SPFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XM
mode = "darken"; break;
case Inkscape::Filters::BLEND_LIGHTEN:
mode = "lighten"; break;
-#ifdef WITH_CSSBLEND
// New
case Inkscape::Filters::BLEND_OVERLAY:
mode = "overlay"; break;
@@ -268,7 +261,6 @@ Inkscape::XML::Node* SPFeBlend::write(Inkscape::XML::Document *doc, Inkscape::XM
mode = "color"; break;
case Inkscape::Filters::BLEND_LUMINOSITY:
mode = "luminosity"; break;
-#endif
default:
mode = 0;
}
diff --git a/src/ui/widget/filter-effect-chooser.cpp b/src/ui/widget/filter-effect-chooser.cpp
index 65706a9dc..78988a041 100644
--- a/src/ui/widget/filter-effect-chooser.cpp
+++ b/src/ui/widget/filter-effect-chooser.cpp
@@ -56,15 +56,12 @@ const Glib::ustring SimpleFilterModifier::get_blend_mode()
if (!(_flags & BLEND)) {
return "normal";
}
- if (_blend.get_active_row_number() == 5) {
+
+ const Util::EnumData<Inkscape::Filters::FilterBlendMode> *d = _blend.get_active_data();
+ if (d) {
+ return _blend.get_active_data()->key;
+ } else
return "normal";
- } else {
- const Util::EnumData<Inkscape::Filters::FilterBlendMode> *d = _blend.get_active_data();
- if (d) {
- return _blend.get_active_data()->key;
- } else
- return "normal";
- }
}
void SimpleFilterModifier::set_blend_mode(const int val)