Krita Source Code Documentation
Loading...
Searching...
No Matches
SvgChangeTextPaddingMarginStrategy.cpp File Reference

Go to the source code of this file.

Functions

QLineF getLine (QPointF mousePos, KoPathShape *referenceShape, bool isPadding)
 
KoSvgTextProperties getProperties (bool isPadding, QLineF line, KoSvgTextProperties previous=KoSvgTextProperties())
 

Function Documentation

◆ getLine()

QLineF getLine ( QPointF mousePos,
KoPathShape * referenceShape,
bool isPadding )

Definition at line 104 of file SvgChangeTextPaddingMarginStrategy.cpp.

104 {
105 if (!referenceShape) return QLineF();
106 const bool hit = referenceShape->hitTest(mousePos);
107 if ((!hit && isPadding) || (hit && !isPadding)) return QLineF();
108
109 QPointF pos = referenceShape->documentToShape(mousePos);
110 QLineF l(pos, pos);
111
112 qreal minDistance = std::numeric_limits<qreal>::max();
113
114 Q_FOREACH(KoPathSegment segment, referenceShape->segmentsAt(referenceShape->outlineRect().adjusted(-2, -2, 2, 2))) {
115 const qreal nearestT = segment.nearestPoint(pos);
116 const QPointF nearestP = segment.pointAt(nearestT);
117 const qreal distance = kisDistance(pos, nearestP);
118 if (distance < minDistance) {
119 l.setP1(nearestP);
120 minDistance = distance;
121 }
122 }
123 if (l.length() < 0) {
124 l.setLength(0);
125 }
126 return l;
127}
qreal distance(const QPointF &p1, const QPointF &p2)
A KoPathSegment consist of two neighboring KoPathPoints.
QPointF pointAt(qreal t) const
Returns point at given t.
qreal nearestPoint(const QPointF &point) const
bool hitTest(const QPointF &position) const override
reimplemented
QRectF outlineRect() const override
reimplemented
QList< KoPathSegment > segmentsAt(const QRectF &rect) const
Returns the list of path segments within the given rectangle.
QPointF documentToShape(const QPointF &point) const
Transforms point from document coordinates to shape coordinates.
Definition KoShape.cpp:1016
qreal kisDistance(const QPointF &pt1, const QPointF &pt2)
Definition kis_global.h:190

References distance(), KoShape::documentToShape(), KoPathShape::hitTest(), kisDistance(), KoPathSegment::nearestPoint(), KoPathShape::outlineRect(), KoPathSegment::pointAt(), and KoPathShape::segmentsAt().

◆ getProperties()

KoSvgTextProperties getProperties ( bool isPadding,
QLineF line,
KoSvgTextProperties previous = KoSvgTextProperties() )