index 01a2b6cbf5bbc3c756c7d812252e044d69f0508d..58907ea96e0782bc72f88ffd1e52b5cf7e9e3a2b 100644 (file)
#include <2geom/matrix.h>
#include <boost/shared_ptr.hpp>
#include <boost/weak_ptr.hpp>
-#include "display/display-forward.h"
#include "forward.h"
#include "ui/tool/node.h"
#include "ui/tool/manipulator.h"
struct SPCanvasItem;
+struct SPCurve;
namespace Inkscape {
+namespace XML { class Node; }
+
namespace UI {
class PathManipulator;
class PathManipulatorObserver;
class CurveDragPoint;
class PathCanvasGroups;
+class MultiPathManipulator;
+class Node;
+class Handle;
struct PathSharedData {
NodeSharedData node_data;
public:
typedef SPPath *ItemType;
- PathManipulator(PathSharedData const &data, SPPath *path,
- Geom::Matrix const &edit_trans, guint32 outline_color);
+ PathManipulator(MultiPathManipulator &mpm, SPPath *path, Geom::Matrix const &edit_trans,
+ guint32 outline_color, Glib::ustring lpe_key);
~PathManipulator();
virtual bool event(GdkEvent *);
SPPath *item() { return _path; }
void selectSubpaths();
- void selectAll();
- void selectArea(Geom::Rect const &);
- void shiftSelection(int dir);
- void linearGrow(int dir);
- void spatialGrow(int dir);
- void invertSelection();
void invertSelectionInSubpaths();
void insertNodes();
- void weldNodes(NodeList::iterator const &preserve_pos = NodeList::iterator());
+ void duplicateNodes();
+ void weldNodes(NodeList::iterator preserve_pos = NodeList::iterator());
void weldSegments();
void breakNodes();
void deleteNodes(bool keep_shape = true);
void deleteSegments();
- void reverseSubpaths();
+ void reverseSubpaths(bool selected_only);
void setSegmentType(SegmentType);
+ void scaleHandle(Node *n, int which, int dir, bool pixel);
+ void rotateHandle(Node *n, int which, int dir, bool pixel);
+
void showOutline(bool show);
void showHandles(bool show);
void showPathDirection(bool show);
+ void setLiveOutline(bool set);
+ void setLiveObjects(bool set);
void setControlsTransform(Geom::Matrix const &);
+ void hideDragPoint();
+ MultiPathManipulator &mpm() { return _multi_path_manipulator; }
NodeList::iterator subdivideSegment(NodeList::iterator after, double t);
+ NodeList::iterator extremeNode(NodeList::iterator origin, bool search_selected,
+ bool search_unselected, bool closest);
+
+ // this is necessary for Tab-selection in MultiPathManipulator
+ SubpathList &subpathList() { return _subpaths; }
static bool is_item_type(void *item);
private:
void _createControlPointsFromGeometry();
void _createGeometryFromControlPoints();
+ unsigned _deleteStretch(NodeList::iterator first, NodeList::iterator last, bool keep_shape);
std::string _createTypeString();
void _updateOutline();
//void _setOutline(Geom::PathVector const &);
-
- void _attachNodeHandlers(Node *n);
- void _removeNodeHandlers(Node *n);
+ void _getGeometry();
+ void _setGeometry();
+ Glib::ustring _nodetypesKey();
+ Inkscape::XML::Node *_getXMLNode();
void _selectionChanged(SelectableControlPoint *p, bool selected);
bool _nodeClicked(Node *, GdkEventButton *);
void _handleGrabbed();
bool _handleClicked(Handle *, GdkEventButton *);
void _handleUngrabbed();
+
void _externalChange(unsigned type);
void _removeNodesFromSelection();
void _commit(Glib::ustring const &annotation);
+ void _commit(Glib::ustring const &annotation, gchar const *key);
void _updateDragPoint(Geom::Point const &);
void _updateOutlineOnZoomChange();
double _getStrokeTolerance();
+ Handle *_chooseHandle(Node *n, int which);
SubpathList _subpaths;
- PathSharedData const &_path_data;
+ MultiPathManipulator &_multi_path_manipulator;
SPPath *_path;
SPCurve *_spcurve; // in item coordinates
SPCanvasItem *_outline;
bool _show_handles;
bool _show_outline;
bool _show_path_direction;
+ bool _live_outline;
+ bool _live_objects;
+ Glib::ustring _lpe_key;
friend class PathManipulatorObserver;
friend class CurveDragPoint;
+ friend class Node;
+ friend class Handle;
};
} // namespace UI
fill-column:99
End:
*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :
+// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :