// SPDX-License-Identifier: GPL-2.0-or-later /** @file * @brief New node tool with support for multiple path editing */ /* Authors: * Krzysztof KosiƄski * * Copyright (C) 2009 Authors * Released under GNU GPL v2+, read the file 'COPYING' for more information. */ #ifndef SEEN_UI_TOOL_NODE_TOOL_H #define SEEN_UI_TOOL_NODE_TOOL_H #include #include #include "ui/tools/tool-base.h" // we need it to call it from Live Effect #include "selection.h" namespace Inkscape { namespace Display { class TemporaryItem; } namespace UI { class MultiPathManipulator; class ControlPointSelection; class Selector; class ControlPoint; struct PathSharedData; } } struct SPCanvasGroup; #define INK_NODE_TOOL(obj) (dynamic_cast((Inkscape::UI::Tools::ToolBase*)obj)) #define INK_IS_NODE_TOOL(obj) (dynamic_cast((const Inkscape::UI::Tools::ToolBase*)obj)) namespace Inkscape { namespace UI { namespace Tools { class NodeTool : public ToolBase { public: NodeTool(); ~NodeTool() override; Inkscape::UI::ControlPointSelection* _selected_nodes; Inkscape::UI::MultiPathManipulator* _multipath; std::vector _helperpath_tmpitem; bool edit_clipping_paths; bool edit_masks; static const std::string prefsPath; void setup() override; void finish() override; void set(const Inkscape::Preferences::Entry& val) override; bool root_handler(GdkEvent* event) override; const std::string& getPrefsPath() override; boost::ptr_map _shape_editors; private: sigc::connection _selection_changed_connection; sigc::connection _mouseover_changed_connection; sigc::connection _sizeUpdatedConn; SPItem *flashed_item; Inkscape::Display::TemporaryItem *flash_tempitem; Inkscape::UI::Selector* _selector; Inkscape::UI::PathSharedData* _path_data; SPCanvasGroup *_transform_handle_group; SPItem *_last_over; bool cursor_drag; bool show_handles; bool show_outline; bool live_outline; bool live_objects; bool show_path_direction; bool show_transform_handles; bool single_node_transform_handles; std::vector _current_selection; std::vector _previous_selection; void selection_changed(Inkscape::Selection *sel); void select_area(Geom::Rect const &sel, GdkEventButton *event); void select_point(Geom::Point const &sel, GdkEventButton *event); void mouseover_changed(Inkscape::UI::ControlPoint *p); void update_tip(GdkEvent *event); void handleControlUiStyleChange(); }; void sp_update_helperpath(); } } } #endif /* 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 :