Inkscape
Vector Graphics Editor
Loading...
Searching...
No Matches
SPKnot Class Reference

Desktop-bound visual control object. More...

#include <knot.h>

Public Member Functions

 SPKnot (SPDesktop *desktop, char const *tip, Inkscape::CanvasItemCtrlType type, Glib::ustring const &name="unknown")
 
virtual ~SPKnot ()
 
 SPKnot (SPKnot const &)=delete
 
SPKnotoperator= (SPKnot const &)=delete
 
void setSize (Inkscape::HandleSize size)
 
void setAnchor (unsigned int i)
 
void setAngle (double i)
 
void setImage (unsigned char *normal, unsigned char *mouseover, unsigned char *dragging, unsigned char *selected)
 
void setCursor (SPKnotStateType type, Glib::RefPtr< Gdk::Cursor > cursor)
 
void setTip (Glib::ustring &&tip)
 
void show ()
 Show knot on its canvas.
 
void hide ()
 Hide knot on its canvas.
 
void setFlag (unsigned int flag, bool set)
 Set flag in knot, with side effects.
 
void updateCtrl ()
 Update knot's control state.
 
void requestPosition (Geom::Point const &pos, unsigned int state)
 Request or set new position for knot.
 
void startDragging (Geom::Point const &p, Geom::IntPoint const &xy, uint32_t etime)
 Update knot for dragging and tell canvas an item was grabbed.
 
void setPosition (Geom::Point const &p, unsigned int state)
 Move knot to new position and emits "moved" signal.
 
void moveto (Geom::Point const &p)
 Move knot to new position, without emitting a MOVED signal.
 
void selectKnot (bool select)
 Select knot.
 
Geom::Point position () const
 Returns position of knot.
 
bool eventHandler (Inkscape::CanvasEvent const &event)
 Event handler (from CanvasItems).
 
bool is_visible () const
 
bool is_selected () const
 
bool is_mouseover () const
 
bool is_dragging () const
 
bool is_grabbed () const
 
void handler_request_position (Inkscape::MotionEvent const &event)
 

Static Public Member Functions

static void ref (SPKnot *knot)
 
static void unref (SPKnot *knot)
 

Public Attributes

SPDesktopdesktop = nullptr
 Desktop we are on.
 
CanvasItemPtr< Inkscape::CanvasItemCtrlctrl
 Our CanvasItemCtrl.
 
SPItemowner = nullptr
 Optional Owner Item.
 
SPItemsub_owner = nullptr
 Optional SubOwner Item.
 
unsigned int flags = SP_KNOT_VISIBLE
 
Inkscape::HandleSize _size = Inkscape::HandleSize::NORMAL
 Always square.
 
bool size_set = false
 Use default size unless explicitly set.
 
double angle = 0.0
 Angle of mesh handle.
 
bool is_lpe = false
 is lpe knot.
 
Geom::Point pos
 Our desktop coordinates.
 
Geom::Point grabbed_rel_pos
 Grabbed relative position.
 
Geom::Point drag_origin
 Origin of drag.
 
SPAnchorType anchor = SP_ANCHOR_CENTER
 Anchor.
 
bool grabbed = false
 
bool moved = false
 
Geom::IntPoint xyp
 Where drag started.
 
int tolerance = 0
 
bool within_tolerance = false
 
bool transform_escaped = false
 
Inkscape::CanvasItemCtrlShape shape = Inkscape::CANVAS_ITEM_CTRL_SHAPE_SQUARE
 Shape type.
 
bool shape_set = false
 Use default shape unless explicitly set.
 
unsigned char * image [SP_KNOT_VISIBLE_STATES]
 
Glib::RefPtr< Gdk::Cursor > _cursors [SP_KNOT_VISIBLE_STATES]
 
sigc::scoped_connection _event_connection
 
double pressure = 0.0
 The tablet pen pressure when the knot is being dragged.
 
sigc::signal< void(SPKnot *, unsigned int)> click_signal
 
sigc::signal< void(SPKnot *, unsigned int)> doubleclicked_signal
 
sigc::signal< void(SPKnot *, unsigned int)> mousedown_signal
 
sigc::signal< void(SPKnot *, unsigned int)> grabbed_signal
 
sigc::signal< void(SPKnot *, unsigned int)> ungrabbed_signal
 
sigc::signal< void(SPKnot *, Geom::Point const &, unsigned int)> moved_signal
 
sigc::signal< bool(SPKnot *, Inkscape::CanvasEvent const &)> event_signal
 
sigc::signal< bool(SPKnot *, Geom::Point *, unsigned int)> request_signal
 

