diff options
| author | Martin Owens <doctormo@gmail.com> | 2015-12-10 05:43:23 +0000 |
|---|---|---|
| committer | Martin Owens <doctormo@gmail.com> | 2015-12-10 05:43:23 +0000 |
| commit | 1b5e5271ae41e3ab4e2d352118e66ccafc608a6f (patch) | |
| tree | fdb7bf33ae747cebb9428612bbd998723eb28aa6 /src | |
| parent | Remove unused header file. (diff) | |
| download | inkscape-1b5e5271ae41e3ab4e2d352118e66ccafc608a6f.tar.gz inkscape-1b5e5271ae41e3ab4e2d352118e66ccafc608a6f.zip | |
Remove CtrlPoint and replace with SPKnot
(bzr r14523)
Diffstat (limited to 'src')
| -rw-r--r-- | src/display/CMakeLists.txt | 2 | ||||
| -rw-r--r-- | src/display/Makefile_insert | 2 | ||||
| -rw-r--r-- | src/display/guideline.cpp | 49 | ||||
| -rw-r--r-- | src/display/guideline.h | 4 | ||||
| -rw-r--r-- | src/display/sp-ctrlpoint.cpp | 169 | ||||
| -rw-r--r-- | src/display/sp-ctrlpoint.h | 54 | ||||
| -rw-r--r-- | src/sp-guide.cpp | 2 | ||||
| -rw-r--r-- | src/ui/control-manager.cpp | 26 | ||||
| -rw-r--r-- | src/ui/control-types.h | 1 |
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, |
