Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSnapPointStrategy Class Reference

#include <KisSnapPointStrategy.h>

+ Inheritance diagram for KisSnapPointStrategy:

Classes

struct  Private
 

Public Member Functions

void addPoint (const QPointF &pt)
 
QPainterPath decoration (const KoViewConverter &converter) const override
 returns the current snap strategy decoration
 
 KisSnapPointStrategy (KoSnapGuide::Strategy type=KoSnapGuide::CustomSnapping)
 
bool snap (const QPointF &mousePosition, KoSnapProxy *proxy, qreal maxSnapDistance) override
 
 ~KisSnapPointStrategy () override
 
- Public Member Functions inherited from KoSnapStrategy
 KoSnapStrategy (KoSnapGuide::Strategy type)
 
QPointF snappedPosition () const
 returns the snapped position form the last call to snapToPoints
 
SnapType snappedType () const
 
KoSnapGuide::Strategy type () const
 returns the strategies type
 
virtual ~KoSnapStrategy ()
 

Private Attributes

const QScopedPointer< Privatem_d
 

Additional Inherited Members

- Public Types inherited from KoSnapStrategy
enum  SnapType { ToPoint = 0 , ToLine }
 
- Static Public Member Functions inherited from KoSnapStrategy
static qreal scalarProduct (const QPointF &p1, const QPointF &p2)
 
static qreal squareDistance (const QPointF &p1, const QPointF &p2)
 
- Protected Member Functions inherited from KoSnapStrategy
void setSnappedPosition (const QPointF &position, SnapType snapType)
 sets the current snapped position
 

Detailed Description

The KisSnapPointStrategy class is a custom strategy that allows snapping to arbitrary points on canvas, not linked to any real objects. It can be used, for example, for snapping to the previous position of the handle, while it is dragging by the user.

Definition at line 22 of file KisSnapPointStrategy.h.

Constructor & Destructor Documentation

◆ KisSnapPointStrategy()

KisSnapPointStrategy::KisSnapPointStrategy ( KoSnapGuide::Strategy type = KoSnapGuide::CustomSnapping)

Definition at line 18 of file KisSnapPointStrategy.cpp.

20 m_d(new Private)
21{
22}
const QScopedPointer< Private > m_d
KoSnapGuide::Strategy type() const
returns the strategies type
KoSnapStrategy(KoSnapGuide::Strategy type)

◆ ~KisSnapPointStrategy()

KisSnapPointStrategy::~KisSnapPointStrategy ( )
override

Definition at line 24 of file KisSnapPointStrategy.cpp.

25{
26}

Member Function Documentation

◆ addPoint()

void KisSnapPointStrategy::addPoint ( const QPointF & pt)

Definition at line 57 of file KisSnapPointStrategy.cpp.

58{
59 m_d->points << pt;
60}

References m_d.

◆ decoration()

QPainterPath KisSnapPointStrategy::decoration ( const KoViewConverter & converter) const
overridevirtual

returns the current snap strategy decoration

Implements KoSnapStrategy.

Definition at line 48 of file KisSnapPointStrategy.cpp.

49{
50 QRectF unzoomedRect = converter.viewToDocument(QRectF(0, 0, 11, 11));
51 unzoomedRect.moveCenter(snappedPosition());
52 QPainterPath decoration;
53 decoration.addEllipse(unzoomedRect);
54 return decoration;
55}
QPainterPath decoration(const KoViewConverter &converter) const override
returns the current snap strategy decoration
QPointF snappedPosition() const
returns the snapped position form the last call to snapToPoints
virtual QPointF viewToDocument(const QPointF &viewPoint) const

References decoration(), KoSnapStrategy::snappedPosition(), and KoViewConverter::viewToDocument().

◆ snap()

bool KisSnapPointStrategy::snap ( const QPointF & mousePosition,
KoSnapProxy * proxy,
qreal maxSnapDistance )
overridevirtual

Implements KoSnapStrategy.

Definition at line 28 of file KisSnapPointStrategy.cpp.

29{
30 Q_UNUSED(proxy);
31
32 QPointF snappedPoint = mousePosition;
33 qreal minDistance = std::numeric_limits<qreal>::max();
34
35 Q_FOREACH (const QPointF &pt, m_d->points) {
36 const qreal dist = kisDistance(mousePosition, pt);
37
38 if (dist < maxSnapDistance && dist < minDistance) {
39 minDistance = dist;
40 snappedPoint = pt;
41 }
42 }
43
44 setSnappedPosition(snappedPoint, ToPoint);
45 return minDistance < std::numeric_limits<qreal>::max();
46}
void setSnappedPosition(const QPointF &position, SnapType snapType)
sets the current snapped position
qreal kisDistance(const QPointF &pt1, const QPointF &pt2)
Definition kis_global.h:190

References kisDistance(), m_d, KoSnapStrategy::setSnappedPosition(), and KoSnapStrategy::ToPoint.

Member Data Documentation

◆ m_d

const QScopedPointer<Private> KisSnapPointStrategy::m_d
private

Definition at line 35 of file KisSnapPointStrategy.h.


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