baac642ac97243aa61d47273e5aad004e349f034
1 /** @file
2 * @brief New node tool with support for multiple path editing
3 */
4 /* Authors:
5 * Krzysztof KosiĆski <tweenk@gmail.com>
6 *
7 * Copyright (C) 2009 Authors
8 * Released under GNU GPL, read the file 'COPYING' for more information
9 */
11 #ifndef SEEN_UI_TOOL_NODE_TOOL_H
12 #define SEEN_UI_TOOL_NODE_TOOL_H
14 #include <memory>
15 #include <glib.h>
16 #include <sigc++/sigc++.h>
17 #include "event-context.h"
18 #include "forward.h"
19 #include "display/display-forward.h"
20 #include "ui/tool/node-types.h"
22 #define INK_TYPE_NODE_TOOL (ink_node_tool_get_type ())
23 #define INK_NODE_TOOL(obj) (GTK_CHECK_CAST ((obj), INK_TYPE_NODE_TOOL, InkNodeTool))
24 #define INK_NODE_TOOL_CLASS(klass) (GTK_CHECK_CLASS_CAST ((klass), INK_TYPE_NODE_TOOL, InkNodeToolClass))
25 #define INK_IS_NODE_TOOL(obj) (GTK_CHECK_TYPE ((obj), INK_TYPE_NODE_TOOL))
26 #define INK_IS_NODE_TOOL_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((klass), INK_TYPE_NODE_TOOL))
28 class InkNodeTool;
29 class InkNodeToolClass;
31 namespace Inkscape {
32 namespace UI {
33 class MultiPathManipulator;
34 class ControlPointSelection;
35 class Selector;
36 struct PathSharedData;
37 }
38 }
40 typedef std::auto_ptr<Inkscape::UI::MultiPathManipulator> MultiPathPtr;
41 typedef std::auto_ptr<Inkscape::UI::ControlPointSelection> CSelPtr;
42 typedef std::auto_ptr<Inkscape::UI::Selector> SelectorPtr;
43 typedef std::auto_ptr<Inkscape::UI::PathSharedData> PathSharedDataPtr;
45 struct InkNodeTool : public SPEventContext
46 {
47 sigc::connection _selection_changed_connection;
48 sigc::connection _mouseover_changed_connection;
49 sigc::connection _selection_modified_connection;
50 Inkscape::MessageContext *_node_message_context;
51 SPItem *flashed_item;
52 Inkscape::Display::TemporaryItem *flash_tempitem;
53 CSelPtr _selected_nodes;
54 MultiPathPtr _multipath;
55 SelectorPtr _selector;
56 PathSharedDataPtr _path_data;
57 SPCanvasGroup *_transform_handle_group;
58 SPItem *_last_over;
60 unsigned cursor_drag : 1;
61 unsigned show_outline : 1;
62 unsigned live_outline : 1;
63 unsigned live_objects : 1;
64 unsigned show_path_direction : 1;
65 unsigned show_transform_handles : 1;
66 unsigned single_node_transform_handles : 1;
67 unsigned edit_clipping_paths : 1;
68 unsigned edit_masks : 1;
69 };
71 struct InkNodeToolClass {
72 SPEventContextClass parent_class;
73 };
75 GType ink_node_tool_get_type (void);
77 #endif
79 /*
80 Local Variables:
81 mode:c++
82 c-file-style:"stroustrup"
83 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
84 indent-tabs-mode:nil
85 fill-column:99
86 End:
87 */
88 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=99 :