index d3a02852eed3b2f5ecbbf12d23bae703dd2bf2e2..b9ff1287b9bdbc4bc08497b413ec180fdf56f206 100644 (file)
--- a/src/filter-chemistry.cpp
+++ b/src/filter-chemistry.cpp
#include "document-private.h"
#include "desktop-style.h"
+#include "filter-chemistry.h"
+#include "filter-enums.h"
+
#include "sp-feblend.h"
#include "sp-filter.h"
+#include "sp-filter-reference.h"
#include "sp-gaussian-blur.h"
#include "svg/css-ostringstream.h"
SPStyle *style = SP_OBJECT_STYLE(o);
if (style
&& style->filter.set
- && style->filter.filter == filter)
+ && style->getFilter() == filter)
{
i ++;
}
}
SPFilterPrimitive *
-filter_add_primitive(SPFilter *filter, const gchar *type)
+filter_add_primitive(SPFilter *filter, const NR::FilterPrimitiveType type)
{
Inkscape::XML::Document *xml_doc = sp_document_repr_doc(filter->document);
//create filter primitive node
Inkscape::XML::Node *repr;
- repr = xml_doc->createElement(type);
- repr->setAttribute("inkscape:collect", "always");
+ repr = xml_doc->createElement(FPConverter.get_key(type).c_str());
+
+ // set default values
+ switch(type) {
+ case NR::NR_FILTER_BLEND:
+ repr->setAttribute("blend", "normal");
+ break;
+ case NR::NR_FILTER_COLORMATRIX:
+ break;
+ case NR::NR_FILTER_COMPONENTTRANSFER:
+ break;
+ case NR::NR_FILTER_COMPOSITE:
+ break;
+ case NR::NR_FILTER_CONVOLVEMATRIX:
+ repr->setAttribute("order", "3 3");
+ repr->setAttribute("kernelMatrix", "0 0 0 0 0 0 0 0 0");
+ break;
+ case NR::NR_FILTER_DIFFUSELIGHTING:
+ break;
+ case NR::NR_FILTER_DISPLACEMENTMAP:
+ break;
+ case NR::NR_FILTER_FLOOD:
+ break;
+ case NR::NR_FILTER_GAUSSIANBLUR:
+ repr->setAttribute("stdDeviation", "1");
+ break;
+ case NR::NR_FILTER_IMAGE:
+ break;
+ case NR::NR_FILTER_MERGE:
+ break;
+ case NR::NR_FILTER_MORPHOLOGY:
+ break;
+ case NR::NR_FILTER_OFFSET:
+ repr->setAttribute("dx", "0");
+ repr->setAttribute("dy", "0");
+ break;
+ case NR::NR_FILTER_SPECULARLIGHTING:
+ break;
+ case NR::NR_FILTER_TILE:
+ break;
+ case NR::NR_FILTER_TURBULENCE:
+ break;
+ default:
+ break;
+ }
//set primitive as child of filter node
filter->repr->appendChild(repr);
//return new_filter_gaussian_blur_from_item(document, item, radius);
}
- SPFilter *filter = SP_FILTER(item->style->filter.filter);
+ SPFilter *filter = SP_FILTER(item->style->getFilter());
Inkscape::XML::Document *xml_doc = sp_document_repr_doc(document);
// If there are more users for this filter, duplicate it
if (SP_OBJECT_HREFCOUNT(filter) > count_filter_hrefs(item, filter)) {
Inkscape::XML::Node *repr;
- repr = SP_OBJECT_REPR(item->style->filter.filter)->duplicate(xml_doc);
+ repr = SP_OBJECT_REPR(item->style->getFilter())->duplicate(xml_doc);
SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document);
SP_OBJECT_REPR(defs)->appendChild(repr);
}
// Set the filter effects area
- Inkscape::XML::Node *repr = SP_OBJECT_REPR(item->style->filter.filter);
+ Inkscape::XML::Node *repr = SP_OBJECT_REPR(item->style->getFilter());
set_filter_area(repr, radius, expansion, i2d.expansionX(),
i2d.expansionY(), width, height);
* be handled gracefully */
void remove_filter_gaussian_blur (SPObject *item)
{
- if (item->style && item->style->filter.set && item->style->filter.filter) {
+ if (item->style && item->style->filter.set && item->style->getFilter()) {
// Search for the first blur primitive and remove it. (if found)
- Inkscape::XML::Node *repr = SP_OBJECT_REPR(item->style->filter.filter);
+ Inkscape::XML::Node *repr = SP_OBJECT_REPR(item->style->getFilter());
Inkscape::XML::Node *primitive = repr->firstChild();
while (primitive) {
if (strcmp("svg:feGaussianBlur", primitive->name()) == 0) {