diff --git a/src/gradient-drag.h b/src/gradient-drag.h
index 72e9ce0dd5a31d30d6b87f4ad8becf0306edaf03..3f12cc09c50e2a86dda7b3602a4437c036ec134f 100644 (file)
--- a/src/gradient-drag.h
+++ b/src/gradient-drag.h
*
* Authors:
* bulia byak <bulia@users.sf.net>
+ * Johan Engelen <j.b.c.engelen@ewi.utwente.nl>
*
+ * Copyright (C) 2007 Johan Engelen
* Copyright (C) 2005 Authors
*
* Released under GNU GPL, read the file 'COPYING' for more information
}
};
-struct GrDrag;
+class GrDrag;
/**
This class holds together a visible on-canvas knot and a list of draggables that need to
void updateKnotShape();
void updateTip();
+
+ void select();
+ void deselect();
void moveThisToDraggable (SPItem *item, guint point_type, guint point_i, bool fill_or_stroke, bool write_repr);
void moveOtherToDraggable (SPItem *item, guint point_type, guint point_i, bool fill_or_stroke, bool write_repr);
- void updateDependencies (bool write_repr);
+ void updateMidstopDependencies (GrDraggable *draggable, bool write_repr);
+ void updateDependencies (bool write_repr);
bool mayMerge (GrDragger *other);
bool mayMerge (GrDraggable *da2);
This is the root class of the gradient dragging machinery. It holds lists of GrDraggers
and of lines (simple canvas items). It also remembers one of the draggers as selected.
*/
-struct GrDrag {
- GrDrag(SPDesktop *desktop);
- ~GrDrag();
+class GrDrag {
+public: // FIXME: make more of this private!
- void addLine (NR::Point p1, NR::Point p2, guint32 rgba);
+ GrDrag(SPDesktop *desktop);
+ ~GrDrag();
- void addDragger (GrDraggable *draggable);
+ // especially the selection must be private, fix gradient-context to remove direct access to it
+ GList *selected; // list of GrDragger*
+ void setSelected (GrDragger *dragger, bool add_to_selection = false, bool override = true);
+ void setDeselected (GrDragger *dragger);
+ void deselectAll();
+
+ void deleteSelected (bool just_one = false);
+
+ bool keep_selection;
+
+ GrDragger *getDraggerFor (SPItem *item, guint point_type, guint point_i, bool fill_or_stroke);
- void addDraggersRadial (SPRadialGradient *rg, SPItem *item, bool fill_or_stroke);
- void addDraggersLinear (SPLinearGradient *lg, SPItem *item, bool fill_or_stroke);
+ void grabKnot (SPItem *item, guint point_type, guint point_i, bool fill_or_stroke, gint x, gint y, guint32 etime);
- GrDragger *selected;
- void setSelected (GrDragger *dragger);
+ bool local_change;
- GrDragger *getDraggerFor (SPItem *item, guint point_type, guint point_i, bool fill_or_stroke);
+ SPDesktop *desktop;
- void grabKnot (SPItem *item, guint point_type, guint point_i, bool fill_or_stroke, gint x, gint y, guint32 etime);
+ // lists of edges of selection bboxes, to snap draggers to
+ std::vector<double> hor_levels;
+ std::vector<double> vert_levels;
- bool local_change;
+ GList *draggers;
+ GSList *lines;
- SPDesktop *desktop;
- Inkscape::Selection *selection;
- sigc::connection sel_changed_connection;
- sigc::connection sel_modified_connection;
+ void updateDraggers ();
+ void updateLines ();
+ void updateLevels ();
- sigc::connection style_set_connection;
- sigc::connection style_query_connection;
+ void selected_move (double x, double y);
+ void selected_move_screen (double x, double y);
- // lists of edges of selection bboxes, to snap draggers to
- std::vector<double> hor_levels;
- std::vector<double> vert_levels;
+ void select_next ();
+ void select_prev ();
- GList *draggers;
- GSList *lines;
+ void selected_reverse_vector ();
- void updateDraggers ();
- void updateLines ();
- void updateLevels ();
+private:
+ void deselect_all();
- void selected_move (double x, double y);
- void selected_move_screen (double x, double y);
+ void addLine (NR::Point p1, NR::Point p2, guint32 rgba);
- void select_next ();
- void select_prev ();
+ void addDragger (GrDraggable *draggable);
- void selected_reverse_vector ();
+ void addDraggersRadial (SPRadialGradient *rg, SPItem *item, bool fill_or_stroke);
+ void addDraggersLinear (SPLinearGradient *lg, SPItem *item, bool fill_or_stroke);
+
+ Inkscape::Selection *selection;
+ sigc::connection sel_changed_connection;
+ sigc::connection sel_modified_connection;
+
+ sigc::connection style_set_connection;
+ sigc::connection style_query_connection;
};
#endif