diff --git a/src/object-edit.cpp b/src/object-edit.cpp
index d335ced533aeec1082cd905bbe5d5b468ecd834a..6b83413e481c184a2a0745f7d8381e2a1a4fadcf 100644 (file)
--- a/src/object-edit.cpp
+++ b/src/object-edit.cpp
#include "sp-spiral.h"
#include "sp-offset.h"
#include "sp-flowtext.h"
-#include "prefs-utils.h"
-#include "inkscape.h"
-#include "snap.h"
-#include "desktop-affine.h"
+#include "preferences.h"
#include "style.h"
#include "desktop.h"
#include "desktop-handles.h"
#include "object-edit.h"
#include <libnr/nr-scale-ops.h>
-#include <libnr/nr-matrix-div.h>
#include "xml/repr.h"
KnotHolder *knot_holder = new KnotHolder(desktop, item, NULL);
Inkscape::LivePathEffect::Effect *effect = sp_lpe_item_get_current_lpe(SP_LPE_ITEM(item));
- if (!effect) {
- g_error("sp_lpe_knot_holder: logical error, this method cannot be called with item having an LPE");
- } else {
- effect->addHandles(knot_holder);
- }
+ effect->addHandles(knot_holder, desktop, item);
return knot_holder;
}
knotholder = new FlowtextKnotHolder(desktop, SP_FLOWTEXT(item)->get_frame(NULL), NULL);
} else if ((SP_OBJECT(item)->style->fill.isPaintserver())
&& SP_IS_PATTERN(SP_STYLE_FILL_SERVER(SP_OBJECT(item)->style))) {
+ knotholder = new KnotHolder(desktop, item, NULL);
knotholder->add_pattern_knotholder();
}
/* handle for horizontal rounding radius */
class RectKnotHolderEntityRX : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
/* handle for vertical rounding radius */
class RectKnotHolderEntityRY : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
/* handle for width/height adjustment */
class RectKnotHolderEntityWH : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+
+protected:
+ void set_internal(Geom::Point const &p, Geom::Point const &origin, guint state);
};
/* handle for x/y adjustment */
class RectKnotHolderEntityXY : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
-static NR::Point snap_knot_position(SPItem *item, NR::Point const &p)
-{
- SPDesktop const *desktop = inkscape_active_desktop();
- NR::Matrix const i2d (sp_item_i2d_affine (item));
- NR::Point s = p * i2d;
- SnapManager &m = desktop->namedview->snap_manager;
- m.setup(desktop, item);
- m.freeSnapReturnByRef(Inkscape::Snapper::SNAPPOINT_NODE, s);
- return s * i2d.inverse();
-}
-
-NR::Point
-RectKnotHolderEntityRX::knot_get_func()
+Geom::Point
+RectKnotHolderEntityRX::knot_get()
{
SPRect *rect = SP_RECT(item);
- return NR::Point(rect->x.computed + rect->width.computed - rect->rx.computed, rect->y.computed);
+ return Geom::Point(rect->x.computed + rect->width.computed - rect->rx.computed, rect->y.computed);
}
void
-RectKnotHolderEntityRX::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+RectKnotHolderEntityRX::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
SPRect *rect = SP_RECT(item);
//In general we cannot just snap this radius to an arbitrary point, as we have only a single
//degree of freedom. For snapping to an arbitrary point we need two DOF. If we're going to snap
//the radius then we should have a constrained snap. snap_knot_position() is unconstrained
+ Geom::Point const s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed), Geom::Point(-1, 0)));
if (state & GDK_CONTROL_MASK) {
gdouble temp = MIN(rect->height.computed, rect->width.computed) / 2.0;
- rect->rx.computed = rect->ry.computed = CLAMP(rect->x.computed + rect->width.computed - p[NR::X], 0.0, temp);
+ rect->rx.computed = rect->ry.computed = CLAMP(rect->x.computed + rect->width.computed - s[Geom::X], 0.0, temp);
rect->rx._set = rect->ry._set = true;
} else {
- rect->rx.computed = CLAMP(rect->x.computed + rect->width.computed - p[NR::X], 0.0, rect->width.computed / 2.0);
+ rect->rx.computed = CLAMP(rect->x.computed + rect->width.computed - s[Geom::X], 0.0, rect->width.computed / 2.0);
rect->rx._set = true;
}
@@ -173,7 +159,7 @@ RectKnotHolderEntityRX::knot_set_func(NR::Point const &p, NR::Point const &/*ori
}
void
-RectKnotHolderEntityRX::knot_click_func(guint state)
+RectKnotHolderEntityRX::knot_click(guint state)
{
SPRect *rect = SP_RECT(item);
update_knot();
}
-NR::Point
-RectKnotHolderEntityRY::knot_get_func()
+Geom::Point
+RectKnotHolderEntityRY::knot_get()
{
SPRect *rect = SP_RECT(item);
- return NR::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->ry.computed);
+ return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->ry.computed);
}
void
-RectKnotHolderEntityRY::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+RectKnotHolderEntityRY::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
SPRect *rect = SP_RECT(item);
//In general we cannot just snap this radius to an arbitrary point, as we have only a single
//degree of freedom. For snapping to an arbitrary point we need two DOF. If we're going to snap
//the radius then we should have a constrained snap. snap_knot_position() is unconstrained
+ Geom::Point const s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed), Geom::Point(0, 1)));
- if (state & GDK_CONTROL_MASK) {
+ if (state & GDK_CONTROL_MASK) { // When holding control then rx will be kept equal to ry,
+ // resulting in a perfect circle (and not an ellipse)
gdouble temp = MIN(rect->height.computed, rect->width.computed) / 2.0;
- rect->rx.computed = rect->ry.computed = CLAMP(p[NR::Y] - rect->y.computed, 0.0, temp);
+ rect->rx.computed = rect->ry.computed = CLAMP(s[Geom::Y] - rect->y.computed, 0.0, temp);
rect->ry._set = rect->rx._set = true;
} else {
if (!rect->rx._set || rect->rx.computed == 0) {
- rect->ry.computed = CLAMP(p[NR::Y] - rect->y.computed,
+ rect->ry.computed = CLAMP(s[Geom::Y] - rect->y.computed,
0.0,
MIN(rect->height.computed / 2.0, rect->width.computed / 2.0));
} else {
- rect->ry.computed = CLAMP(p[NR::Y] - rect->y.computed,
+ rect->ry.computed = CLAMP(s[Geom::Y] - rect->y.computed,
0.0,
rect->height.computed / 2.0);
}
@@ -230,7 +218,7 @@ RectKnotHolderEntityRY::knot_set_func(NR::Point const &p, NR::Point const &/*ori
}
void
-RectKnotHolderEntityRY::knot_click_func(guint state)
+RectKnotHolderEntityRY::knot_click(guint state)
{
SPRect *rect = SP_RECT(item);
}
}
-NR::Point
-RectKnotHolderEntityWH::knot_get_func()
+Geom::Point
+RectKnotHolderEntityWH::knot_get()
{
SPRect *rect = SP_RECT(item);
- return NR::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed);
+ return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed);
}
-static void sp_rect_wh_set_internal(SPRect *rect, NR::Point const &p, NR::Point const &origin, guint state)
+void
+RectKnotHolderEntityWH::set_internal(Geom::Point const &p, Geom::Point const &origin, guint state)
{
- NR::Point const s = snap_knot_position(rect, p);
+ SPRect *rect = SP_RECT(item);
+
+ Geom::Point s = p;
if (state & GDK_CONTROL_MASK) {
// original width/height when drag started
- gdouble const w_orig = (origin[NR::X] - rect->x.computed);
- gdouble const h_orig = (origin[NR::Y] - rect->y.computed);
+ gdouble const w_orig = (origin[Geom::X] - rect->x.computed);
+ gdouble const h_orig = (origin[Geom::Y] - rect->y.computed);
//original ratio
- gdouble const ratio = (w_orig / h_orig);
+ gdouble ratio = (w_orig / h_orig);
// mouse displacement since drag started
- gdouble const minx = s[NR::X] - origin[NR::X];
- gdouble const miny = s[NR::Y] - origin[NR::Y];
+ gdouble minx = p[Geom::X] - origin[Geom::X];
+ gdouble miny = p[Geom::Y] - origin[Geom::Y];
- if (fabs(minx) > fabs(miny)) {
+ Geom::Point p_handle(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed);
- // snap to horizontal or diagonal
- rect->width.computed = MAX(w_orig + minx, 0);
+ if (fabs(minx) > fabs(miny)) {
+ // snap to horizontal or diagonal
if (minx != 0 && fabs(miny/minx) > 0.5 * 1/ratio && (SGN(minx) == SGN(miny))) {
// closer to the diagonal and in same-sign quarters, change both using ratio
- rect->height.computed = MAX(h_orig + minx / ratio, 0);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(-ratio, -1)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->height.computed = MAX(h_orig + minx / ratio, 0);
} else {
// closer to the horizontal, change only width, height is h_orig
- rect->height.computed = MAX(h_orig, 0);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(-1, 0)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->height.computed = MAX(h_orig, 0);
}
+ rect->width.computed = MAX(w_orig + minx, 0);
} else {
// snap to vertical or diagonal
- rect->height.computed = MAX(h_orig + miny, 0);
if (miny != 0 && fabs(minx/miny) > 0.5 * ratio && (SGN(minx) == SGN(miny))) {
// closer to the diagonal and in same-sign quarters, change both using ratio
- rect->width.computed = MAX(w_orig + miny * ratio, 0);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(-ratio, -1)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->width.computed = MAX(w_orig + miny * ratio, 0);
} else {
// closer to the vertical, change only height, width is w_orig
- rect->width.computed = MAX(w_orig, 0);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(0, -1)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->width.computed = MAX(w_orig, 0);
}
+ rect->height.computed = MAX(h_orig + miny, 0);
+
}
rect->width._set = rect->height._set = true;
} else {
// move freely
- rect->width.computed = MAX(s[NR::X] - rect->x.computed, 0);
- rect->height.computed = MAX(s[NR::Y] - rect->y.computed, 0);
+ s = snap_knot_position(p);
+ rect->width.computed = MAX(s[Geom::X] - rect->x.computed, 0);
+ rect->height.computed = MAX(s[Geom::Y] - rect->y.computed, 0);
rect->width._set = rect->height._set = true;
}
@@ -322,25 +328,22 @@ static void sp_rect_wh_set_internal(SPRect *rect, NR::Point const &p, NR::Point
}
void
-RectKnotHolderEntityWH::knot_set_func(NR::Point const &p, NR::Point const &origin, guint state)
+RectKnotHolderEntityWH::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state)
{
- SPRect *rect = SP_RECT(item);
-
- sp_rect_wh_set_internal(rect, p, origin, state);
-
+ set_internal(p, origin, state);
update_knot();
}
-NR::Point
-RectKnotHolderEntityXY::knot_get_func()
+Geom::Point
+RectKnotHolderEntityXY::knot_get()
{
SPRect *rect = SP_RECT(item);
- return NR::Point(rect->x.computed, rect->y.computed);
+ return Geom::Point(rect->x.computed, rect->y.computed);
}
void
-RectKnotHolderEntityXY::knot_set_func(NR::Point const &p, NR::Point const &origin, guint state)
+RectKnotHolderEntityXY::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state)
{
SPRect *rect = SP_RECT(item);
@@ -349,58 +352,71 @@ RectKnotHolderEntityXY::knot_set_func(NR::Point const &p, NR::Point const &origi
gdouble opposite_y = (rect->y.computed + rect->height.computed);
// original width/height when drag started
- gdouble w_orig = opposite_x - origin[NR::X];
- gdouble h_orig = opposite_y - origin[NR::Y];
+ gdouble w_orig = opposite_x - origin[Geom::X];
+ gdouble h_orig = opposite_y - origin[Geom::Y];
- NR::Point const s = snap_knot_position(rect, p);
+ Geom::Point s = p;
+ Geom::Point p_handle(rect->x.computed, rect->y.computed);
// mouse displacement since drag started
- gdouble minx = s[NR::X] - origin[NR::X];
- gdouble miny = s[NR::Y] - origin[NR::Y];
+ gdouble minx = p[Geom::X] - origin[Geom::X];
+ gdouble miny = p[Geom::Y] - origin[Geom::Y];
if (state & GDK_CONTROL_MASK) {
//original ratio
gdouble ratio = (w_orig / h_orig);
if (fabs(minx) > fabs(miny)) {
-
- // snap to horizontal or diagonal
- rect->x.computed = MIN(s[NR::X], opposite_x);
- rect->width.computed = MAX(w_orig - minx, 0);
+ // snap to horizontal or diagonal
if (minx != 0 && fabs(miny/minx) > 0.5 * 1/ratio && (SGN(minx) == SGN(miny))) {
// closer to the diagonal and in same-sign quarters, change both using ratio
- rect->y.computed = MIN(origin[NR::Y] + minx / ratio, opposite_y);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(-ratio, -1)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->y.computed = MIN(origin[Geom::Y] + minx / ratio, opposite_y);
rect->height.computed = MAX(h_orig - minx / ratio, 0);
} else {
// closer to the horizontal, change only width, height is h_orig
- rect->y.computed = MIN(origin[NR::Y], opposite_y);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(-1, 0)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->y.computed = MIN(origin[Geom::Y], opposite_y);
rect->height.computed = MAX(h_orig, 0);
}
-
+ rect->x.computed = MIN(s[Geom::X], opposite_x);
+ rect->width.computed = MAX(w_orig - minx, 0);
} else {
-
// snap to vertical or diagonal
- rect->y.computed = MIN(s[NR::Y], opposite_y);
- rect->height.computed = MAX(h_orig - miny, 0);
- if (miny != 0 && fabs(minx/miny) > 0.5 *ratio && (SGN(minx) == SGN(miny))) {
+ if (miny != 0 && fabs(minx/miny) > 0.5 *ratio && (SGN(minx) == SGN(miny))) {
// closer to the diagonal and in same-sign quarters, change both using ratio
- rect->x.computed = MIN(origin[NR::X] + miny * ratio, opposite_x);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(-ratio, -1)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->x.computed = MIN(origin[Geom::X] + miny * ratio, opposite_x);
rect->width.computed = MAX(w_orig - miny * ratio, 0);
} else {
// closer to the vertical, change only height, width is w_orig
- rect->x.computed = MIN(origin[NR::X], opposite_x);
+ s = snap_knot_position_constrained(p, Inkscape::Snapper::ConstraintLine(p_handle, Geom::Point(0, -1)));
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+ rect->x.computed = MIN(origin[Geom::X], opposite_x);
rect->width.computed = MAX(w_orig, 0);
}
-
+ rect->y.computed = MIN(s[Geom::Y], opposite_y);
+ rect->height.computed = MAX(h_orig - miny, 0);
}
rect->width._set = rect->height._set = rect->x._set = rect->y._set = true;
} else {
// move freely
- rect->x.computed = MIN(s[NR::X], opposite_x);
+ s = snap_knot_position(p);
+ minx = s[Geom::X] - origin[Geom::X];
+ miny = s[Geom::Y] - origin[Geom::Y];
+
+ rect->x.computed = MIN(s[Geom::X], opposite_x);
rect->width.computed = MAX(w_orig - minx, 0);
- rect->y.computed = MIN(s[NR::Y], opposite_y);
+ rect->y.computed = MIN(s[Geom::Y], opposite_y);
rect->height.computed = MAX(h_orig - miny, 0);
rect->width._set = rect->height._set = rect->x._set = rect->y._set = true;
}
@@ -428,11 +444,11 @@ RectKnotHolder::RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderRel
"to make the horizontal radius the same"),
SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR);
entity_wh->create(desktop, item, this,
- _("Adjust the <b>width and height</b> of the rectangle; with <b>Ctrl</b>"
+ _("Adjust the <b>width and height</b> of the rectangle; with <b>Ctrl</b> "
"to lock ratio or stretch in one dimension only"),
SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR);
entity_xy->create(desktop, item, this,
- _("Adjust the <b>width and height</b> of the rectangle; with <b>Ctrl</b>"
+ _("Adjust the <b>width and height</b> of the rectangle; with <b>Ctrl</b> "
"to lock ratio or stretch in one dimension only"),
SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR);
entity.push_back(entity_rx);
@@ -447,27 +463,27 @@ RectKnotHolder::RectKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderRel
class Box3DKnotHolderEntity : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func() = 0;
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state) = 0;
+ virtual Geom::Point knot_get() = 0;
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state) = 0;
- static NR::Point knot_get_func_generic(SPItem *item, unsigned int knot_id);
- static void knot_set_func_generic(SPItem *item, unsigned int knot_id, NR::Point const &p, guint state);
+ Geom::Point knot_get_generic(SPItem *item, unsigned int knot_id);
+ void knot_set_generic(SPItem *item, unsigned int knot_id, Geom::Point const &p, guint state);
};
-NR::Point
-Box3DKnotHolderEntity::knot_get_func_generic(SPItem *item, unsigned int knot_id)
+Geom::Point
+Box3DKnotHolderEntity::knot_get_generic(SPItem *item, unsigned int knot_id)
{
return box3d_get_corner_screen(SP_BOX3D(item), knot_id);
}
void
-Box3DKnotHolderEntity::knot_set_func_generic(SPItem *item, unsigned int knot_id, NR::Point const &new_pos, guint state)
+Box3DKnotHolderEntity::knot_set_generic(SPItem *item, unsigned int knot_id, Geom::Point const &new_pos, guint state)
{
- NR::Point const s = snap_knot_position(item, new_pos);
+ Geom::Point const s = snap_knot_position(new_pos);
g_assert(item != NULL);
SPBox3D *box = SP_BOX3D(item);
- NR::Matrix const i2d (sp_item_i2d_affine (item));
+ Geom::Matrix const i2d (sp_item_i2d_affine (item));
Box3D::Axis movement;
if ((knot_id < 4) != (state & GDK_SHIFT_MASK)) {
@@ -483,167 +499,167 @@ Box3DKnotHolderEntity::knot_set_func_generic(SPItem *item, unsigned int knot_id,
class Box3DKnotHolderEntity0 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntity1 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntity2 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntity3 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntity4 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntity5 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntity6 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntity7 : public Box3DKnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class Box3DKnotHolderEntityCenter : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
-NR::Point
-Box3DKnotHolderEntity0::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity0::knot_get()
{
- return knot_get_func_generic(item, 0);
+ return knot_get_generic(item, 0);
}
-NR::Point
-Box3DKnotHolderEntity1::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity1::knot_get()
{
- return knot_get_func_generic(item, 1);
+ return knot_get_generic(item, 1);
}
-NR::Point
-Box3DKnotHolderEntity2::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity2::knot_get()
{
- return knot_get_func_generic(item, 2);
+ return knot_get_generic(item, 2);
}
-NR::Point
-Box3DKnotHolderEntity3::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity3::knot_get()
{
- return knot_get_func_generic(item, 3);
+ return knot_get_generic(item, 3);
}
-NR::Point
-Box3DKnotHolderEntity4::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity4::knot_get()
{
- return knot_get_func_generic(item, 4);
+ return knot_get_generic(item, 4);
}
-NR::Point
-Box3DKnotHolderEntity5::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity5::knot_get()
{
- return knot_get_func_generic(item, 5);
+ return knot_get_generic(item, 5);
}
-NR::Point
-Box3DKnotHolderEntity6::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity6::knot_get()
{
- return knot_get_func_generic(item, 6);
+ return knot_get_generic(item, 6);
}
-NR::Point
-Box3DKnotHolderEntity7::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntity7::knot_get()
{
- return knot_get_func_generic(item, 7);
+ return knot_get_generic(item, 7);
}
-NR::Point
-Box3DKnotHolderEntityCenter::knot_get_func()
+Geom::Point
+Box3DKnotHolderEntityCenter::knot_get()
{
return box3d_get_center_screen(SP_BOX3D(item));
}
void
-Box3DKnotHolderEntity0::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity0::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 0, new_pos, state);
+ knot_set_generic(item, 0, new_pos, state);
}
void
-Box3DKnotHolderEntity1::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity1::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 1, new_pos, state);
+ knot_set_generic(item, 1, new_pos, state);
}
void
-Box3DKnotHolderEntity2::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity2::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 2, new_pos, state);
+ knot_set_generic(item, 2, new_pos, state);
}
void
-Box3DKnotHolderEntity3::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity3::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 3, new_pos, state);
+ knot_set_generic(item, 3, new_pos, state);
}
void
-Box3DKnotHolderEntity4::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity4::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 4, new_pos, state);
+ knot_set_generic(item, 4, new_pos, state);
}
void
-Box3DKnotHolderEntity5::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity5::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 5, new_pos, state);
+ knot_set_generic(item, 5, new_pos, state);
}
void
-Box3DKnotHolderEntity6::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity6::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 6, new_pos, state);
+ knot_set_generic(item, 6, new_pos, state);
}
void
-Box3DKnotHolderEntity7::knot_set_func(NR::Point const &new_pos, NR::Point const &/*origin*/, guint state)
+Box3DKnotHolderEntity7::knot_set(Geom::Point const &new_pos, Geom::Point const &/*origin*/, guint state)
{
- knot_set_func_generic(item, 7, new_pos, state);
+ knot_set_generic(item, 7, new_pos, state);
}
void
-Box3DKnotHolderEntityCenter::knot_set_func(NR::Point const &new_pos, NR::Point const &origin, guint state)
+Box3DKnotHolderEntityCenter::knot_set(Geom::Point const &new_pos, Geom::Point const &origin, guint state)
{
- NR::Point const s = snap_knot_position(item, new_pos);
+ Geom::Point const s = snap_knot_position(new_pos);
SPBox3D *box = SP_BOX3D(item);
- NR::Matrix const i2d (sp_item_i2d_affine (item));
+ Geom::Matrix const i2d (sp_item_i2d_affine (item));
box3d_set_center (SP_BOX3D(item), s * i2d, origin * i2d, !(state & GDK_SHIFT_MASK) ? Box3D::XY : Box3D::Z,
state & GDK_CONTROL_MASK);
@@ -710,29 +726,29 @@ Box3DKnotHolder::Box3DKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderR
class ArcKnotHolderEntityStart : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
class ArcKnotHolderEntityEnd : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
class ArcKnotHolderEntityRX : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
class ArcKnotHolderEntityRY : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
/*
* -1 : outside
*/
static gint
-sp_genericellipse_side(SPGenericEllipse *ellipse, NR::Point const &p)
+sp_genericellipse_side(SPGenericEllipse *ellipse, Geom::Point const &p)
{
- gdouble dx = (p[NR::X] - ellipse->cx.computed) / ellipse->rx.computed;
- gdouble dy = (p[NR::Y] - ellipse->cy.computed) / ellipse->ry.computed;
+ gdouble dx = (p[Geom::X] - ellipse->cx.computed) / ellipse->rx.computed;
+ gdouble dy = (p[Geom::Y] - ellipse->cy.computed) / ellipse->ry.computed;
gdouble s = dx * dx + dy * dy;
if (s < 1.0) return 1;
}
void
-ArcKnotHolderEntityStart::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+ArcKnotHolderEntityStart::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
- int snaps = prefs_get_int_attribute("options.rotationsnapsperpi", "value", 12);
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
SPArc *arc = SP_ARC(item);
ge->closed = (sp_genericellipse_side(ge, p) == -1) ? TRUE : FALSE;
- NR::Point delta = p - NR::Point(ge->cx.computed, ge->cy.computed);
- NR::scale sc(ge->rx.computed, ge->ry.computed);
+ Geom::Point delta = p - Geom::Point(ge->cx.computed, ge->cy.computed);
+ Geom::Scale sc(ge->rx.computed, ge->ry.computed);
ge->start = atan2(delta * sc.inverse());
if ( ( state & GDK_CONTROL_MASK )
&& snaps )
@@ -775,8 +792,8 @@ ArcKnotHolderEntityStart::knot_set_func(NR::Point const &p, NR::Point const &/*o
((SPObject *)arc)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
}
-NR::Point
-ArcKnotHolderEntityStart::knot_get_func()
+Geom::Point
+ArcKnotHolderEntityStart::knot_get()
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
SPArc *arc = SP_ARC(item);
}
void
-ArcKnotHolderEntityEnd::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+ArcKnotHolderEntityEnd::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
- int snaps = prefs_get_int_attribute("options.rotationsnapsperpi", "value", 12);
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
SPArc *arc = SP_ARC(item);
ge->closed = (sp_genericellipse_side(ge, p) == -1) ? TRUE : FALSE;
- NR::Point delta = p - NR::Point(ge->cx.computed, ge->cy.computed);
- NR::scale sc(ge->rx.computed, ge->ry.computed);
+ Geom::Point delta = p - Geom::Point(ge->cx.computed, ge->cy.computed);
+ Geom::Scale sc(ge->rx.computed, ge->ry.computed);
ge->end = atan2(delta * sc.inverse());
if ( ( state & GDK_CONTROL_MASK )
&& snaps )
@@ -806,8 +824,8 @@ ArcKnotHolderEntityEnd::knot_set_func(NR::Point const &p, NR::Point const &/*ori
((SPObject *)arc)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
}
-NR::Point
-ArcKnotHolderEntityEnd::knot_get_func()
+Geom::Point
+ArcKnotHolderEntityEnd::knot_get()
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
SPArc *arc = SP_ARC(item);
void
-ArcKnotHolderEntityEnd::knot_click_func(guint state)
+ArcKnotHolderEntityEnd::knot_click(guint state)
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
void
-ArcKnotHolderEntityRX::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+ArcKnotHolderEntityRX::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
- SPArc *arc = SP_ARC(item);
- NR::Point const s = snap_knot_position(arc, p);
+ Geom::Point const s = snap_knot_position(p);
- ge->rx.computed = fabs( ge->cx.computed - s[NR::X] );
+ ge->rx.computed = fabs( ge->cx.computed - s[Geom::X] );
if ( state & GDK_CONTROL_MASK ) {
ge->ry.computed = ge->rx.computed;
}
- ((SPObject *)arc)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
+ ((SPObject *)item)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
}
-NR::Point
-ArcKnotHolderEntityRX::knot_get_func()
+Geom::Point
+ArcKnotHolderEntityRX::knot_get()
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
- return (NR::Point(ge->cx.computed, ge->cy.computed) - NR::Point(ge->rx.computed, 0));
+ return (Geom::Point(ge->cx.computed, ge->cy.computed) - Geom::Point(ge->rx.computed, 0));
}
void
-ArcKnotHolderEntityRX::knot_click_func(guint state)
+ArcKnotHolderEntityRX::knot_click(guint state)
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
}
void
-ArcKnotHolderEntityRY::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+ArcKnotHolderEntityRY::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
- SPArc *arc = SP_ARC(item);
- NR::Point const s = snap_knot_position(arc, p);
+ Geom::Point const s = snap_knot_position(p);
- ge->ry.computed = fabs( ge->cy.computed - s[NR::Y] );
+ ge->ry.computed = fabs( ge->cy.computed - s[Geom::Y] );
if ( state & GDK_CONTROL_MASK ) {
ge->rx.computed = ge->ry.computed;
}
- ((SPObject *)arc)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
+ ((SPObject *)item)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
}
-NR::Point
-ArcKnotHolderEntityRY::knot_get_func()
+Geom::Point
+ArcKnotHolderEntityRY::knot_get()
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
- return (NR::Point(ge->cx.computed, ge->cy.computed) - NR::Point(0, ge->ry.computed));
+ return (Geom::Point(ge->cx.computed, ge->cy.computed) - Geom::Point(0, ge->ry.computed));
}
void
-ArcKnotHolderEntityRY::knot_click_func(guint state)
+ArcKnotHolderEntityRY::knot_click(guint state)
{
SPGenericEllipse *ge = SP_GENERICELLIPSE(item);
@@ -914,7 +930,7 @@ ArcKnotHolder::ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderRelea
_("Adjust ellipse <b>height</b>, with <b>Ctrl</b> to make circle"),
SP_KNOT_SHAPE_SQUARE, SP_KNOT_MODE_XOR);
entity_start->create(desktop, item, this,
- _("Position the <b>start point</b> of the arc or segment; with <b>Ctrl</b>"
+ _("Position the <b>start point</b> of the arc or segment; with <b>Ctrl</b> "
"to snap angle; drag <b>inside</b> the ellipse for arc, <b>outside</b> for segment"),
SP_KNOT_SHAPE_CIRCLE, SP_KNOT_MODE_XOR);
entity_end->create(desktop, item, this,
@@ -933,26 +949,26 @@ ArcKnotHolder::ArcKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderRelea
class StarKnotHolderEntity1 : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
class StarKnotHolderEntity2 : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
void
-StarKnotHolderEntity1::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+StarKnotHolderEntity1::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
SPStar *star = SP_STAR(item);
- NR::Point const s = snap_knot_position(star, p);
+ Geom::Point const s = snap_knot_position(p);
- NR::Point d = s - star->center;
+ Geom::Point d = s - to_2geom(star->center);
double arg1 = atan2(d);
double darg1 = arg1 - star->arg[0];
@@ -972,14 +988,14 @@ StarKnotHolderEntity1::knot_set_func(NR::Point const &p, NR::Point const &/*orig
}
void
-StarKnotHolderEntity2::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+StarKnotHolderEntity2::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
SPStar *star = SP_STAR(item);
- NR::Point const s = snap_knot_position(star, p);
+ Geom::Point const s = snap_knot_position(p);
if (star->flatsided == false) {
- NR::Point d = s - star->center;
+ Geom::Point d = s - to_2geom(star->center);
double arg1 = atan2(d);
double darg1 = arg1 - star->arg[1];
@@ -1000,8 +1016,8 @@ StarKnotHolderEntity2::knot_set_func(NR::Point const &p, NR::Point const &/*orig
}
}
-NR::Point
-StarKnotHolderEntity1::knot_get_func()
+Geom::Point
+StarKnotHolderEntity1::knot_get()
{
g_assert(item != NULL);
}
-NR::Point
-StarKnotHolderEntity2::knot_get_func()
+Geom::Point
+StarKnotHolderEntity2::knot_get()
{
g_assert(item != NULL);
}
void
-StarKnotHolderEntity1::knot_click_func(guint state)
+StarKnotHolderEntity1::knot_click(guint state)
{
return sp_star_knot_click(item, state);
}
void
-StarKnotHolderEntity2::knot_click_func(guint state)
+StarKnotHolderEntity2::knot_click(guint state)
{
return sp_star_knot_click(item, state);
}
@@ -1076,15 +1092,15 @@ StarKnotHolder::StarKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderRel
class SpiralKnotHolderEntityInner : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
- virtual void knot_click_func(guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
+ virtual void knot_click(guint state);
};
class SpiralKnotHolderEntityOuter : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
* [control] constrain inner arg to round per PI/4
*/
void
-SpiralKnotHolderEntityInner::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+SpiralKnotHolderEntityInner::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state)
{
- int snaps = prefs_get_int_attribute("options.rotationsnapsperpi", "value", 12);
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
SPSpiral *spiral = SP_SPIRAL(item);
- gdouble dx = p[NR::X] - spiral->cx;
- gdouble dy = p[NR::Y] - spiral->cy;
+ gdouble dx = p[Geom::X] - spiral->cx;
+ gdouble dy = p[Geom::Y] - spiral->cy;
+
+ gdouble moved_y = p[Geom::Y] - origin[Geom::Y];
if (state & GDK_MOD1_MASK) {
// adjust divergence by vertical drag, relative to rad
- double new_exp = (spiral->rad + dy)/(spiral->rad);
- spiral->exp = new_exp > 0? new_exp : 0;
+ if (spiral->rad > 0) {
+ double exp_delta = 0.1*moved_y/(spiral->rad); // arbitrary multiplier to slow it down
+ spiral->exp += exp_delta;
+ if (spiral->exp < 1e-3)
+ spiral->exp = 1e-3;
+ }
} else {
// roll/unroll from inside
gdouble arg_t0;
@@ -1137,14 +1160,15 @@ SpiralKnotHolderEntityInner::knot_set_func(NR::Point const &p, NR::Point const &
* [control] constrain inner arg to round per PI/4
*/
void
-SpiralKnotHolderEntityOuter::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint state)
+SpiralKnotHolderEntityOuter::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint state)
{
- int snaps = prefs_get_int_attribute("options.rotationsnapsperpi", "value", 12);
+ Inkscape::Preferences *prefs = Inkscape::Preferences::get();
+ int snaps = prefs->getInt("/options/rotationsnapsperpi/value", 12);
SPSpiral *spiral = SP_SPIRAL(item);
- gdouble dx = p[NR::X] - spiral->cx;
- gdouble dy = p[NR::Y] - spiral->cy;
+ gdouble dx = p[Geom::X] - spiral->cx;
+ gdouble dy = p[Geom::Y] - spiral->cy;
if (state & GDK_SHIFT_MASK) { // rotate without roll/unroll
spiral->arg = atan2(dy, dx) - 2.0*M_PI*spiral->revo;
@@ -1209,16 +1233,16 @@ SpiralKnotHolderEntityOuter::knot_set_func(NR::Point const &p, NR::Point const &
((SPObject *)spiral)->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG);
}
-NR::Point
-SpiralKnotHolderEntityInner::knot_get_func()
+Geom::Point
+SpiralKnotHolderEntityInner::knot_get()
{
SPSpiral *spiral = SP_SPIRAL(item);
return sp_spiral_get_xy(spiral, spiral->t0);
}
-NR::Point
-SpiralKnotHolderEntityOuter::knot_get_func()
+Geom::Point
+SpiralKnotHolderEntityOuter::knot_get()
{
SPSpiral *spiral = SP_SPIRAL(item);
}
void
-SpiralKnotHolderEntityInner::knot_click_func(guint state)
+SpiralKnotHolderEntityInner::knot_click(guint state)
{
SPSpiral *spiral = SP_SPIRAL(item);
@@ -1260,12 +1284,12 @@ SpiralKnotHolder::SpiralKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolde
class OffsetKnotHolderEntity : public KnotHolderEntity {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
void
-OffsetKnotHolderEntity::knot_set_func(NR::Point const &p, NR::Point const &/*origin*/, guint /*state*/)
+OffsetKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &/*origin*/, guint /*state*/)
{
SPOffset *offset = SP_OFFSET(item);
@@ -1277,12 +1301,12 @@ OffsetKnotHolderEntity::knot_set_func(NR::Point const &p, NR::Point const &/*ori
}
-NR::Point
-OffsetKnotHolderEntity::knot_get_func()
+Geom::Point
+OffsetKnotHolderEntity::knot_get()
{
SPOffset *offset = SP_OFFSET(item);
- NR::Point np;
+ Geom::Point np;
sp_offset_top_point(offset,&np);
return np;
}
@@ -1298,26 +1322,27 @@ OffsetKnotHolder::OffsetKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolde
add_pattern_knotholder();
}
-class FlowtextKnotHolderEntity : public KnotHolderEntity {
+// TODO: this is derived from RectKnotHolderEntityWH because it used the same static function
+// set_internal as the latter before KnotHolderEntity was C++ified. Check whether this also makes
+// sense logically.
+class FlowtextKnotHolderEntity : public RectKnotHolderEntityWH {
public:
- virtual NR::Point knot_get_func();
- virtual void knot_set_func(NR::Point const &p, NR::Point const &origin, guint state);
+ virtual Geom::Point knot_get();
+ virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
};
-NR::Point
-FlowtextKnotHolderEntity::knot_get_func()
+Geom::Point
+FlowtextKnotHolderEntity::knot_get()
{
SPRect *rect = SP_RECT(item);
- return NR::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed);
+ return Geom::Point(rect->x.computed + rect->width.computed, rect->y.computed + rect->height.computed);
}
void
-FlowtextKnotHolderEntity::knot_set_func(NR::Point const &p, NR::Point const &origin, guint state)
+FlowtextKnotHolderEntity::knot_set(Geom::Point const &p, Geom::Point const &origin, guint state)
{
- SPRect *rect = SP_RECT(item);
-
- sp_rect_wh_set_internal(rect, p, origin, state);
+ set_internal(p, origin, state);
}
FlowtextKnotHolder::FlowtextKnotHolder(SPDesktop *desktop, SPItem *item, SPKnotHolderReleasedFunc relhandler) :