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();
90 QPen *tempPen =
new QPen(
m_painter->pen());
91 tempPen->setCosmetic(
true);
93 const QPen customPen = *tempPen;
109 QRectF handleRect(-radius, -radius, 2 * radius, 2 * radius);
136 QPainterPathStroker s;
138 if (!dashPattern.isEmpty()) {
139 s.setDashPattern(dashPattern);
140 s.setDashOffset(dashOffset);
142 s.setCapStyle(Qt::RoundCap);
143 s.setJoinStyle(Qt::RoundJoin);
144 p = s.createStroke(
p);
168 QPolygonF handlePolygon;
170 handlePolygon << QPointF(-radius, 0);
171 handlePolygon << QPointF(0, radius);
172 handlePolygon << QPointF(radius, 0);
173 handlePolygon << QPointF(0, -radius);
195 p.moveTo(-radius, -radius);
196 p.lineTo(radius, radius);
197 p.moveTo(radius, -radius);
198 p.lineTo(-radius, radius);
211 const qreal halfRadius = 0.5 * radius;
213 QPolygonF handlePolygon;
214 handlePolygon << QPointF(-halfRadius, 0);
215 handlePolygon << QPointF(0, halfRadius);
216 handlePolygon << QPointF(halfRadius, 0);
217 handlePolygon << QPointF(0, -halfRadius);
236 QLineF line(pos, from);
237 line.setLength(radius);
240 norm *= 0.34 * radius;
242 p.moveTo(line.p2() + norm);
244 p.lineTo(line.p2() - norm);
273 const QPointF diff = end - start;
275 if (
length > 5 * radius) {
276 drawArrow(start + 0.33 * diff, start, radius);
277 drawArrow(start + 0.66 * diff, start, radius);
278 }
else if (
length > 3 * radius) {
279 drawArrow(start + 0.5 * diff, start, radius);
329 QPoint offsetPosition(0, 40);
330 handlePolygon += offsetPosition;
332 handlePolygon -= QPointF(size*0.5,size*0.5);
334 m_painter->drawPixmap(QRect(handlePolygon.x(), handlePolygon.y(),
344 QRectF handleRect(-radius, -radius, 2 * radius, 2 * radius);
348 QPainterPath painterPath;
349 painterPath.addPolygon(handlePolygon);
353 painterPath.translate(offset);
355 const QPainterPath pathToSend = painterPath;
356 const QBrush brushStyle(fillColor);
357 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