diff options
| author | Andrew Higginson <at.higginson@gmail.com> | 2011-12-27 21:04:47 +0000 |
|---|---|---|
| committer | Andrew <at.higginson@gmail.com> | 2011-12-27 21:04:47 +0000 |
| commit | 80960b623a99aae1402ab651b2974ef544ed3b03 (patch) | |
| tree | ba49d42c2789e9e11f805e2d5263e10f9fedeef8 /src/filter-chemistry.cpp | |
| parent | try to fix bug (diff) | |
| parent | GDL: Cherry-pick upstream patch 73852 (2011-03-23) - Add missing return value. (diff) | |
| download | inkscape-80960b623a99aae1402ab651b2974ef544ed3b03.tar.gz inkscape-80960b623a99aae1402ab651b2974ef544ed3b03.zip | |
merged with trunk so I can build again...
(bzr r10092.1.36)
Diffstat (limited to 'src/filter-chemistry.cpp')
| -rw-r--r-- | src/filter-chemistry.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/src/filter-chemistry.cpp b/src/filter-chemistry.cpp index b2c5f3020..b8c4cf901 100644 --- a/src/filter-chemistry.cpp +++ b/src/filter-chemistry.cpp @@ -22,11 +22,10 @@ #include "filter-enums.h" #include "filters/blend.h" +#include "filters/gaussian-blur.h" #include "sp-filter.h" #include "sp-filter-reference.h" -#include "sp-gaussian-blur.h" #include "svg/css-ostringstream.h" -#include "libnr/nr-matrix-fns.h" #include "xml/repr.h" @@ -90,7 +89,7 @@ SPFilter *new_filter(SPDocument *document) { g_return_val_if_fail(document != NULL, NULL); - SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document); + SPDefs *defs = document->getDefs(); Inkscape::XML::Document *xml_doc = document->getReprDoc(); @@ -98,6 +97,12 @@ SPFilter *new_filter(SPDocument *document) Inkscape::XML::Node *repr; repr = xml_doc->createElement("svg:filter"); + // Inkscape only supports sRGB. See note in sp-filter.cpp. + SPCSSAttr *css = sp_repr_css_attr_new(); + sp_repr_css_set_property(css, "color-interpolation-filters", "sRGB"); + sp_repr_css_change(repr, css, "style"); + sp_repr_css_attr_unref(css); + // Append the new filter node to defs defs->appendChild(repr); Inkscape::GC::release(repr); @@ -124,7 +129,7 @@ filter_add_primitive(SPFilter *filter, const Inkscape::Filters::FilterPrimitiveT // set default values switch(type) { case Inkscape::Filters::NR_FILTER_BLEND: - repr->setAttribute("blend", "normal"); + repr->setAttribute("mode", "normal"); break; case Inkscape::Filters::NR_FILTER_COLORMATRIX: break; @@ -187,7 +192,7 @@ new_filter_gaussian_blur (SPDocument *document, gdouble radius, double expansion { g_return_val_if_fail(document != NULL, NULL); - SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document); + SPDefs *defs = document->getDefs(); Inkscape::XML::Document *xml_doc = document->getReprDoc(); @@ -242,7 +247,7 @@ new_filter_blend_gaussian_blur (SPDocument *document, const char *blendmode, gdo { g_return_val_if_fail(document != NULL, NULL); - SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document); + SPDefs *defs = document->getDefs(); Inkscape::XML::Document *xml_doc = document->getReprDoc(); @@ -318,7 +323,7 @@ new_filter_blend_gaussian_blur (SPDocument *document, const char *blendmode, gdo SPFilter * new_filter_simple_from_item (SPDocument *document, SPItem *item, const char *mode, gdouble radius) { - Geom::OptRect const r = item->getBboxDesktop(SPItem::GEOMETRIC_BBOX); + Geom::OptRect const r = item->desktopGeometricBounds(); double width; double height; @@ -329,9 +334,9 @@ new_filter_simple_from_item (SPDocument *document, SPItem *item, const char *mod width = height = 0; } - Geom::Affine i2d (item->i2d_affine () ); + Geom::Affine i2dt (item->i2dt_affine () ); - return (new_filter_blend_gaussian_blur (document, mode, radius, i2d.descrim(), i2d.expansionX(), i2d.expansionY(), width, height)); + return (new_filter_blend_gaussian_blur (document, mode, radius, i2dt.descrim(), i2dt.expansionX(), i2dt.expansionY(), width, height)); } /** @@ -356,7 +361,7 @@ SPFilter *modify_filter_gaussian_blur_from_item(SPDocument *document, SPItem *it // If there are more users for this filter, duplicate it if (filter->hrefcount > count_filter_hrefs(item, filter)) { Inkscape::XML::Node *repr = item->style->getFilter()->getRepr()->duplicate(xml_doc); - SPDefs *defs = reinterpret_cast<SPDefs *>(SP_DOCUMENT_DEFS(document)); + SPDefs *defs = document->getDefs(); defs->appendChild(repr); filter = SP_FILTER( document->getObjectByRepr(repr) ); @@ -364,14 +369,14 @@ SPFilter *modify_filter_gaussian_blur_from_item(SPDocument *document, SPItem *it } // Determine the required standard deviation value - Geom::Affine i2d (item->i2d_affine ()); + Geom::Affine i2d (item->i2dt_affine ()); double expansion = i2d.descrim(); double stdDeviation = radius; if (expansion != 0) stdDeviation /= expansion; // Get the object size - Geom::OptRect const r = item->getBboxDesktop(SPItem::GEOMETRIC_BBOX); + Geom::OptRect const r = item->desktopGeometricBounds(); double width; double height; if (r) { |
