summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMartin Owens <doctormo@gmail.com>2015-12-10 05:43:23 +0000
committerMartin Owens <doctormo@gmail.com>2015-12-10 05:43:23 +0000
commit1b5e5271ae41e3ab4e2d352118e66ccafc608a6f (patch)
treefdb7bf33ae747cebb9428612bbd998723eb28aa6 /src
parentRemove unused header file. (diff)
downloadinkscape-1b5e5271ae41e3ab4e2d352118e66ccafc608a6f.tar.gz
inkscape-1b5e5271ae41e3ab4e2d352118e66ccafc608a6f.zip
Remove CtrlPoint and replace with SPKnot
(bzr r14523)
Diffstat (limited to 'src')
-rw-r--r--src/display/CMakeLists.txt2
-rw-r--r--src/display/Makefile_insert2
-rw-r--r--src/display/guideline.cpp49
-rw-r--r--src/display/guideline.h4
-rw-r--r--src/display/sp-ctrlpoint.cpp169
-rw-r--r--src/display/sp-ctrlpoint.h54
-rw-r--r--src/sp-guide.cpp2
-rw-r--r--src/ui/control-manager.cpp26
-rw-r--r--src/ui/control-types.h1
9 files changed, 37 insertions, 272 deletions
diff --git a/src/display/CMakeLists.txt b/src/display/CMakeLists.txt
index d4f8c16ff..0bf1d6e45 100644
--- a/src/display/CMakeLists.txt
+++ b/src/display/CMakeLists.txt
@@ -54,7 +54,6 @@ set(display_SRC
sp-canvas.cpp
sp-ctrlcurve.cpp
sp-ctrlline.cpp
- sp-ctrlpoint.cpp
sp-ctrlquadr.cpp
@@ -120,7 +119,6 @@ set(display_SRC
sp-canvas.h
sp-ctrlcurve.h
sp-ctrlline.h
- sp-ctrlpoint.h
sp-ctrlquadr.h
)
diff --git a/src/display/Makefile_insert b/src/display/Makefile_insert
index 20e498981..419852f7d 100644
--- a/src/display/Makefile_insert
+++ b/src/display/Makefile_insert
@@ -115,8 +115,6 @@ ink_common_sources += \
display/sp-ctrlcurve.h \
display/sp-ctrlline.cpp \
display/sp-ctrlline.h \
- display/sp-ctrlpoint.cpp \
- display/sp-ctrlpoint.h \
display/sp-ctrlquadr.cpp \
display/sp-ctrlquadr.h
diff --git a/src/display/guideline.cpp b/src/display/guideline.cpp
index 4b7ea59ab..820a61d4d 100644
--- a/src/display/guideline.cpp
+++ b/src/display/guideline.cpp
@@ -17,7 +17,7 @@
#include <2geom/coord.h>
#include <2geom/transforms.h>
#include "sp-canvas-util.h"
-#include "sp-ctrlpoint.h"
+#include "knot.h"
#include "guideline.h"
#include "display/cairo-utils.h"
@@ -25,6 +25,7 @@
#include "desktop.h"
#include "sp-namedview.h"
#include "display/sp-canvas.h"
+#include "display/sodipodi-ctrl.h"
#include "ui/control-manager.h"
using Inkscape::ControlManager;
@@ -36,6 +37,7 @@ static void sp_guideline_render(SPCanvasItem *item, SPCanvasBuf *buf);
static double sp_guideline_point(SPCanvasItem *item, Geom::Point p, SPCanvasItem **actual_item);
+static gboolean sp_guideline_origin_move(SPKnot *knot, Geom::Point *position, guint state, SPGuideLine *data);
static void sp_guideline_drawline (SPCanvasBuf *buf, gint x0, gint y0, gint x1, gint y1, guint32 rgba);
G_DEFINE_TYPE(SPGuideLine, sp_guideline, SP_TYPE_CANVAS_ITEM);
@@ -72,8 +74,8 @@ static void sp_guideline_destroy(SPCanvasItem *object)
SPGuideLine *gl = SP_GUIDELINE(object);
- if (gl->origin != NULL && SP_IS_CTRLPOINT(gl->origin)) {
- sp_canvas_item_destroy(gl->origin);
+ if (gl->origin != NULL && SP_IS_KNOT(gl->origin)) {
+ knot_unref(gl->origin);
} else {
// FIXME: This branch shouldn't be reached (although it seems to be harmless).
//g_error("Why can it be that gl->origin is not a valid SPCtrlPoint?\n");
@@ -179,14 +181,16 @@ static void sp_guideline_update(SPCanvasItem *item, Geom::Affine const &affine,
gl->affine = affine;
if (gl->locked) {
- sp_ctrlpoint_set_circle(gl->origin, false);
- sp_ctrlpoint_set_lenght(gl->origin, 6);
+ gl->origin->setStroke(0x0000ff88, 0x0000ff88, 0x0000ff88);
+ gl->origin->setShape(SP_CTRL_SHAPE_CROSS);
+ gl->origin->setSize(6);
} else {
- sp_ctrlpoint_set_circle(gl->origin, true);
- sp_ctrlpoint_set_lenght(gl->origin, 4);
+ gl->origin->setStroke(0xff000088, 0xff0000ff, 0xff0000ff);
+ gl->origin->setShape(SP_CTRL_SHAPE_CIRCLE);
+ gl->origin->setSize(4);
}
- sp_ctrlpoint_set_coords(gl->origin, gl->point_on_line);
- sp_canvas_item_request_update(SP_CANVAS_ITEM (gl->origin));
+ gl->origin->moveto(gl->point_on_line);
+ gl->origin->updateCtrl();
Geom::Point pol_transformed = gl->point_on_line*affine;
if (gl->is_horizontal()) {
@@ -219,12 +223,15 @@ static double sp_guideline_point(SPCanvasItem *item, Geom::Point p, SPCanvasItem
SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, char* label, Geom::Point point_on_line, Geom::Point normal)
{
SPCanvasItem *item = sp_canvas_item_new(parent, SP_TYPE_GUIDELINE, NULL);
- SPCanvasItem *origin = ControlManager::getManager().createControl(parent, Inkscape::CTRL_TYPE_ORIGIN);
- ControlManager::getManager().track(origin);
-
SPGuideLine *gl = SP_GUIDELINE(item);
- SPCtrlPoint *cp = SP_CTRLPOINT(origin);
- gl->origin = cp;
+ gl->origin = new SPKnot(SP_ACTIVE_DESKTOP, "No tip yet!! XXX");
+
+ gl->origin->setAnchor(SP_ANCHOR_CENTER);
+ gl->origin->setMode(SP_CTRL_MODE_COLOR);
+ gl->origin->setFill(0xffffff80, 0xffffffff, 0xffffff80);
+ gl->origin->moveto(point_on_line);
+ gl->origin->request_signal.connect(sigc::bind(sigc::ptr_fun(sp_guideline_origin_move), gl));
+ gl->origin->updateCtrl();
normal.normalize();
gl->label = label;
@@ -233,11 +240,18 @@ SPCanvasItem *sp_guideline_new(SPCanvasGroup *parent, char* label, Geom::Point p
gl->angle = tan( -gl->normal_to_line[Geom::X] / gl->normal_to_line[Geom::Y]);
sp_guideline_set_position(gl, point_on_line);
- sp_ctrlpoint_set_coords(cp, point_on_line);
-
return item;
}
+static gboolean sp_guideline_origin_move(SPKnot *knot, Geom::Point *position, guint state, SPGuideLine *gl)
+{
+ if(gl->locked) {
+ return true;
+ }
+ sp_guideline_set_position(gl, *position);
+ return false;
+}
+
void sp_guideline_set_label(SPGuideLine *gl, const char* label)
{
if (gl->label) {
@@ -271,8 +285,6 @@ void sp_guideline_set_normal(SPGuideLine *gl, Geom::Point normal_to_line)
void sp_guideline_set_color(SPGuideLine *gl, unsigned int rgba)
{
gl->rgba = rgba;
- sp_ctrlpoint_set_color(gl->origin, rgba);
-
sp_canvas_item_request_update(SP_CANVAS_ITEM(gl));
}
@@ -283,7 +295,6 @@ void sp_guideline_set_sensitive(SPGuideLine *gl, int sensitive)
void sp_guideline_delete(SPGuideLine *gl)
{
- //gtk_object_destroy(GTK_OBJECT(gl->origin));
sp_canvas_item_destroy(SP_CANVAS_ITEM(gl));
}
diff --git a/src/display/guideline.h b/src/display/guideline.h
index 778517f1d..143a57622 100644
--- a/src/display/guideline.h
+++ b/src/display/guideline.h
@@ -16,6 +16,7 @@
#include <2geom/point.h>
#include "sp-canvas-item.h"
+#include "knot.h"
#define SP_TYPE_GUIDELINE (sp_guideline_get_type())
#define SP_GUIDELINE(o) (G_TYPE_CHECK_INSTANCE_CAST((o), SP_TYPE_GUIDELINE, SPGuideLine))
@@ -27,7 +28,8 @@ struct SPGuideLine {
SPCanvasItem item;
Geom::Affine affine;
- SPCtrlPoint *origin; // unlike 'item', this is only held locally
+ //SPCtrlPoint *origin; // unlike 'item', this is only held locally
+ SPKnot *origin;
guint32 rgba;
diff --git a/src/display/sp-ctrlpoint.cpp b/src/display/sp-ctrlpoint.cpp
deleted file mode 100644
index 19dbbc130..000000000
--- a/src/display/sp-ctrlpoint.cpp
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Simple point
- *
- * Author:
- * Maximilian Albert <maximilian.albert@gmail.com>
- * Jon A. Cruz <jon@joncruz.org>
- *
- * Copyright (C) 2008 Maximilian Albert
- *
- * Released under GNU GPL
- */
-
-#include "sp-canvas-util.h"
-#include "sp-ctrlpoint.h"
-
-#ifdef HAVE_CONFIG_H
-# include "config.h"
-#endif
-#include <color.h>
-#include "display/cairo-utils.h"
-#include "display/sp-canvas.h"
-
-static void sp_ctrlpoint_destroy(SPCanvasItem *object);
-
-static void sp_ctrlpoint_update (SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags);
-static void sp_ctrlpoint_render (SPCanvasItem *item, SPCanvasBuf *buf);
-
-G_DEFINE_TYPE(SPCtrlPoint, sp_ctrlpoint, SP_TYPE_CANVAS_ITEM);
-
-static void sp_ctrlpoint_class_init(SPCtrlPointClass *klass)
-{
- SPCanvasItemClass *item_class = SP_CANVAS_ITEM_CLASS(klass);
-
- item_class->destroy = sp_ctrlpoint_destroy;
- item_class->update = sp_ctrlpoint_update;
- item_class->render = sp_ctrlpoint_render;
-}
-
-static void
-sp_ctrlpoint_init (SPCtrlPoint *ctrlpoint)
-{
- ctrlpoint->rgba = 0x0000ff7f;
- ctrlpoint->pt[Geom::X] = ctrlpoint->pt[Geom::Y] = 0.0;
- ctrlpoint->item=NULL;
- ctrlpoint->lenght = 4;
- ctrlpoint->is_circle = true;
-}
-
-static void sp_ctrlpoint_destroy(SPCanvasItem *object)
-{
- g_return_if_fail (object != NULL);
- g_return_if_fail (SP_IS_CTRLPOINT (object));
-
- SPCtrlPoint *ctrlpoint = SP_CTRLPOINT (object);
-
- ctrlpoint->item=NULL;
-
- if (SP_CANVAS_ITEM_CLASS(sp_ctrlpoint_parent_class)->destroy)
- SP_CANVAS_ITEM_CLASS(sp_ctrlpoint_parent_class)->destroy(object);
-}
-
-static void
-sp_ctrlpoint_render (SPCanvasItem *item, SPCanvasBuf *buf)
-{
- SPCtrlPoint *cp = SP_CTRLPOINT (item);
-
- if (!buf->ct)
- return;
-
- sp_canvas_prepare_buffer (buf);
-
- guint32 rgba = cp->rgba;
- cairo_set_source_rgba(buf->ct, SP_RGBA32_B_F(rgba), SP_RGBA32_G_F(rgba), SP_RGBA32_R_F(rgba), SP_RGBA32_A_F(rgba));
-
- cairo_set_line_width(buf->ct, 1);
- cairo_new_path(buf->ct);
-
- Geom::Point pt = cp->pt * cp->affine;
- if( cp->is_circle ) {
- cairo_arc(buf->ct, pt[Geom::X] - buf->rect.left(), pt[Geom::Y] - buf->rect.top(), cp->lenght/2.0, 0.0, 2 * M_PI);
- } else {
- cairo_rectangle(buf->ct, pt[Geom::X] - buf->rect.left() - cp->lenght/2.0, pt[Geom::Y] - buf->rect.top() - cp->lenght/2.0 , cp->lenght, cp->lenght);
- }
- cairo_stroke(buf->ct);
-}
-
-static void sp_ctrlpoint_update(SPCanvasItem *item, Geom::Affine const &affine, unsigned int flags)
-{
- SPCtrlPoint *cp = SP_CTRLPOINT(item);
-
- item->canvas->requestRedraw((int)item->x1, (int)item->y1, (int)item->x2, (int)item->y2);
-
- if (SP_CANVAS_ITEM_CLASS(sp_ctrlpoint_parent_class)->update) {
- SP_CANVAS_ITEM_CLASS(sp_ctrlpoint_parent_class)->update(item, affine, flags);
- }
-
- sp_canvas_item_reset_bounds (item);
-
- cp->affine = affine;
-
- Geom::Point pt = cp->pt * affine;
-
- item->x1 = pt[Geom::X] - cp->lenght;
- item->y1 = pt[Geom::Y] - cp->lenght;
- item->x2 = pt[Geom::X] + cp->lenght;
- item->y2 = pt[Geom::Y] + cp->lenght;
-
- item->canvas->requestRedraw((int)item->x1 - 15, (int)item->y1 - 15,
- (int)item->x1 + 15, (int)item->y1 + 15);
-}
-
-void
-sp_ctrlpoint_set_color (SPCtrlPoint *cp, guint32 rgba)
-{
- g_return_if_fail (cp != NULL);
- g_return_if_fail (SP_IS_CTRLPOINT (cp));
-
- if (rgba != cp->rgba) {
- SPCanvasItem *item;
- cp->rgba = rgba;
- item = SP_CANVAS_ITEM (cp);
- item->canvas->requestRedraw((int)item->x1, (int)item->y1, (int)item->x2, (int)item->y2);
- }
-}
-
-#define EPSILON 1e-6
-#define DIFFER(a,b) (fabs ((a) - (b)) > EPSILON)
-
-void
-sp_ctrlpoint_set_coords (SPCtrlPoint *cp, const gdouble x, const gdouble y)
-{
- g_return_if_fail (cp != NULL);
- g_return_if_fail (SP_IS_CTRLPOINT (cp));
-
- if (DIFFER (x, cp->pt[Geom::X]) || DIFFER (y, cp->pt[Geom::Y])) {
- cp->pt[Geom::X] = x;
- cp->pt[Geom::Y] = y;
- sp_canvas_item_request_update (SP_CANVAS_ITEM (cp));
- }
-}
-
-void
-sp_ctrlpoint_set_coords (SPCtrlPoint *cp, const Geom::Point pt)
-{
- sp_ctrlpoint_set_coords(cp, pt[Geom::X], pt[Geom::Y]);
-}
-
-void
-sp_ctrlpoint_set_lenght (SPCtrlPoint *cp, const double r)
-{
- cp->lenght = r;
-}
-
-void
-sp_ctrlpoint_set_circle (SPCtrlPoint *cp, const bool circle)
-{
- cp->is_circle = circle;
-}
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
diff --git a/src/display/sp-ctrlpoint.h b/src/display/sp-ctrlpoint.h
deleted file mode 100644
index 02e61caf0..000000000
--- a/src/display/sp-ctrlpoint.h
+++ /dev/null
@@ -1,54 +0,0 @@
-#ifndef SEEN_INKSCAPE_CTRLPOINT_H
-#define SEEN_INKSCAPE_CTRLPOINT_H
-
-/*
- * A simple point
- *
- * Author:
- * Maximilian Albert <maximilian.albert@gmail.com>
- *
- * Copyright (C) 2008 Maximilian Albert
- *
- * Released under GNU GPL
- */
-
-#include "sp-canvas-item.h"
-
-class SPItem;
-
-#define SP_TYPE_CTRLPOINT (sp_ctrlpoint_get_type ())
-#define SP_CTRLPOINT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SP_TYPE_CTRLPOINT, SPCtrlPoint))
-#define SP_IS_CTRLPOINT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SP_TYPE_CTRLPOINT))
-
-struct SPCtrlPoint : public SPCanvasItem {
- SPItem *item; // the item to which this line belongs in some sense; may be NULL for some users
- guint32 rgba;
- Geom::Point pt;
- Geom::Affine affine;
- double lenght;
- bool is_circle;
-};
-struct SPCtrlPointClass : public SPCanvasItemClass{};
-
-GType sp_ctrlpoint_get_type (void);
-
-void sp_ctrlpoint_set_color (SPCtrlPoint *cp, guint32 rgba);
-void sp_ctrlpoint_set_coords (SPCtrlPoint *cp, const gdouble x, const gdouble y);
-void sp_ctrlpoint_set_coords (SPCtrlPoint *cp, const Geom::Point pt);
-void sp_ctrlpoint_set_lenght (SPCtrlPoint *cp, const double r);
-void sp_ctrlpoint_set_circle (SPCtrlPoint *cp, const bool circle);
-
-
-
-#endif // SEEN_INKSCAPE_CTRLPOINT_H
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
diff --git a/src/sp-guide.cpp b/src/sp-guide.cpp
index 70c73b7e3..441c2e793 100644
--- a/src/sp-guide.cpp
+++ b/src/sp-guide.cpp
@@ -288,7 +288,6 @@ void SPGuide::showSPGuide()
{
for(std::vector<SPGuideLine *>::const_iterator it = this->views.begin(); it != this->views.end(); ++it) {
sp_canvas_item_show(SP_CANVAS_ITEM(*it));
- sp_canvas_item_show(SP_CANVAS_ITEM((*it)->origin));
}
}
@@ -311,7 +310,6 @@ void SPGuide::hideSPGuide()
{
for(std::vector<SPGuideLine *>::const_iterator it = this->views.begin(); it != this->views.end(); ++it) {
sp_canvas_item_hide(SP_CANVAS_ITEM(*it));
- sp_canvas_item_hide(SP_CANVAS_ITEM((*it)->origin));
}
}
diff --git a/src/ui/control-manager.cpp b/src/ui/control-manager.cpp
index 7a5620684..cedaea405 100644
--- a/src/ui/control-manager.cpp
+++ b/src/ui/control-manager.cpp
@@ -20,7 +20,6 @@
#include "display/sp-canvas-item.h"
#include "display/sp-ctrlline.h"
#include "display/sp-ctrlcurve.h"
-#include "display/sp-ctrlpoint.h"
#include "preferences.h"
using Inkscape::ControlFlags;
@@ -139,8 +138,6 @@ ControlManagerImpl::ControlManagerImpl(ControlManager &manager) :
_typeTable[CTRL_TYPE_NODE_SMOOTH] = SP_TYPE_CTRL;
_typeTable[CTRL_TYPE_NODE_SYMETRICAL] = SP_TYPE_CTRL;
- _typeTable[CTRL_TYPE_ORIGIN] = SP_TYPE_CTRLPOINT;
-
_typeTable[CTRL_TYPE_LINE] = SP_TYPE_CTRLLINE;
@@ -183,10 +180,6 @@ ControlManagerImpl::ControlManagerImpl(ControlManager &manager) :
_sizeTable[CTRL_TYPE_SHAPER] = std::vector<int>(sizes, sizes + (sizeof(sizes) / sizeof(sizes[0])));
}
{
- int sizes[] = {2, 3, 4, 7, 8, 9, 10};
- _sizeTable[CTRL_TYPE_ORIGIN] = std::vector<int>(sizes, sizes + (sizeof(sizes) / sizeof(sizes[0])));
- }
- {
int sizes[] = {5, 7, 9, 10, 11, 12, 13};
_sizeTable[CTRL_TYPE_NODE_AUTO] = std::vector<int>(sizes, sizes + (sizeof(sizes) / sizeof(sizes[0])));
_sizeTable[CTRL_TYPE_NODE_CUSP] = std::vector<int>(sizes, sizes + (sizeof(sizes) / sizeof(sizes[0])));
@@ -258,10 +251,6 @@ SPCanvasItem *ControlManagerImpl::createControl(SPCanvasGroup *parent, ControlTy
NULL);
break;
}
- case CTRL_TYPE_ORIGIN:
- item = sp_canvas_item_new(parent, SP_TYPE_CTRLPOINT,
- NULL);
- break;
case CTRL_TYPE_INVISIPOINT:
item = sp_canvas_item_new(parent, SP_TYPE_CTRL,
"shape", SP_CTRL_SHAPE_SQUARE,
@@ -297,18 +286,11 @@ void ControlManagerImpl::updateItem(SPCanvasItem *item)
if (item) {
double target = _sizeTable[item->ctrlType][_size - 1];
- if ((item->ctrlType == CTRL_TYPE_ORIGIN) && SP_IS_CTRLPOINT(item)) {
- if (SP_CTRLPOINT(item)->is_circle ) {
- sp_ctrlpoint_set_lenght(SP_CTRLPOINT(item), target );
- } else {
- sp_ctrlpoint_set_lenght(SP_CTRLPOINT(item), target + 2 );
- }
- } else {
- if (_sizeChangers.count(item->ctrlType) && _manager.isSelected(item)) {
- target += 2;
- }
- g_object_set(item, "size", target, NULL);
+ if (_sizeChangers.count(item->ctrlType) && _manager.isSelected(item)) {
+ target += 2;
}
+ g_object_set(item, "size", target, NULL);
+
sp_canvas_item_request_update(item);
}
}
diff --git a/src/ui/control-types.h b/src/ui/control-types.h
index 0bbf31144..1a0230324 100644
--- a/src/ui/control-types.h
+++ b/src/ui/control-types.h
@@ -26,7 +26,6 @@ enum ControlType {
CTRL_TYPE_ROTATE,
CTRL_TYPE_SIZER,
CTRL_TYPE_SHAPER,
- CTRL_TYPE_ORIGIN,
CTRL_TYPE_LINE,
CTRL_TYPE_NODE_AUTO,
CTRL_TYPE_NODE_CUSP,