diff options
| author | Liam P. White <inkscapebrony@gmail.com> | 2014-10-25 18:36:10 +0000 |
|---|---|---|
| committer | Liam P. White <inkscapebrony@gmail.com> | 2014-10-25 18:36:10 +0000 |
| commit | 17f09296aa0beff56222e2d9c24f92a8ce94eef2 (patch) | |
| tree | 9eae706e5f1145ee3184e41432f6d4315a53dce5 /src/knotholder.cpp | |
| parent | Update perspective-envelope to be affected by the clip or mask on LPE patch (diff) | |
| parent | Cleaned casts from sp-shape by fixing member type. (diff) | |
| download | inkscape-17f09296aa0beff56222e2d9c24f92a8ce94eef2.tar.gz inkscape-17f09296aa0beff56222e2d9c24f92a8ce94eef2.zip | |
Update to trunk r13638
(bzr r13341.1.286)
Diffstat (limited to 'src/knotholder.cpp')
| -rw-r--r-- | src/knotholder.cpp | 92 |
1 files changed, 49 insertions, 43 deletions
diff --git a/src/knotholder.cpp b/src/knotholder.cpp index b8d941bf7..f46daa09e 100644 --- a/src/knotholder.cpp +++ b/src/knotholder.cpp @@ -6,6 +6,7 @@ * bulia byak <buliabyak@users.sf.net> * Maximilian Albert <maximilian.albert@gmail.com> * Abhishek Sharma + * Jon A. Cruz <jon@joncruz.org> * * Copyright (C) 2001-2008 authors * @@ -58,8 +59,7 @@ KnotHolder::KnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFun local_change(FALSE), dragging(false) { - - if (!desktop || !item || !SP_IS_ITEM(item)) { + if (!desktop || !item) { g_print ("Error! Throw an exception, please!\n"); } @@ -128,29 +128,37 @@ KnotHolder::knot_clicked_handler(SPKnot *knot, guint state) } } - if (SP_IS_SHAPE(saved_item)) { - SP_SHAPE(saved_item)->set_shape(); + { + SPShape *savedShape = dynamic_cast<SPShape *>(saved_item); + if (savedShape) { + savedShape->set_shape(); + } } knot_holder->update_knots(); unsigned int object_verb = SP_VERB_NONE; - if (SP_IS_RECT(saved_item)) + // TODO extract duplicated blocks; + if (dynamic_cast<SPRect *>(saved_item)) { object_verb = SP_VERB_CONTEXT_RECT; - else if (SP_IS_BOX3D(saved_item)) + } else if (dynamic_cast<SPBox3D *>(saved_item)) { object_verb = SP_VERB_CONTEXT_3DBOX; - else if (SP_IS_GENERICELLIPSE(saved_item)) + } else if (dynamic_cast<SPGenericEllipse *>(saved_item)) { object_verb = SP_VERB_CONTEXT_ARC; - else if (SP_IS_STAR(saved_item)) + } else if (dynamic_cast<SPStar *>(saved_item)) { object_verb = SP_VERB_CONTEXT_STAR; - else if (SP_IS_SPIRAL(saved_item)) + } else if (dynamic_cast<SPSpiral *>(saved_item)) { object_verb = SP_VERB_CONTEXT_SPIRAL; - else if (SP_IS_OFFSET(saved_item)) { - if (SP_OFFSET(saved_item)->sourceHref) - object_verb = SP_VERB_SELECTION_LINKED_OFFSET; - else - object_verb = SP_VERB_SELECTION_DYNAMIC_OFFSET; + } else { + SPOffset *offset = dynamic_cast<SPOffset *>(saved_item); + if (offset) { + if (offset->sourceHref) { + object_verb = SP_VERB_SELECTION_LINKED_OFFSET; + } else { + object_verb = SP_VERB_SELECTION_DYNAMIC_OFFSET; + } + } } // for drag, this is done by ungrabbed_handler, but for click we must do it here @@ -184,8 +192,9 @@ KnotHolder::knot_moved_handler(SPKnot *knot, Geom::Point const &p, guint state) } } - if (SP_IS_SHAPE (item)) { - SP_SHAPE (item)->set_shape(); + SPShape *shape = dynamic_cast<SPShape *>(item); + if (shape) { + shape->set_shape(); } this->update_knots(); @@ -210,45 +219,42 @@ KnotHolder::knot_ungrabbed_handler(SPKnot */*knot*/, guint) /* do cleanup tasks (e.g., for LPE items write the parameter values * that were changed by dragging the handle to SVG) */ - if (dynamic_cast<SPLPEItem*> (object)) { + SPLPEItem *lpeItem = dynamic_cast<SPLPEItem *>(object); + if (lpeItem) { // This writes all parameters to SVG. Is this sufficiently efficient or should we only // write the ones that were changed? - SPLPEItem * lpeitem = SP_LPE_ITEM(object); - if (lpeitem) { - Inkscape::LivePathEffect::Effect *lpe = lpeitem->getCurrentLPE(); - if (lpe) { - LivePathEffectObject *lpeobj = lpe->getLPEObj(); - lpeobj->updateRepr(); - } + Inkscape::LivePathEffect::Effect *lpe = lpeItem->getCurrentLPE(); + if (lpe) { + LivePathEffectObject *lpeobj = lpe->getLPEObj(); + lpeobj->updateRepr(); } } unsigned int object_verb = SP_VERB_NONE; - if (SP_IS_RECT(object)) + // TODO extract duplicated blocks: + if (dynamic_cast<SPRect *>(object)) { object_verb = SP_VERB_CONTEXT_RECT; - else if (SP_IS_BOX3D(object)) + } else if (dynamic_cast<SPBox3D *>(object)) { object_verb = SP_VERB_CONTEXT_3DBOX; - else if (SP_IS_GENERICELLIPSE(object)) + } else if (dynamic_cast<SPGenericEllipse *>(object)) { object_verb = SP_VERB_CONTEXT_ARC; - else if (SP_IS_STAR(object)) + } else if (dynamic_cast<SPStar *>(object)) { object_verb = SP_VERB_CONTEXT_STAR; - else if (SP_IS_SPIRAL(object)) + } else if (dynamic_cast<SPSpiral *>(object)) { object_verb = SP_VERB_CONTEXT_SPIRAL; - else if (SP_IS_OFFSET(object)) { - if (SP_OFFSET(object)->sourceHref) - object_verb = SP_VERB_SELECTION_LINKED_OFFSET; - else - object_verb = SP_VERB_SELECTION_DYNAMIC_OFFSET; - } - if (object) { //increasingly aggressive sanity checks - if (object->document) { - if (object_verb <= SP_VERB_LAST && object_verb >= SP_VERB_INVALID) { - DocumentUndo::done(object->document, object_verb, - _("Move handle")); + } else { + SPOffset *offset = dynamic_cast<SPOffset *>(object); + if (offset) { + if (offset->sourceHref) { + object_verb = SP_VERB_SELECTION_LINKED_OFFSET; + } else { + object_verb = SP_VERB_SELECTION_DYNAMIC_OFFSET; } } - } //else { abort(); } + } + + DocumentUndo::done(object->document, object_verb, _("Move handle")); } } @@ -261,7 +267,7 @@ void KnotHolder::add(KnotHolderEntity *e) void KnotHolder::add_pattern_knotholder() { - if ((item->style->fill.isPaintserver()) && SP_IS_PATTERN(item->style->getFillPaintServer())) { + if ((item->style->fill.isPaintserver()) && dynamic_cast<SPPattern *>(item->style->getFillPaintServer())) { PatternKnotHolderEntityXY *entity_xy = new PatternKnotHolderEntityXY(true); PatternKnotHolderEntityAngle *entity_angle = new PatternKnotHolderEntityAngle(true); PatternKnotHolderEntityScale *entity_scale = new PatternKnotHolderEntityScale(true); @@ -283,7 +289,7 @@ void KnotHolder::add_pattern_knotholder() entity.push_back(entity_scale); } - if ((item->style->stroke.isPaintserver()) && SP_IS_PATTERN(item->style->getStrokePaintServer())) { + if ((item->style->stroke.isPaintserver()) && dynamic_cast<SPPattern *>(item->style->getStrokePaintServer())) { PatternKnotHolderEntityXY *entity_xy = new PatternKnotHolderEntityXY(false); PatternKnotHolderEntityAngle *entity_angle = new PatternKnotHolderEntityAngle(false); PatternKnotHolderEntityScale *entity_scale = new PatternKnotHolderEntityScale(false); |
