summaryrefslogtreecommitdiffstats
path: root/src/sp-ellipse.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp-ellipse.cpp')
-rw-r--r--src/sp-ellipse.cpp198
1 files changed, 76 insertions, 122 deletions
diff --git a/src/sp-ellipse.cpp b/src/sp-ellipse.cpp
index 0e84a0360..23a7c91b0 100644
--- a/src/sp-ellipse.cpp
+++ b/src/sp-ellipse.cpp
@@ -88,38 +88,28 @@ static double sp_round(double x, double y)
static gboolean sp_arc_set_elliptical_path_attribute(SPArc *arc, Inkscape::XML::Node *repr);
+SPGenericEllipse::SPGenericEllipse() : SPShape(), CShape(this) {
+ delete this->cshape;
+ this->cshape = this;
+ this->clpeitem = this;
+ this->citem = this;
+ this->cobject = this;
-CGenericEllipse::CGenericEllipse(SPGenericEllipse* genericEllipse) : CShape(genericEllipse) {
- this->spgenericEllipse = genericEllipse;
-}
+ this->cx.unset();
+ this->cy.unset();
+ this->rx.unset();
+ this->ry.unset();
-CGenericEllipse::~CGenericEllipse() {
+ this->start = 0.0;
+ this->end = SP_2PI;
+ this->closed = TRUE;
}
-SPGenericEllipse::SPGenericEllipse() : SPShape() {
- SPGenericEllipse* ellipse = this;
-
- ellipse->cgenericEllipse = new CGenericEllipse(ellipse);
- ellipse->typeHierarchy.insert(typeid(SPGenericEllipse));
-
- delete ellipse->cshape;
- ellipse->cshape = ellipse->cgenericEllipse;
- ellipse->clpeitem = ellipse->cgenericEllipse;
- ellipse->citem = ellipse->cgenericEllipse;
- ellipse->cobject = ellipse->cgenericEllipse;
-
- ellipse->cx.unset();
- ellipse->cy.unset();
- ellipse->rx.unset();
- ellipse->ry.unset();
-
- ellipse->start = 0.0;
- ellipse->end = SP_2PI;
- ellipse->closed = TRUE;
+SPGenericEllipse::~SPGenericEllipse() {
}
-void CGenericEllipse::update(SPCtx *ctx, guint flags) {
- SPGenericEllipse* object = this->spgenericEllipse;
+void SPGenericEllipse::update(SPCtx *ctx, guint flags) {
+ SPGenericEllipse* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
SPGenericEllipse *ellipse = (SPGenericEllipse *) object;
@@ -141,8 +131,8 @@ void CGenericEllipse::update(SPCtx *ctx, guint flags) {
CShape::update(ctx, flags);
}
-void CGenericEllipse::update_patheffect(bool write) {
- SPShape *shape = this->spgenericEllipse;
+void SPGenericEllipse::update_patheffect(bool write) {
+ SPShape *shape = this;
this->set_shape();
if (write) {
@@ -161,8 +151,8 @@ void CGenericEllipse::update_patheffect(bool write) {
/* fixme: Think (Lauris) */
/* Can't we use arcto in this method? */
-void CGenericEllipse::set_shape() {
- SPGenericEllipse* shape = this->spgenericEllipse;
+void SPGenericEllipse::set_shape() {
+ SPGenericEllipse* shape = this;
if (sp_lpe_item_has_broken_path_effect(SP_LPE_ITEM(shape))) {
g_warning ("The ellipse shape has unknown LPE on it! Convert to path to make it editable preserving the appearance; editing it as ellipse will remove the bad LPE");
@@ -251,8 +241,8 @@ void CGenericEllipse::set_shape() {
curve->unref();
}
-void CGenericEllipse::snappoints(std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) {
- SPGenericEllipse* item = this->spgenericEllipse;
+void SPGenericEllipse::snappoints(std::vector<Inkscape::SnapCandidatePoint> &p, Inkscape::SnapPreferences const *snapprefs) {
+ SPGenericEllipse* item = this;
g_assert(item != NULL);
g_assert(SP_IS_GENERICELLIPSE(item));
@@ -334,8 +324,8 @@ sp_genericellipse_normalize(SPGenericEllipse *ellipse)
/* Now we keep: 0 <= start < end <= 2*PI */
}
-Inkscape::XML::Node* CGenericEllipse::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
- SPGenericEllipse *ellipse = this->spgenericEllipse;
+Inkscape::XML::Node* SPGenericEllipse::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
+ SPGenericEllipse *ellipse = this;
SPGenericEllipse* object = ellipse;
if (flags & SP_OBJECT_WRITE_EXT) {
@@ -360,32 +350,20 @@ Inkscape::XML::Node* CGenericEllipse::write(Inkscape::XML::Document *xml_doc, In
}
/* SVG <ellipse> element */
-
-CEllipse::CEllipse(SPEllipse* ellipse) : CGenericEllipse(ellipse) {
- this->spellipse = ellipse;
-}
-
-CEllipse::~CEllipse() {
-}
-
SPEllipse::SPEllipse() : SPGenericEllipse() {
- SPEllipse* ellipse = this;
-
- ellipse->cellipse = new CEllipse(ellipse);
- ellipse->typeHierarchy.insert(typeid(SPEllipse));
+ this->cshape = this;
+ this->clpeitem = this;
+ this->citem = this;
+ this->cobject = this;
+}
- delete ellipse->cgenericEllipse;
- ellipse->cgenericEllipse = ellipse->cellipse;
- ellipse->cshape = ellipse->cellipse;
- ellipse->clpeitem = ellipse->cellipse;
- ellipse->citem = ellipse->cellipse;
- ellipse->cobject = ellipse->cellipse;
+SPEllipse::~SPEllipse() {
}
-void CEllipse::build(SPDocument *document, Inkscape::XML::Node *repr) {
- CGenericEllipse::build(document, repr);
+void SPEllipse::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPGenericEllipse::build(document, repr);
- SPEllipse* object = this->spellipse;
+ SPEllipse* object = this;
object->readAttr( "cx" );
object->readAttr( "cy" );
object->readAttr( "rx" );
@@ -393,8 +371,8 @@ void CEllipse::build(SPDocument *document, Inkscape::XML::Node *repr) {
}
-Inkscape::XML::Node* CEllipse::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
- SPGenericEllipse *ellipse = this->spellipse;
+Inkscape::XML::Node* SPEllipse::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
+ SPGenericEllipse *ellipse = this;
if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
repr = xml_doc->createElement("svg:ellipse");
@@ -405,14 +383,14 @@ Inkscape::XML::Node* CEllipse::write(Inkscape::XML::Document *xml_doc, Inkscape:
sp_repr_set_svg_double(repr, "rx", ellipse->rx.computed);
sp_repr_set_svg_double(repr, "ry", ellipse->ry.computed);
- CGenericEllipse::write(xml_doc, repr, flags);
+ SPGenericEllipse::write(xml_doc, repr, flags);
return repr;
}
-void CEllipse::set(unsigned int key, gchar const* value) {
- SPEllipse *ellipse = this->spellipse;
+void SPEllipse::set(unsigned int key, gchar const* value) {
+ SPEllipse *ellipse = this;
SPEllipse* object = (SPEllipse*)ellipse;
switch (key) {
@@ -437,12 +415,12 @@ void CEllipse::set(unsigned int key, gchar const* value) {
object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
break;
default:
- CGenericEllipse::set(key, value);
+ SPGenericEllipse::set(key, value);
break;
}
}
-gchar* CEllipse::description() {
+gchar* SPEllipse::description() {
return g_strdup(_("<b>Ellipse</b>"));
}
@@ -466,32 +444,20 @@ sp_ellipse_position_set(SPEllipse *ellipse, gdouble x, gdouble y, gdouble rx, gd
}
/* SVG <circle> element */
-
-CCircle::CCircle(SPCircle* circle) : CGenericEllipse(circle) {
- this->spcircle = circle;
-}
-
-CCircle::~CCircle() {
-}
-
SPCircle::SPCircle() : SPGenericEllipse() {
- SPCircle* circle = this;
-
- circle->ccircle = new CCircle(circle);
- circle->typeHierarchy.insert(typeid(SPCircle));
+ this->cshape = this;
+ this->clpeitem = this;
+ this->citem = this;
+ this->cobject = this;
+}
- delete circle->cgenericEllipse;
- circle->cgenericEllipse = circle->ccircle;
- circle->cshape = circle->ccircle;
- circle->clpeitem = circle->ccircle;
- circle->citem = circle->ccircle;
- circle->cobject = circle->ccircle;
+SPCircle::~SPCircle() {
}
-void CCircle::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPCircle* object = this->spcircle;
+void SPCircle::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPCircle* object = this;
- CGenericEllipse::build(document, repr);
+ SPGenericEllipse::build(document, repr);
object->readAttr( "cx" );
object->readAttr( "cy" );
@@ -499,8 +465,8 @@ void CCircle::build(SPDocument *document, Inkscape::XML::Node *repr) {
}
-Inkscape::XML::Node* CCircle::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
- SPGenericEllipse *ellipse = this->spcircle;
+Inkscape::XML::Node* SPCircle::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
+ SPGenericEllipse *ellipse = this;
if ((flags & SP_OBJECT_WRITE_BUILD) && !repr) {
repr = xml_doc->createElement("svg:circle");
@@ -510,13 +476,13 @@ Inkscape::XML::Node* CCircle::write(Inkscape::XML::Document *xml_doc, Inkscape::
sp_repr_set_svg_double(repr, "cy", ellipse->cy.computed);
sp_repr_set_svg_double(repr, "r", ellipse->rx.computed);
- CGenericEllipse::write(xml_doc, repr, flags);
+ SPGenericEllipse::write(xml_doc, repr, flags);
return repr;
}
-void CCircle::set(unsigned int key, gchar const* value) {
- SPGenericEllipse *ge = this->spcircle;
+void SPCircle::set(unsigned int key, gchar const* value) {
+ SPGenericEllipse *ge = this;
SPCircle* object = (SPCircle*)ge;
switch (key) {
@@ -536,42 +502,30 @@ void CCircle::set(unsigned int key, gchar const* value) {
object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
break;
default:
- CGenericEllipse::set(key, value);
+ SPGenericEllipse::set(key, value);
break;
}
}
-gchar* CCircle::description() {
+gchar* SPCircle::description() {
return g_strdup(_("<b>Circle</b>"));
}
/* <path sodipodi:type="arc"> element */
-
-CArc::CArc(SPArc* arc) : CGenericEllipse(arc) {
- this->sparc = arc;
-}
-
-CArc::~CArc() {
-}
-
SPArc::SPArc() : SPGenericEllipse() {
- SPArc* arc = this;
-
- arc->carc = new CArc(arc);
- arc->typeHierarchy.insert(typeid(SPArc));
+ this->cshape = this;
+ this->clpeitem = this;
+ this->citem = this;
+ this->cobject = this;
+}
- delete arc->cgenericEllipse;
- arc->cgenericEllipse = arc->carc;
- arc->cshape = arc->carc;
- arc->clpeitem = arc->carc;
- arc->citem = arc->carc;
- arc->cobject = arc->carc;
+SPArc::~SPArc() {
}
-void CArc::build(SPDocument *document, Inkscape::XML::Node *repr) {
- SPArc* object = this->sparc;
+void SPArc::build(SPDocument *document, Inkscape::XML::Node *repr) {
+ SPArc* object = this;
- CGenericEllipse::build(document, repr);
+ SPGenericEllipse::build(document, repr);
object->readAttr( "sodipodi:cx" );
object->readAttr( "sodipodi:cy" );
@@ -625,8 +579,8 @@ sp_arc_set_elliptical_path_attribute(SPArc *arc, Inkscape::XML::Node *repr)
return true;
}
-Inkscape::XML::Node* CArc::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
- SPArc* object = this->sparc;
+Inkscape::XML::Node* SPArc::write(Inkscape::XML::Document *xml_doc, Inkscape::XML::Node *repr, guint flags) {
+ SPArc* object = this;
SPGenericEllipse *ge = object;
SPArc *arc = object;
@@ -658,13 +612,13 @@ Inkscape::XML::Node* CArc::write(Inkscape::XML::Document *xml_doc, Inkscape::XML
// write d=
sp_arc_set_elliptical_path_attribute(arc, repr);
- CGenericEllipse::write(xml_doc, repr, flags);
+ SPGenericEllipse::write(xml_doc, repr, flags);
return repr;
}
-void CArc::set(unsigned int key, gchar const* value) {
- SPArc* object = this->sparc;
+void SPArc::set(unsigned int key, gchar const* value) {
+ SPArc* object = this;
SPGenericEllipse *ge = object;
switch (key) {
@@ -709,24 +663,24 @@ void CArc::set(unsigned int key, gchar const* value) {
object->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
break;
default:
- CGenericEllipse::set(key, value);
+ SPGenericEllipse::set(key, value);
break;
}
}
-void CArc::modified(guint flags) {
- SPArc* object = this->sparc;
+void SPArc::modified(guint flags) {
+ SPArc* object = this;
if (flags & (SP_OBJECT_MODIFIED_FLAG | SP_OBJECT_STYLE_MODIFIED_FLAG | SP_OBJECT_VIEWPORT_MODIFIED_FLAG)) {
((SPShape *) object)->setShape();
}
- CGenericEllipse::modified(flags);
+ SPGenericEllipse::modified(flags);
}
-gchar* CArc::description() {
- SPArc* item = this->sparc;
+gchar* SPArc::description() {
+ SPArc* item = this;
SPGenericEllipse *ge = item;
gdouble len = fmod(ge->end - ge->start, SP_2PI);