Code

Merge and cleanup of GSoC C++-ification project.
[inkscape.git] / src / widgets / gradient-toolbar.cpp
index a5543990838de8d2030758b5ff8ac6f29e80b836..e7596ead42e5c99c2057b43e263b24ff616a877f 100644 (file)
@@ -4,6 +4,7 @@
  * Authors:
  *   bulia byak <bulia@dr.com>
  *   Johan Engelen <j.b.c.engelen@ewi.utwente.nl>
+ *   Abhishek Sharma
  *
  * Copyright (C) 2007 Johan Engelen
  * Copyright (C) 2005 authors
@@ -42,6 +43,7 @@
 
 #include "toolbox.h"
 
+using Inkscape::DocumentUndo;
 
 //########################
 //##       Gradient     ##
@@ -73,18 +75,17 @@ static void gr_toggle_fillstroke (GtkWidget *button, gpointer data) {
     }
 }
 
-void
-gr_apply_gradient_to_item (SPItem *item, SPGradient *gr, SPGradientType new_type, guint new_fill, bool do_fill, bool do_stroke)
+void gr_apply_gradient_to_item( SPItem *item, SPGradient *gr, SPGradientType new_type, guint new_fill, bool do_fill, bool do_stroke )
 {
-    SPStyle *style = SP_OBJECT_STYLE (item);
+    SPStyle *style = item->style;
 
     if (do_fill) {
         if (style && (style->fill.isPaintserver()) &&
-            SP_IS_GRADIENT (SP_OBJECT_STYLE_FILL_SERVER (item))) {
-            SPObject *server = SP_OBJECT_STYLE_FILL_SERVER (item);
-            if (SP_IS_LINEARGRADIENT (server)) {
+            SP_IS_GRADIENT( item->style->getFillPaintServer() )) {
+            SPPaintServer *server = item->style->getFillPaintServer();
+            if ( SP_IS_LINEARGRADIENT(server) ) {
                 sp_item_set_gradient(item, gr, SP_GRADIENT_TYPE_LINEAR, true);
-            } else if (SP_IS_RADIALGRADIENT (server)) {
+            } else if ( SP_IS_RADIALGRADIENT(server) ) {
                 sp_item_set_gradient(item, gr, SP_GRADIENT_TYPE_RADIAL, true);
             }
         } else if (new_fill) {
@@ -94,11 +95,11 @@ gr_apply_gradient_to_item (SPItem *item, SPGradient *gr, SPGradientType new_type
 
     if (do_stroke) {
         if (style && (style->stroke.isPaintserver()) &&
-            SP_IS_GRADIENT (SP_OBJECT_STYLE_STROKE_SERVER (item))) {
-            SPObject *server = SP_OBJECT_STYLE_STROKE_SERVER (item);
-            if (SP_IS_LINEARGRADIENT (server)) {
+            SP_IS_GRADIENT( item->style->getStrokePaintServer() )) {
+            SPPaintServer *server = item->style->getStrokePaintServer();
+            if ( SP_IS_LINEARGRADIENT(server) ) {
                 sp_item_set_gradient(item, gr, SP_GRADIENT_TYPE_LINEAR, false);
-            } else if (SP_IS_RADIALGRADIENT (server)) {
+            } else if ( SP_IS_RADIALGRADIENT(server) ) {
                 sp_item_set_gradient(item, gr, SP_GRADIENT_TYPE_RADIAL, false);
             }
         } else if (!new_fill) {
@@ -151,8 +152,8 @@ gr_item_activate (GtkMenuItem *menuitem, gpointer data)
 
     gr_apply_gradient (selection, ev? ev->get_drag() : NULL, gr);
 
-    SPDocumentUndo::done (sp_desktop_document (desktop), SP_VERB_CONTEXT_GRADIENT,
-                      _("Assign gradient to object"));
+    DocumentUndo::done(sp_desktop_document (desktop), SP_VERB_CONTEXT_GRADIENT,
+                      _("Assign gradient to object"));
 }
 
 gchar *
@@ -172,7 +173,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient *
     GtkWidget *m = gtk_menu_new ();
 
     GSList *gl = NULL;
-    const GSList *gradients = document->get_resource_list ("gradient");
+    const GSList *gradients = document->getResourceList("gradient");
     for (const GSList *i = gradients; i != NULL; i = i->next) {
         SPGradient *grad = SP_GRADIENT(i->data);
         if ( grad->hasStops() && !grad->isSolid() ) {
@@ -238,7 +239,7 @@ GtkWidget *gr_vector_list(SPDesktop *desktop, bool selection_empty, SPGradient *
 
             GtkWidget *hb = gtk_hbox_new (FALSE, 4);
             GtkWidget *l = gtk_label_new ("");
-            gchar *label = gr_prepare_label (SP_OBJECT(gradient));
+            gchar *label = gr_prepare_label(gradient);
             gtk_label_set_markup (GTK_LABEL(l), label);
             g_free (label);
             gtk_misc_set_alignment (GTK_MISC (l), 1.0, 0.5);
@@ -310,11 +311,11 @@ void gr_read_selection( Inkscape::Selection *selection,
    // If no selected dragger, read desktop selection
    for (GSList const* i = selection->itemList(); i; i = i->next) {
         SPItem *item = SP_ITEM(i->data);
-        SPStyle *style = SP_OBJECT_STYLE (item);
+        SPStyle *style = item->style;
 
         if (style && (style->fill.isPaintserver())) {
-            SPObject *server = SP_OBJECT_STYLE_FILL_SERVER (item);
-            if (SP_IS_GRADIENT(server)) {
+            SPPaintServer *server = item->style->getFillPaintServer();
+            if ( SP_IS_GRADIENT(server) ) {
                 SPGradient *gradient = SP_GRADIENT(server)->getVector();
                 SPGradientSpread spread = SP_GRADIENT(server)->fetchSpread();
 
@@ -339,14 +340,13 @@ void gr_read_selection( Inkscape::Selection *selection,
             }
         }
         if (style && (style->stroke.isPaintserver())) {
-            SPObject *server = SP_OBJECT_STYLE_STROKE_SERVER (item);
-            if (SP_IS_GRADIENT(server)) {
+            SPPaintServer *server = item->style->getStrokePaintServer();
+            if ( SP_IS_GRADIENT(server) ) {
                 SPGradient *gradient = SP_GRADIENT(server)->getVector();
                 SPGradientSpread spread = SP_GRADIENT(server)->fetchSpread();
 
                 if (gradient && gradient->isSolid()) {
                     gradient = 0;
-
                 }
 
                 if (gradient && (gradient != gr_selected)) {