Code

Merge and cleanup of GSoC C++-ification project.
[inkscape.git] / src / filter-chemistry.cpp
index 9e0ee8383767f47ff5bf9346a70ada2a6190f81e..d6900b1f675ae8f28cffe0b598d8b0a42598cbcc 100644 (file)
@@ -1,5 +1,3 @@
-#define __SP_FILTER_CHEMISTRY_C__
-
 /*
  * Various utility methods for filters
  *
@@ -7,6 +5,8 @@
  *   Hugo Rodrigues
  *   bulia byak
  *   Niko Kiirala
+ *   Jon A. Cruz <jon@joncruz.org>
+ *   Abhishek Sharma
  *
  * Copyright (C) 2006-2008 authors
  *
@@ -34,8 +34,7 @@
  * Count how many times the filter is used by the styles of o and its
  * descendants
  */
-static guint
-count_filter_hrefs(SPObject *o, SPFilter *filter)
+static guint count_filter_hrefs(SPObject *o, SPFilter *filter)
 {
     if (!o)
         return 1;
@@ -50,8 +49,7 @@ count_filter_hrefs(SPObject *o, SPFilter *filter)
         i ++;
     }
 
-    for (SPObject *child = o->first_child();
-         child != NULL; child = SP_OBJECT_NEXT(child)) {
+    for ( SPObject *child = o->firstChild(); child; child = child->getNext() ) {
         i += count_filter_hrefs(child, filter);
     }
 
@@ -94,15 +92,14 @@ SPFilter *new_filter(SPDocument *document)
 
     SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document);
 
-    Inkscape::XML::Document *xml_doc = sp_document_repr_doc(document);
+    Inkscape::XML::Document *xml_doc = document->getReprDoc();
 
     // create a new filter
     Inkscape::XML::Node *repr;
     repr = xml_doc->createElement("svg:filter");
 
     // Append the new filter node to defs
-    //SP_OBJECT_REPR(defs)->appendChild(repr);
-       defs->appendChild(repr);
+    defs->appendChild(repr);
     Inkscape::GC::release(repr);
 
     // get corresponding object
@@ -118,7 +115,7 @@ SPFilter *new_filter(SPDocument *document)
 SPFilterPrimitive *
 filter_add_primitive(SPFilter *filter, const Inkscape::Filters::FilterPrimitiveType type)
 {
-    Inkscape::XML::Document *xml_doc = sp_document_repr_doc(filter->document);
+    Inkscape::XML::Document *xml_doc = filter->document->getReprDoc();
 
     //create filter primitive node
     Inkscape::XML::Node *repr;
@@ -169,9 +166,8 @@ filter_add_primitive(SPFilter *filter, const Inkscape::Filters::FilterPrimitiveT
     }
 
     //set primitive as child of filter node
-       // XML tree being used directly while/where it shouldn't be...
-    //filter->getRepr()->appendChild(repr);
-       filter->appendChild(repr);
+    // XML tree being used directly while/where it shouldn't be...
+    filter->appendChild(repr);
     Inkscape::GC::release(repr);
     
     // get corresponding object
@@ -193,7 +189,7 @@ new_filter_gaussian_blur (SPDocument *document, gdouble radius, double expansion
 
     SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document);
 
-    Inkscape::XML::Document *xml_doc = sp_document_repr_doc(document);
+    Inkscape::XML::Document *xml_doc = document->getReprDoc();
 
     // create a new filter
     Inkscape::XML::Node *repr;
@@ -220,8 +216,7 @@ new_filter_gaussian_blur (SPDocument *document, gdouble radius, double expansion
     Inkscape::GC::release(b_repr);
     
     // Append the new filter node to defs
-    //SP_OBJECT_REPR(defs)->appendChild(repr);
-       defs->appendChild(repr);
+    defs->appendChild(repr);
     Inkscape::GC::release(repr);
 
     // get corresponding object
@@ -249,7 +244,7 @@ new_filter_blend_gaussian_blur (SPDocument *document, const char *blendmode, gdo
 
     SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document);
 
-    Inkscape::XML::Document *xml_doc = sp_document_repr_doc(document);
+    Inkscape::XML::Document *xml_doc = document->getReprDoc();
 
     // create a new filter
     Inkscape::XML::Node *repr;
@@ -257,8 +252,7 @@ new_filter_blend_gaussian_blur (SPDocument *document, const char *blendmode, gdo
     repr->setAttribute("inkscape:collect", "always");
 
     // Append the new filter node to defs
-    //SP_OBJECT_REPR(defs)->appendChild(repr);
-       defs->appendChild(repr);
+    defs->appendChild(repr);
     Inkscape::GC::release(repr);
  
     // get corresponding object
@@ -349,24 +343,21 @@ new_filter_simple_from_item (SPDocument *document, SPItem *item, const char *mod
  * duplicated, so that other elements referring that filter are not modified.
  */
 /* TODO: this should be made more generic, not just for blurs */
-SPFilter *
-modify_filter_gaussian_blur_from_item(SPDocument *document, SPItem *item,
-                                      gdouble radius)
+SPFilter *modify_filter_gaussian_blur_from_item(SPDocument *document, SPItem *item,
+                                                gdouble radius)
 {
     if (!item->style || !item->style->filter.set) {
         return new_filter_simple_from_item(document, item, "normal", radius);
     }
 
     SPFilter *filter = SP_FILTER(item->style->getFilter());
-    Inkscape::XML::Document *xml_doc = sp_document_repr_doc(document);
+    Inkscape::XML::Document *xml_doc = document->getReprDoc();
 
     // 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->getFilter())->duplicate(xml_doc);
+    if (filter->hrefcount > count_filter_hrefs(item, filter)) {
+        Inkscape::XML::Node *repr = SP_OBJECT_REPR(item->style->getFilter())->duplicate(xml_doc);
         SPDefs *defs = (SPDefs *) SP_DOCUMENT_DEFS(document);
-        //SP_OBJECT_REPR(defs)->appendChild(repr);
-               defs->appendChild(repr);
+        defs->appendChild(repr);
 
         filter = SP_FILTER( document->getObjectByRepr(repr) );
         Inkscape::GC::release(repr);
@@ -498,4 +489,4 @@ double get_single_gaussian_blur_radius(SPFilter *filter)
   fill-column:99
   End:
 */
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :