10#include <QPainterPath>
17 : m_painter(_painter),
18 m_originalPainterTransform(m_painter->transform()),
19 m_painterTransform(m_painter->transform()),
20 m_handleRadius(handleRadius),
21 m_decorationThickness(decorationThickness),
22 m_decomposedMatrix(m_painterTransform)
28 : m_painter(_painter),
29 m_originalPainterTransform(originalPainterTransform),
30 m_painterTransform(m_painter->transform()),
31 m_handleRadius(handleRadius),
32 m_decorationThickness(decorationThickness),
33 m_decomposedMatrix(m_painterTransform)
39 : m_painter(rhs.m_painter),
40 m_originalPainterTransform(rhs.m_originalPainterTransform),
41 m_painterTransform(rhs.m_painterTransform),
42 m_handleRadius(rhs.m_handleRadius),
43 m_decorationThickness(rhs.m_decorationThickness),
44 m_decomposedMatrix(rhs.m_decomposedMatrix),
45 m_handleTransform(rhs.m_handleTransform),
46 m_handlePolygon(rhs.m_handlePolygon),
47 m_handleStyle(rhs.m_handleStyle)
81 QRectF handleRect(-radius, -radius, 2 * radius, 2 * radius);
85 handlePolygon.translate(offset);
87 const QPen originalPen =
m_painter->pen();
91 customPen.setCosmetic(
true);
92 customPen.setWidth(4);
107 QRectF handleRect(-radius, -radius, 2 * radius, 2 * radius);
134 QPainterPathStroker s;
136 if (!dashPattern.isEmpty()) {
137 s.setDashPattern(dashPattern);
138 s.setDashOffset(dashOffset);
140 s.setCapStyle(Qt::RoundCap);
141 s.setJoinStyle(Qt::RoundJoin);
142 p = s.createStroke(
p);
166 QPolygonF handlePolygon;
168 handlePolygon << QPointF(-radius, 0);
169 handlePolygon << QPointF(0, radius);
170 handlePolygon << QPointF(radius, 0);
171 handlePolygon << QPointF(0, -radius);
193 p.moveTo(-radius, -radius);
194 p.lineTo(radius, radius);
195 p.moveTo(radius, -radius);
196 p.lineTo(-radius, radius);
209 const qreal halfRadius = 0.5 * radius;
211 QPolygonF handlePolygon;
212 handlePolygon << QPointF(-halfRadius, 0);
213 handlePolygon << QPointF(0, halfRadius);
214 handlePolygon << QPointF(halfRadius, 0);
215 handlePolygon << QPointF(0, -halfRadius);
234 QLineF line(pos, from);
235 line.setLength(radius);
238 norm *= 0.34 * radius;
240 p.moveTo(line.p2() + norm);
242 p.lineTo(line.p2() - norm);
271 const QPointF diff = end - start;
273 if (
length > 5 * radius) {
274 drawArrow(start + 0.33 * diff, start, radius);
275 drawArrow(start + 0.66 * diff, start, radius);
276 }
else if (
length > 3 * radius) {
277 drawArrow(start + 0.5 * diff, start, radius);
327 QPoint offsetPosition(0, 40);
328 handlePolygon += offsetPosition;
330 handlePolygon -= QPointF(size*0.5,size*0.5);
332 m_painter->drawPixmap(QRect(handlePolygon.x(), handlePolygon.y(),
342 QRectF handleRect(-radius, -radius, 2 * radius, 2 * radius);
346 QPainterPath painterPath;
347 painterPath.addPolygon(handlePolygon);
351 painterPath.translate(offset);
353 const QPainterPath pathToSend = painterPath;
354 const QBrush brushStyle(fillColor);
355 m_painter->fillPath(pathToSend, brushStyle);
qreal length(const QPointF &vec)
The KisHandlePainterHelper class is a special helper for painting handles around objects....
void drawHandleSmallCircle(const QPointF ¢er)
void drawPath(const QPainterPath &path)
void drawArrow(const QPointF &pos, const QPointF &from, qreal radius)
void drawGradientCrossHandle(const QPointF ¢er, qreal radius)
void drawHandleRect(const QPointF ¢er, qreal radius)
~KisHandlePainterHelper()
void drawConnectionLine(const QLineF &line)
void fillHandleRect(const QPointF ¢er, qreal radius, QColor fillColor, QPoint offset)
KisHandlePainterHelper(QPainter *_painter, qreal handleRadius=0.0, int decorationThickness=1)
QTransform m_originalPainterTransform
KisAlgebra2D::DecomposedMatrix m_decomposedMatrix
void setHandleStyle(const KisHandleStyle &style)
void drawGradientHandle(const QPointF ¢er, qreal radius)
QTransform m_handleTransform
KisHandleStyle m_handleStyle
void drawGradientArrow(const QPointF &start, const QPointF &end, qreal radius)
void drawRubberLine(const QPolygonF &poly)
int m_decorationThickness
void drawPixmap(const QPixmap &pixmap, QPointF position, int size, QRectF sourceRect)
void drawHandleLine(const QLineF &line, qreal width=1.0, QVector< qreal > dashPattern={}, qreal dashOffset=0.0)
void drawHandleCircle(const QPointF ¢er, qreal radius)
QTransform m_painterTransform
QPolygonF m_handlePolygon
static KisHandleStyle & inheritStyle()
QVector< IterationStyle > lineIterations
QVector< IterationStyle > handleIterations
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
qreal kisDistance(const QPointF &pt1, const QPointF &pt2)
T leftUnitNormal(const T &a)
QTransform shearTransform() const
QTransform rotateTransform() const
QPair< QPen, QBrush > stylePair