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

snaps to path points More...

#include <KoSnapStrategy.h>

+ Inheritance diagram for NodeSnapStrategy:

Public Member Functions

QPainterPath decoration (const KoViewConverter &converter) const override
 returns the current snap strategy decoration
 
 NodeSnapStrategy ()
 
bool snap (const QPointF &mousePosition, KoSnapProxy *proxy, qreal maxSnapDistance) 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 ()
 

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

snaps to path points

Definition at line 77 of file KoSnapStrategy.h.

Constructor & Destructor Documentation

◆ NodeSnapStrategy()

NodeSnapStrategy::NodeSnapStrategy ( )

Definition at line 134 of file KoSnapStrategy.cpp.

136{
137}
KoSnapStrategy(KoSnapGuide::Strategy type)

Member Function Documentation

◆ decoration()

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

returns the current snap strategy decoration

Implements KoSnapStrategy.

Definition at line 163 of file KoSnapStrategy.cpp.

164{
165 QRectF unzoomedRect = converter.viewToDocument(QRectF(0, 0, 11, 11));
166 unzoomedRect.moveCenter(snappedPosition());
167 QPainterPath decoration;
168 decoration.addEllipse(unzoomedRect);
169 return decoration;
170}
QPointF snappedPosition() const
returns the snapped position form the last call to snapToPoints
virtual QPointF viewToDocument(const QPointF &viewPoint) const
QPainterPath decoration(const KoViewConverter &converter) const override
returns the current snap strategy decoration

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

◆ snap()

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

Implements KoSnapStrategy.

Definition at line 139 of file KoSnapStrategy.cpp.

140{
141 Q_ASSERT(std::isfinite(maxSnapDistance));
142 const qreal maxDistance = maxSnapDistance * maxSnapDistance;
143 qreal minDistance = HUGE_VAL;
144
145 QRectF rect(-maxSnapDistance, -maxSnapDistance, maxSnapDistance, maxSnapDistance);
146 rect.moveCenter(mousePosition);
147 QList<QPointF> points = proxy->pointsInRect(rect, false);
148 QPointF snappedPoint = mousePosition;
149
150 foreach (const QPointF &point, points) {
151 qreal distance = squareDistance(mousePosition, point);
152 if (distance < maxDistance && distance < minDistance) {
153 snappedPoint = point;
154 minDistance = distance;
155 }
156 }
157
158 setSnappedPosition(snappedPoint, ToPoint);
159
160 return (minDistance < HUGE_VAL);
161}
qreal distance(const QPointF &p1, const QPointF &p2)
QList< QPointF > pointsInRect(const QRectF &rect, bool omitEditedShape)
returns list of points in given rectangle in document coordinates
void setSnappedPosition(const QPointF &position, SnapType snapType)
sets the current snapped position
static qreal squareDistance(const QPointF &p1, const QPointF &p2)

References distance(), KoSnapProxy::pointsInRect(), KoSnapStrategy::setSnappedPosition(), KoSnapStrategy::squareDistance(), and KoSnapStrategy::ToPoint.


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