Private Member Functions

void _setCtrlState ()
 Set knot control state (dragging/mouseover/normal).
 

Private Attributes

Glib::ustring _tip
 
int ref_count = 1
 

Detailed Description

Desktop-bound visual control object.

A knot is a draggable object, with callbacks to change something by dragging it, visually represented by a canvas item (mostly square).

See also KnotHolderEntity. See also ControlPoint (which does the same kind of things).

Definition at line 50 of file knot.h.

Constructor & Destructor Documentation

◆ SPKnot() [1/2]

SPKnot::SPKnot ( SPDesktop desktop,
char const *  tip,
Inkscape::CanvasItemCtrlType  type,
Glib::ustring const &  name = "unknown" 
)

◆ ~SPKnot()

SPKnot::~SPKnot ( )
virtual

Definition at line 74 of file knot.cpp.

References ctrl, and knot_deleted_callback().

◆ SPKnot() [2/2]

SPKnot::SPKnot ( SPKnot const &  )
delete

Member Function Documentation

◆ _setCtrlState()

void SPKnot::_setCtrlState ( )
private

Set knot control state (dragging/mouseover/normal).

Definition at line 402 of file knot.cpp.

References ctrl, flags, SP_KNOT_DRAGGING, SP_KNOT_MOUSEOVER, and SP_KNOT_SELECTED.

Referenced by setFlag(), and updateCtrl().

◆ eventHandler()

◆ handler_request_position()

◆ hide()

◆ is_dragging()

bool SPKnot::is_dragging ( ) const
inline

Definition at line 170 of file knot.h.

References flags, and SP_KNOT_DRAGGING.

◆ is_grabbed()

◆ is_mouseover()

bool SPKnot::is_mouseover ( ) const
inline

Definition at line 169 of file knot.h.

References flags, and SP_KNOT_MOUSEOVER.

Referenced by KnotHolder::knot_mouseover().

◆ is_selected()

bool SPKnot::is_selected ( ) const
inline

◆ is_visible()

bool SPKnot::is_visible ( ) const
inline

Definition at line 167 of file knot.h.

References flags, and SP_KNOT_VISIBLE.

◆ moveto()

◆ operator=()

SPKnot & SPKnot::operator= ( SPKnot const &  )
delete

◆ position()

◆ ref()

static void SPKnot::ref ( SPKnot knot)
inlinestatic

Definition at line 175 of file knot.h.

References ref_count.

Referenced by Inkscape::UI::Tools::cc_generic_knot_handler(), and eventHandler().

◆ requestPosition()

void SPKnot::requestPosition ( Geom::Point const &  pos,
unsigned int  state 
)

Request or set new position for knot.

Definition at line 332 of file knot.cpp.

References request_signal, and setPosition().

Referenced by handler_request_position().

◆ selectKnot()

◆ setAnchor()

◆ setAngle()

void SPKnot::setAngle ( double  i)

◆ setCursor()

void SPKnot::setCursor ( SPKnotStateType  type,
Glib::RefPtr< Gdk::Cursor >  cursor 
)

Definition at line 433 of file knot.cpp.

References _cursors.

Referenced by Inkscape::UI::Tools::PagesTool::PagesTool().

◆ setFlag()

void SPKnot::setFlag ( unsigned int  flag,
bool  set 
)

◆ setImage()

void SPKnot::setImage ( unsigned char *  normal,
unsigned char *  mouseover,
unsigned char *  dragging,
unsigned char *  selected 
)

◆ setPosition()

◆ setSize()

◆ setTip()

void SPKnot::setTip ( Glib::ustring &&  tip)

◆ show()

◆ startDragging()

void SPKnot::startDragging ( Geom::Point const &  p,
Geom::IntPoint const &  xy,
uint32_t  etime 
)

Update knot for dragging and tell canvas an item was grabbed.

Definition at line 86 of file knot.cpp.

References _cursors, ctrl, drag_origin, grabbed, grabbed_rel_pos, KNOT_EVENT_MASK, nograb, pos, setFlag(), SP_KNOT_GRABBED, SP_KNOT_STATE_DRAGGING, within_tolerance, and xyp.

Referenced by GrDrag::grabKnot(), and GrDrag::grabKnot().

◆ unref()

◆ updateCtrl()

Member Data Documentation

◆ _cursors

Glib::RefPtr<Gdk::Cursor> SPKnot::_cursors[SP_KNOT_VISIBLE_STATES]

Definition at line 85 of file knot.h.

Referenced by eventHandler(), setCursor(), and startDragging().

