Inkscape
Vector Graphics Editor
|
#include <lpe-tool.h>
Public Member Functions | |
LpeTool (SPDesktop *desktop) | |
~LpeTool () override | |
void | switch_mode (LivePathEffect::EffectType type) |
void | reset_limiting_bbox () |
void | create_measuring_items (Selection *selection=nullptr) |
void | delete_measuring_items () |
void | update_measuring_items () |
void | show_measuring_info (bool show=true) |
![]() | |
PenTool (SPDesktop *desktop, std::string &&prefs_path="/tools/freehand/pen", std::string &&cursor_filename="pen.svg") | |
~PenTool () override | |
void | nextParaxialDirection (Geom::Point const &pt, Geom::Point const &origin, guint state) |
void | setPolylineMode () |
bool | hasWaitingLPE () |
void | waitForLPEMouseClicks (Inkscape::LivePathEffect::EffectType effect_type, unsigned int num_clicks, bool use_polylines=true) |
![]() | |
FreehandBase (SPDesktop *desktop, std::string &&prefs_path, std::string &&cursor_filename) | |
~FreehandBase () override | |
std::optional< Geom::Point > | red_curve_get_last_point () const |
void | onSelectionModified () |
![]() | |
ToolBase (SPDesktop *desktop, std::string &&prefs_path, std::string &&cursor_filename, bool uses_snap=true) | |
virtual | ~ToolBase () |
virtual void | menu_popup (CanvasEvent const &event, SPObject *obj=nullptr) |
Create popup menu and tell Gtk to show it. | |
virtual bool | can_undo (bool redo=false) |
virtual bool | is_ready () const |
virtual void | switching_away (std::string const &new_tool) |
std::string const & | getPrefsPath () const |
void | enableSelectionCue (bool enable=true) |
Enables/disables the ToolBase's SelCue. | |
MessageContext * | defaultMessageContext () const |
SPDesktop * | getDesktop () const |
SPGroup * | currentLayer () const |
void | set_last_active_tool (Glib::ustring last_tool) |
const Glib::ustring & | get_last_active_tool () const |
bool | start_root_handler (CanvasEvent const &event) |
Handles snapping events for all tools and then passes to tool_root_handler. | |
bool | tool_root_handler (CanvasEvent const &event) |
Calls the right tool's event handler, depending on the selected tool and state. | |
bool | start_item_handler (SPItem *item, CanvasEvent const &event) |
Starts handling item snapping and pass to virtual_item_handler afterwards. | |
bool | virtual_item_handler (SPItem *item, CanvasEvent const &event) |
bool | is_panning () const |
True if we're panning with any method (space bar, middle-mouse, right-mouse+Ctrl) | |
bool | is_space_panning () const |
True if we're panning with the space bar. | |
void | snap_delay_handler (gpointer item, gpointer item2, MotionEvent const &event, DelayedSnapEvent::Origin origin) |
Analyses the current event, calculates the mouse speed, turns snapping off (temporarily) if the mouse speed is above a threshold, and stores the current event such that it can be re-triggered when needed (re-triggering is controlled by a timeout). | |
void | process_delayed_snap_event () |
When the delayed snap event timer expires, this method will be called and will re-inject the last motion event in an appropriate place, with snapping being turned on again. | |
void | discard_delayed_snap_event () |
If a delayed snap event has been scheduled, this function will cancel it. | |
void | set_cursor (std::string filename) |
Sets the current cursor to the given filename. | |
void | use_cursor (Glib::RefPtr< Gdk::Cursor > cursor) |
Set the cursor to this specific one, don't remember it. | |
Glib::RefPtr< Gdk::Cursor > | get_cursor (Gtk::Widget &widget, std::string const &filename) const |
Returns the Gdk Cursor for the given filename. | |
void | use_tool_cursor () |
Uses the saved cursor, based on the saved filename. | |
void | enableGrDrag (bool enable=true) |
bool | deleteSelectedDrag (bool just_one) |
Delete a selected GrDrag point. | |
bool | hasGradientDrag () const |
Return true if there is a gradient drag. | |
GrDrag * | get_drag () |
Protected Member Functions | |
void | set (Preferences::Entry const &val) override |
Called by our pref_observer if a preference has been changed. | |
bool | root_handler (CanvasEvent const &event) override |
bool | item_handler (SPItem *item, CanvasEvent const &event) override |
Handles item specific events. | |
![]() | |
void | set (Inkscape::Preferences::Entry const &val) override |
Callback that sets key to value in pen context. | |
bool | root_handler (CanvasEvent const &event) override |
Callback to handle all pen events. | |
bool | item_handler (SPItem *item, CanvasEvent const &event) override |
Handles item specific events. | |
![]() | |
void | _attachSelection () |
![]() | |
void | setup_for_drag_start (ButtonPressEvent const &ev) |
void | saveDragOrigin (Geom::Point const &pos) |
bool | checkDragMoved (Geom::Point const &pos) |
Analyse the current position and return true once it has moved farther than tolerance from the drag origin (indicating they intend to move the object, not click). | |
void | grabCanvasEvents (EventMask mask=EventType::KEY_PRESS|EventType::BUTTON_RELEASE|EventType::MOTION|EventType::BUTTON_PRESS) |
Grab events from the Canvas Catchall. | |
void | ungrabCanvasEvents () |
Ungrab events from the Canvas Catchall. | |
bool | sp_event_context_knot_mouseover () const |
Returns true if we're hovering above a knot (needed because we don't want to pre-snap in that case). | |
void | set_high_motion_precision (bool high_precision=true) |
Enable (or disable) high precision for motion events. | |
Private Member Functions | |
void | selection_changed (Selection *selection) |
Callback that processes the "changed" signal on the selection; destroys old and creates new nodepath and reassigns listeners to the new selected item's repr. | |
Private Attributes | |
std::unique_ptr< ShapeEditor > | shape_editor |
CanvasItemPtr< CanvasItemRect > | canvas_bbox |
std::unordered_map< SPPath *, CanvasItemPtr< CanvasItemText > > | measuring_items |
sigc::scoped_connection | sel_changed_connection |
Additional Inherited Members | |
![]() | |
enum | Mode { MODE_CLICK , MODE_DRAG } |
enum | State { POINT , CONTROL , CLOSE , STOP , DEAD } |
![]() | |
static constexpr std::array< CanvasItemCtrlType, 4 > | ctrl_types |
![]() | |
uint32_t | red_color = 0xff00007f |
uint32_t | blue_color = 0x0000ff7f |
uint32_t | green_color = 0x00ff007f |
uint32_t | highlight_color = 0x0000007f |
![]() | |
Glib::RefPtr< Gdk::Cursor > | _cursor |
std::string | _cursor_filename = "select.svg" |
std::string | _cursor_default = "select.svg" |
Geom::IntPoint | xyp |
where drag started | |
bool | dragging = false |
are we dragging? | |
int | tolerance = 0 |
bool | within_tolerance = false |
are we still within tolerance of origin | |
bool | _button1on = false |
bool | _button2on = false |
bool | _button3on = false |
SPItem * | item_to_select = nullptr |
the item where mouse_press occurred, to be selected if this is a click not drag | |
SPDesktop * | _desktop = nullptr |
Util::ActionAccel | _acc_undo |
Util::ActionAccel | _acc_redo |
Util::ActionAccel | _acc_quick_preview |
Util::ActionAccel | _acc_quick_zoom |
Util::ActionAccel | _acc_quick_pan |
Definition at line 42 of file lpe-tool.h.
Inkscape::UI::Tools::LpeTool::LpeTool | ( | SPDesktop * | desktop | ) |
Definition at line 55 of file lpe-tool.cpp.
References Inkscape::Selection::connectChanged(), create_measuring_items(), desktop, Inkscape::UI::Tools::ToolBase::enableSelectionCue(), Inkscape::Preferences::get(), SPDesktop::getSelection(), Inkscape::LivePathEffect::INVALID_LPE, item, reset_limiting_bbox(), sel_changed_connection, Inkscape::UI::Tools::FreehandBase::selection, selection_changed(), shape_editor, Inkscape::ObjectSet::singleItem(), and switch_mode().
|
overridedefault |
void Inkscape::UI::Tools::LpeTool::create_measuring_items | ( | Selection * | selection = nullptr | ) |
Definition at line 286 of file lpe-tool.cpp.
References Inkscape::Util::Unit::abbr, arc_length(), Inkscape::Util::Quantity::convert(), Inkscape::ustring::format_classic(), Inkscape::Preferences::get(), Inkscape::Util::UnitTable::get(), item, Inkscape::ObjectSet::items(), Geom::length(), and Inkscape::UI::Tools::set_pos_and_anchor().
Referenced by LpeTool().
void Inkscape::UI::Tools::LpeTool::delete_measuring_items | ( | ) |
Definition at line 328 of file lpe-tool.cpp.
|
overrideprotectedvirtual |
Handles item specific events.
Gets called from Gdk.
Only reacts to right mouse button at the moment.
Reimplemented from Inkscape::UI::Tools::ToolBase.
Definition at line 102 of file lpe-tool.cpp.
References Inkscape::UI::Tools::ToolBase::_desktop, Inkscape::Selection::add(), Inkscape::ObjectSet::clear(), SPDesktop::getSelection(), Inkscape::inspect_event(), item, Inkscape::UI::Tools::PenTool::item_handler(), and Inkscape::UI::Tools::FreehandBase::selection.
void Inkscape::UI::Tools::LpeTool::reset_limiting_bbox | ( | ) |
Definition at line 251 of file lpe-tool.cpp.
References Inkscape::Preferences::get(), and Inkscape::UI::Tools::lpetool_get_limiting_bbox_corners().
Referenced by LpeTool().
|
overrideprotectedvirtual |
Reimplemented from Inkscape::UI::Tools::FreehandBase.
Definition at line 127 of file lpe-tool.cpp.
References Inkscape::UI::Tools::ToolBase::_desktop, Inkscape::LivePathEffect::Effect::acceptsNumClicks(), Inkscape::Preferences::get(), SPDesktop::getSelection(), Inkscape::UI::Tools::PenTool::hasWaitingLPE(), Inkscape::inspect_event(), lpesubtools, mode, Inkscape::UI::Tools::PenTool::root_handler(), Inkscape::UI::Tools::ToolBase::saveDragOrigin(), Inkscape::UI::Tools::FreehandBase::selection, SubtoolEntry::type, and Inkscape::UI::Tools::PenTool::waitForLPEMouseClicks().
|
private |
Callback that processes the "changed" signal on the selection; destroys old and creates new nodepath and reassigns listeners to the new selected item's repr.
Definition at line 88 of file lpe-tool.cpp.
References Inkscape::UI::Tools::FreehandBase::selection, shape_editor, and Inkscape::ObjectSet::singleItem().
Referenced by LpeTool().
|
overrideprotectedvirtual |
Called by our pref_observer if a preference has been changed.
Reimplemented from Inkscape::UI::Tools::ToolBase.
Definition at line 94 of file lpe-tool.cpp.
References Inkscape::Preferences::get(), Inkscape::Preferences::Entry::getEntryName(), Inkscape::UI::Tools::PenTool::mode, Inkscape::UI::Tools::PenTool::MODE_DRAG, and Inkscape::Preferences::setString().
void Inkscape::UI::Tools::LpeTool::show_measuring_info | ( | bool | show = true | ) |
Definition at line 361 of file lpe-tool.cpp.
void Inkscape::UI::Tools::LpeTool::switch_mode | ( | LivePathEffect::EffectType | type | ) |
Definition at line 216 of file lpe-tool.cpp.
References index, Inkscape::UI::Tools::lpetool_mode_to_index(), and mode.
Referenced by LpeTool().
void Inkscape::UI::Tools::LpeTool::update_measuring_items | ( | ) |
Definition at line 333 of file lpe-tool.cpp.
References Inkscape::Util::Unit::abbr, arc_length(), Inkscape::Util::Quantity::convert(), SPShape::curve(), Inkscape::ustring::format_classic(), Inkscape::Preferences::get(), Inkscape::Util::UnitTable::get(), Geom::length(), Geom::paths_to_pw(), and Inkscape::UI::Tools::set_pos_and_anchor().
|
private |
Definition at line 66 of file lpe-tool.h.
|
private |
Definition at line 68 of file lpe-tool.h.
LivePathEffect::EffectType Inkscape::UI::Tools::LpeTool::mode = LivePathEffect::BEND_PATH |
Definition at line 55 of file lpe-tool.h.
Referenced by root_handler().
|
private |
Definition at line 70 of file lpe-tool.h.
Referenced by LpeTool().
|
private |
Definition at line 65 of file lpe-tool.h.
Referenced by LpeTool(), and selection_changed().