diff --git a/src/sp-star.cpp b/src/sp-star.cpp
index 767175e878efeaa34feeff1d99969dafbc64ddd3..96bc9180a9f9ff197411ee0b3f939470ae48ea97 100644 (file)
--- a/src/sp-star.cpp
+++ b/src/sp-star.cpp
* Released under GNU GPL, read the file 'COPYING' for more information
*/
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+#include <cstring>
+#include <string>
#include <glibmm/i18n.h>
#include "svg/svg.h"
static void sp_star_init (SPStar *star);
static void sp_star_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * repr);
-static Inkscape::XML::Node *sp_star_write (SPObject *object, Inkscape::XML::Node *repr, guint flags);
+static Inkscape::XML::Node *sp_star_write (SPObject *object, Inkscape::XML::Document *doc, Inkscape::XML::Node *repr, guint flags);
static void sp_star_set (SPObject *object, unsigned int key, const gchar *value);
static void sp_star_update (SPObject *object, SPCtx *ctx, guint flags);
static void sp_star_snappoints(SPItem const *item, SnapPointsIter p);
static void sp_star_set_shape (SPShape *shape);
-static void sp_star_update_patheffect (SPShape *shape, bool write);
+static void sp_star_update_patheffect (SPLPEItem *lpeitem, bool write);
static SPShapeClass *parent_class;
GObjectClass * gobject_class;
SPObjectClass * sp_object_class;
SPItemClass * item_class;
- SPPathClass * path_class;
+ SPLPEItemClass * lpe_item_class;
SPShapeClass * shape_class;
gobject_class = (GObjectClass *) klass;
sp_object_class = (SPObjectClass *) klass;
item_class = (SPItemClass *) klass;
- path_class = (SPPathClass *) klass;
+ lpe_item_class = (SPLPEItemClass *) klass;
shape_class = (SPShapeClass *) klass;
parent_class = (SPShapeClass *)g_type_class_ref (SP_TYPE_SHAPE);
item_class->description = sp_star_description;
item_class->snappoints = sp_star_snappoints;
+ lpe_item_class->update_patheffect = sp_star_update_patheffect;
+
shape_class->set_shape = sp_star_set_shape;
- shape_class->update_patheffect = sp_star_update_patheffect;
}
static void
@@ -124,12 +129,11 @@ sp_star_build (SPObject * object, SPDocument * document, Inkscape::XML::Node * r
}
static Inkscape::XML::Node *
-sp_star_write (SPObject *object, Inkscape::XML::Node *repr, guint flags)
+sp_star_write (SPObject *object, Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags)
{
SPStar *star = SP_STAR (object);
if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
- Inkscape::XML::Document *xml_doc = sp_document_repr_doc(SP_OBJECT_DOCUMENT(object));
repr = xml_doc->createElement("svg:path");
}
sp_repr_set_svg_double(repr, "inkscape:randomized", star->randomized);
}
- sp_star_set_shape ((SPShape *) star);
- char *d = sp_svg_write_path (SP_CURVE_BPATH(((SPShape *) star)->curve));
- repr->setAttribute("d", d);
- g_free (d);
+ sp_star_set_shape ((SPShape *) star);
+ char *d = sp_svg_write_path (((SPShape *) star)->curve->get_pathvector());
+ repr->setAttribute("d", d);
+ g_free (d);
if (((SPObjectClass *) (parent_class))->write)
- ((SPObjectClass *) (parent_class))->write (object, repr, flags);
+ ((SPObjectClass *) (parent_class))->write (object, xml_doc, repr, flags);
return repr;
}
}
static void
-sp_star_update_patheffect(SPShape *shape, bool write)
+sp_star_update_patheffect(SPLPEItem *lpeitem, bool write)
{
+ SPShape *shape = (SPShape *) lpeitem;
sp_star_set_shape(shape);
if (write) {
Inkscape::XML::Node *repr = SP_OBJECT_REPR(shape);
if ( shape->curve != NULL ) {
- NArtBpath *abp = sp_curve_first_bpath(shape->curve);
- if (abp) {
- gchar *str = sp_svg_write_path(abp);
- repr->setAttribute("d", str);
- g_free(str);
- } else {
- repr->setAttribute("d", "");
- }
+ gchar *str = sp_svg_write_path(shape->curve->get_pathvector());
+ repr->setAttribute("d", str);
+ g_free(str);
} else {
repr->setAttribute("d", NULL);
}
{
SPStar *star = SP_STAR (shape);
- SPCurve *c = sp_curve_new ();
+ SPCurve *c = new SPCurve ();
gint sides = star->sides;
bool not_rounded = (fabs (star->rounded) < 1e-4);
// other places that call that function (e.g. the knotholder) need the exact point
// draw 1st segment
- sp_curve_moveto (c, sp_star_get_xy (star, SP_STAR_POINT_KNOT1, 0, true));
+ c->moveto(sp_star_get_xy (star, SP_STAR_POINT_KNOT1, 0, true));
if (star->flatsided == false) {
if (not_rounded) {
- sp_curve_lineto (c, sp_star_get_xy (star, SP_STAR_POINT_KNOT2, 0, true));
+ c->lineto(sp_star_get_xy (star, SP_STAR_POINT_KNOT2, 0, true));
} else {
- sp_curve_curveto (c,
- sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, 0, NEXT),
+ c->curveto(sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, 0, NEXT),
sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT2, 0, PREV),
sp_star_get_xy (star, SP_STAR_POINT_KNOT2, 0, true));
}
// draw all middle segments
for (gint i = 1; i < sides; i++) {
if (not_rounded) {
- sp_curve_lineto (c, sp_star_get_xy (star, SP_STAR_POINT_KNOT1, i, true));
+ c->lineto(sp_star_get_xy (star, SP_STAR_POINT_KNOT1, i, true));
} else {
if (star->flatsided == false) {
- sp_curve_curveto (c,
- sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT2, i - 1, NEXT),
+ c->curveto(sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT2, i - 1, NEXT),
sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, i, PREV),
sp_star_get_xy (star, SP_STAR_POINT_KNOT1, i, true));
} else {
- sp_curve_curveto (c,
- sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, i - 1, NEXT),
+ c->curveto(sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, i - 1, NEXT),
sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, i, PREV),
sp_star_get_xy (star, SP_STAR_POINT_KNOT1, i, true));
}
if (star->flatsided == false) {
if (not_rounded) {
- sp_curve_lineto (c, sp_star_get_xy (star, SP_STAR_POINT_KNOT2, i, true));
+ c->lineto(sp_star_get_xy (star, SP_STAR_POINT_KNOT2, i, true));
} else {
- sp_curve_curveto (c,
- sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, i, NEXT),
+ c->curveto(sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, i, NEXT),
sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT2, i, PREV),
sp_star_get_xy (star, SP_STAR_POINT_KNOT2, i, true));
}
// draw last segment
if (not_rounded) {
- sp_curve_lineto (c, sp_star_get_xy (star, SP_STAR_POINT_KNOT1, 0, true));
+ c->lineto(sp_star_get_xy (star, SP_STAR_POINT_KNOT1, 0, true));
} else {
if (star->flatsided == false) {
- sp_curve_curveto (c,
- sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT2, sides - 1, NEXT),
+ c->curveto(sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT2, sides - 1, NEXT),
sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, 0, PREV),
sp_star_get_xy (star, SP_STAR_POINT_KNOT1, 0, true));
} else {
- sp_curve_curveto (c,
- sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, sides - 1, NEXT),
+ c->curveto(sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, sides - 1, NEXT),
sp_star_get_curvepoint (star, SP_STAR_POINT_KNOT1, 0, PREV),
sp_star_get_xy (star, SP_STAR_POINT_KNOT1, 0, true));
}
}
- sp_curve_closepath (c);
- sp_shape_perform_path_effect(c, SP_SHAPE (star));
+ c->closepath();
+ sp_lpe_item_perform_path_effect(SP_LPE_ITEM (star), c);
sp_shape_set_curve_insync (SP_SHAPE (star), c, TRUE);
- sp_curve_unref (c);
+ c->unref();
}
void