◆ _event_connection

◆ _size

Always square.

Must be odd.

Definition at line 65 of file knot.h.

Referenced by setSize(), and updateCtrl().

◆ _tip

Glib::ustring SPKnot::_tip
private

Definition at line 179 of file knot.h.

Referenced by eventHandler(), setTip(), and SPKnot().

◆ anchor

SPAnchorType SPKnot::anchor = SP_ANCHOR_CENTER

Anchor.

Definition at line 72 of file knot.h.

Referenced by setAnchor(), and updateCtrl().

◆ angle

double SPKnot::angle = 0.0

Angle of mesh handle.

Definition at line 67 of file knot.h.

Referenced by setAngle(), and updateCtrl().

◆ click_signal

sigc::signal<void (SPKnot *, unsigned int)> SPKnot::click_signal

◆ ctrl

◆ desktop

◆ doubleclicked_signal

sigc::signal<void (SPKnot*, unsigned int)> SPKnot::doubleclicked_signal

Definition at line 94 of file knot.h.

Referenced by GrDragger::GrDragger().

◆ drag_origin

Geom::Point SPKnot::drag_origin

Origin of drag.

Definition at line 71 of file knot.h.

Referenced by Inkscape::UI::Tools::PagesTool::marginKnotMoved(), and startDragging().

◆ event_signal

sigc::signal<bool (SPKnot*, Inkscape::CanvasEvent const &)> SPKnot::event_signal

Definition at line 99 of file knot.h.

Referenced by eventHandler().

◆ flags

◆ grabbed

bool SPKnot::grabbed = false

Definition at line 74 of file knot.h.

Referenced by eventHandler(), and startDragging().

◆ grabbed_rel_pos

Geom::Point SPKnot::grabbed_rel_pos

Grabbed relative position.

Definition at line 70 of file knot.h.

Referenced by handler_request_position(), and startDragging().

◆ grabbed_signal

sigc::signal<void (SPKnot*, unsigned int)> SPKnot::grabbed_signal

Definition at line 96 of file knot.h.

Referenced by eventHandler(), and Box3D::VPDragger::VPDragger().

◆ image

unsigned char* SPKnot::image[SP_KNOT_VISIBLE_STATES]

Definition at line 84 of file knot.h.

Referenced by setImage(), and SPKnot().

◆ is_lpe

bool SPKnot::is_lpe = false

is lpe knot.

Definition at line 68 of file knot.h.

◆ mousedown_signal

sigc::signal<void (SPKnot*, unsigned int)> SPKnot::mousedown_signal

Definition at line 95 of file knot.h.

Referenced by KnotHolderEntity::create(), and GrDragger::GrDragger().

◆ moved

bool SPKnot::moved = false

Definition at line 75 of file knot.h.

Referenced by eventHandler().

◆ moved_signal

◆ owner

SPItem* SPKnot::owner = nullptr

◆ pos

◆ pressure

double SPKnot::pressure = 0.0

The tablet pen pressure when the knot is being dragged.

Definition at line 89 of file knot.h.

Referenced by eventHandler().

◆ ref_count

int SPKnot::ref_count = 1
private

Definition at line 181 of file knot.h.

Referenced by ref(), and unref().

◆ request_signal

sigc::signal<bool (SPKnot*, Geom::Point*, unsigned int)> SPKnot::request_signal

Definition at line 101 of file knot.h.

Referenced by Inkscape::UI::Tools::PagesTool::PagesTool(), and requestPosition().

◆ shape

Shape type.

Definition at line 81 of file knot.h.

◆ shape_set

bool SPKnot::shape_set = false

Use default shape unless explicitly set.

Definition at line 82 of file knot.h.

◆ size_set

bool SPKnot::size_set = false

Use default size unless explicitly set.

Definition at line 66 of file knot.h.

Referenced by setSize(), and updateCtrl().

◆ sub_owner

SPItem* SPKnot::sub_owner = nullptr

◆ tolerance

int SPKnot::tolerance = 0

Definition at line 77 of file knot.h.

Referenced by eventHandler().

◆ transform_escaped

bool SPKnot::transform_escaped = false

Definition at line 79 of file knot.h.

Referenced by eventHandler().

◆ ungrabbed_signal

◆ within_tolerance

bool SPKnot::within_tolerance = false

Definition at line 78 of file knot.h.

Referenced by eventHandler(), and startDragging().

◆ xyp

Geom::IntPoint SPKnot::xyp

Where drag started.

Definition at line 76 of file knot.h.

Referenced by eventHandler(), and startDragging().


The documentation for this class was generated from the following files: