From 8867de5daf309e4cdd3fce177b408618490be4f3 Mon Sep 17 00:00:00 2001 From: Abhishek Sharma Public Date: Tue, 29 Jun 2010 23:35:42 +0530 Subject: This is the first c++ification commit from me. It handles sp-line, sp-polyline, sp-item and marks the onset of document c++ification as well. Users can check performace increase with [/usr/bin/time -v inkscape_binary_with_commandline_options]. (bzr r9546.1.1) --- src/sp-line.cpp | 106 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 54 insertions(+), 52 deletions(-) (limited to 'src/sp-line.cpp') diff --git a/src/sp-line.cpp b/src/sp-line.cpp index d0ce32397..878fceb67 100644 --- a/src/sp-line.cpp +++ b/src/sp-line.cpp @@ -25,24 +25,25 @@ #include "document.h" #include "inkscape.h" -static void sp_line_class_init (SPLineClass *klass); -static void sp_line_init (SPLine *line); +//static void sp_line_class_init (SPLineClass *klass); +//static void sp_line_init (SPLine *line); -static void sp_line_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); -static void sp_line_set (SPObject *object, unsigned int key, const gchar *value); -static Inkscape::XML::Node *sp_line_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); +//static void sp_line_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr); +//static void sp_line_set (SPObject *object, unsigned int key, const gchar *value); +//static Inkscape::XML::Node *sp_line_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags); -static gchar *sp_line_description (SPItem * item); -static Geom::Matrix sp_line_set_transform(SPItem *item, Geom::Matrix const &xform); +//static gchar *sp_line_description (SPItem * item); +//static Geom::Matrix sp_line_set_transform(SPItem *item, Geom::Matrix const &xform); -static void sp_line_update (SPObject *object, SPCtx *ctx, guint flags); -static void sp_line_set_shape (SPShape *shape); -static void sp_line_convert_to_guides(SPItem *item); +//static void sp_line_update (SPObject *object, SPCtx *ctx, guint flags); +//static void sp_line_set_shape (SPShape *shape); +//static void sp_line_convert_to_guides(SPItem *item); -static SPShapeClass *parent_class; +//static SPShapeClass *static_parent_class; +SPShapeClass * SPLineClass::static_parent_class=0; GType -sp_line_get_type (void) +SPLine::sp_line_get_type (void) { static GType line_type = 0; @@ -51,7 +52,7 @@ sp_line_get_type (void) sizeof (SPLineClass), NULL, /* base_init */ NULL, /* base_finalize */ - (GClassInitFunc) sp_line_class_init, + (GClassInitFunc) SPLineClass::sp_line_class_init, NULL, /* klass_finalize */ NULL, /* klass_data */ sizeof (SPLine), @@ -64,29 +65,30 @@ sp_line_get_type (void) return line_type; } -static void -sp_line_class_init (SPLineClass *klass) + +void +SPLineClass::sp_line_class_init (SPLineClass *klass) { - parent_class = (SPShapeClass *) g_type_class_ref (SP_TYPE_SHAPE); + SPLineClass::static_parent_class = (SPShapeClass *) g_type_class_ref (SP_TYPE_SHAPE); SPObjectClass *sp_object_class = (SPObjectClass *) klass; - sp_object_class->build = sp_line_build; - sp_object_class->set = sp_line_set; - sp_object_class->write = sp_line_write; + sp_object_class->build = SPLine::sp_line_build; + sp_object_class->set = SPLine::sp_line_set; + sp_object_class->write = SPLine::sp_line_write; SPItemClass *item_class = (SPItemClass *) klass; - item_class->description = sp_line_description; - item_class->set_transform = sp_line_set_transform; - item_class->convert_to_guides = sp_line_convert_to_guides; + item_class->description = SPLine::sp_line_description; + item_class->set_transform = SPLine::sp_line_set_transform; + item_class->convert_to_guides = SPLine::sp_line_convert_to_guides; - sp_object_class->update = sp_line_update; + sp_object_class->update = SPLine::sp_line_update; SPShapeClass *shape_class = (SPShapeClass *) klass; - shape_class->set_shape = sp_line_set_shape; + shape_class->set_shape = SPLine::sp_line_set_shape; } -static void -sp_line_init (SPLine * line) +void +SPLine::sp_line_init (SPLine * line) { line->x1.unset(); line->y1.unset(); @@ -95,11 +97,11 @@ sp_line_init (SPLine * line) } -static void -sp_line_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr) +void +SPLine::sp_line_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr) { - if (((SPObjectClass *) parent_class)->build) { - ((SPObjectClass *) parent_class)->build (object, document, repr); + if (((SPObjectClass *) SPLineClass::static_parent_class)->build) { + ((SPObjectClass *) SPLineClass::static_parent_class)->build (object, document, repr); } sp_object_read_attr (object, "x1"); @@ -108,8 +110,8 @@ sp_line_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * r sp_object_read_attr (object, "y2"); } -static void -sp_line_set (SPObject *object, unsigned int key, const gchar *value) +void +SPLine::sp_line_set (SPObject *object, unsigned int key, const gchar *value) { SPLine * line = SP_LINE (object); @@ -133,14 +135,14 @@ sp_line_set (SPObject *object, unsigned int key, const gchar *value) object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: - if (((SPObjectClass *) parent_class)->set) - ((SPObjectClass *) parent_class)->set (object, key, value); + if (((SPObjectClass *) SPLineClass::static_parent_class)->set) + ((SPObjectClass *) SPLineClass::static_parent_class)->set (object, key, value); break; } } -static void -sp_line_update (SPObject *object, SPCtx *ctx, guint flags) +void +SPLine::sp_line_update (SPObject *object, SPCtx *ctx, guint flags) { if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) { SPLine *line = SP_LINE (object); @@ -159,13 +161,13 @@ sp_line_update (SPObject *object, SPCtx *ctx, guint flags) sp_shape_set_shape ((SPShape *) object); } - if (((SPObjectClass *) parent_class)->update) - ((SPObjectClass *) parent_class)->update (object, ctx, flags); + if (((SPObjectClass *) SPLineClass::static_parent_class)->update) + ((SPObjectClass *) SPLineClass::static_parent_class)->update (object, ctx, flags); } -static Inkscape::XML::Node * -sp_line_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) +Inkscape::XML::Node * +SPLine::sp_line_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) { SPLine *line = SP_LINE (object); @@ -182,25 +184,25 @@ sp_line_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML sp_repr_set_svg_double(repr, "x2", line->x2.computed); sp_repr_set_svg_double(repr, "y2", line->y2.computed); - if (((SPObjectClass *) (parent_class))->write) - ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, flags); + if (((SPObjectClass *) (SPLineClass::static_parent_class))->write) + ((SPObjectClass *) (SPLineClass::static_parent_class))->write (object, xml_doc, repr, flags); return repr; } -static gchar * -sp_line_description(SPItem */*item*/) +gchar * +SPLine::sp_line_description(SPItem */*item*/) { return g_strdup(_("Line")); } -static void -sp_line_convert_to_guides(SPItem *item) +void +SPLine::sp_line_convert_to_guides(SPItem *item) { SPLine *line = SP_LINE(item); Geom::Point points[2]; - Geom::Matrix const i2d (sp_item_i2d_affine(item)); + Geom::Matrix const i2d (item->i2d_affine()); points[0] = Geom::Point(line->x1.computed, line->y1.computed)*i2d; points[1] = Geom::Point(line->x2.computed, line->y2.computed)*i2d; @@ -208,8 +210,8 @@ sp_line_convert_to_guides(SPItem *item) sp_guide_create(inkscape_active_desktop(), points[0], points[1]); } -static Geom::Matrix -sp_line_set_transform (SPItem *item, Geom::Matrix const &xform) +Geom::Matrix +SPLine::sp_line_set_transform (SPItem *item, Geom::Matrix const &xform) { SPLine *line = SP_LINE (item); Geom::Point points[2]; @@ -225,15 +227,15 @@ sp_line_set_transform (SPItem *item, Geom::Matrix const &xform) line->x2.computed = points[1][Geom::X]; line->y2.computed = points[1][Geom::Y]; - sp_item_adjust_stroke(item, xform.descrim()); + item->adjust_stroke(xform.descrim()); SP_OBJECT (item)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG); return Geom::identity(); } -static void -sp_line_set_shape (SPShape *shape) +void +SPLine::sp_line_set_shape (SPShape *shape) { SPLine *line = SP_LINE (shape); -- cgit v1.2.3 From 6cc35b45eab6422a6b6f67d621aa259a0a73786f Mon Sep 17 00:00:00 2001 From: Abhishek Sharma Public Date: Mon, 12 Jul 2010 22:06:46 +0530 Subject: SPObject c++ification finalized along with the beginning of XML Privatisation tweaks (bzr r9546.1.6) --- src/sp-line.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/sp-line.cpp') diff --git a/src/sp-line.cpp b/src/sp-line.cpp index 878fceb67..6d3d2aea7 100644 --- a/src/sp-line.cpp +++ b/src/sp-line.cpp @@ -104,10 +104,10 @@ SPLine::sp_line_build (SPObject * object, SPDocument * document, Inkscape::XML:: ((SPObjectClass *) SPLineClass::static_parent_class)->build (object, document, repr); } - sp_object_read_attr (object, "x1"); - sp_object_read_attr (object, "y1"); - sp_object_read_attr (object, "x2"); - sp_object_read_attr (object, "y2"); + object->readAttr( "x1"); + object->readAttr( "y1"); + object->readAttr( "x2"); + object->readAttr( "y2"); } void -- cgit v1.2.3 From cde0571b44ec5b108907bda85971c49f3ceb1de8 Mon Sep 17 00:00:00 2001 From: Abhishek Sharma Public Date: Wed, 14 Jul 2010 23:40:35 +0530 Subject: SPShape c++ified to the extent it was possible and more changes done for XML privatisation. Major changes yet to come. (bzr r9546.1.7) --- src/sp-line.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/sp-line.cpp') diff --git a/src/sp-line.cpp b/src/sp-line.cpp index 6d3d2aea7..b29e51b5a 100644 --- a/src/sp-line.cpp +++ b/src/sp-line.cpp @@ -158,7 +158,7 @@ SPLine::sp_line_update (SPObject *object, SPCtx *ctx, guint flags) line->y1.update(em, ex, h); line->y2.update(em, ex, h); - sp_shape_set_shape ((SPShape *) object); + ((SPShape *) object)->setShape (); } if (((SPObjectClass *) SPLineClass::static_parent_class)->update) @@ -244,7 +244,7 @@ SPLine::sp_line_set_shape (SPShape *shape) c->moveto(line->x1.computed, line->y1.computed); c->lineto(line->x2.computed, line->y2.computed); - sp_shape_set_curve_insync (shape, c, TRUE); // *_insync does not call update, avoiding infinite recursion when set_shape is called by update + shape->setCurveInsync (c, TRUE); // *_insync does not call update, avoiding infinite recursion when set_shape is called by update c->unref(); } -- cgit v1.2.3 From 7396564ea83c67c0e40a8b0aa453a13ddf21e0e0 Mon Sep 17 00:00:00 2001 From: Abhishek Sharma public Date: Sat, 24 Jul 2010 20:58:27 +0530 Subject: Yet mor in c++ification (bzr r9546.1.11) --- src/sp-line.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sp-line.cpp') diff --git a/src/sp-line.cpp b/src/sp-line.cpp index b29e51b5a..b71616c5b 100644 --- a/src/sp-line.cpp +++ b/src/sp-line.cpp @@ -207,7 +207,7 @@ SPLine::sp_line_convert_to_guides(SPItem *item) points[0] = Geom::Point(line->x1.computed, line->y1.computed)*i2d; points[1] = Geom::Point(line->x2.computed, line->y2.computed)*i2d; - sp_guide_create(inkscape_active_desktop(), points[0], points[1]); + SPGuide::createSPGuide(inkscape_active_desktop(), points[0], points[1]); } Geom::Matrix -- cgit v1.2.3