7#ifndef __KIS_PAINTOP_UTILS_H
8#define __KIS_PAINTOP_UTILS_H
16#include "kritaimage_export.h"
22template <
class Pa
intOp>
29 const qreal angleStep = fanCornersStep;
34 qreal lastAngle = initialAngle;
41 qreal t = angleStep * i++ / fullDistance;
43 QPointF pt = pi1.
pos() + t * (pi2.
pos() - pi1.
pos());
45 pi.overrideDrawingAngle(lastAngle);
46 pi.paintAt(op, currentDistance);
53template <
class Pa
intOp>
58 bool fanCornersEnabled,
61 QPointF end = pi2.
pos();
70 if (fanCornersEnabled &&
84 pi.
paintAt(op, currentDistance);
98 op.updateSpacing(pi2, *currentDistance);
101 op.updateTiming(pi2, *currentDistance);
122 const qreal pointSwapThreshold = 7.0 / zoom;
128 const qreal
distance = qMin(qAbs(pt.x() - m_second.x()), qAbs(pt.y() - m_second.y()));
129 const qreal coeff = qMin(1.0,
distance / pointSwapThreshold);
131 if (coeff > 1.0 - std::numeric_limits<qreal>::epsilon()) {
159 return scale * width < 0.01 || scale * height < 0.01;
169 const qreal invLodScale = 1.0 / lodScale;
170 const QPointF lod0Point = invLodScale * pt;
179 bool distanceSpacingEnabled,
180 bool isotropicSpacing,
184 bool autoSpacingActive,
185 qreal autoSpacingCoeff,
190 qreal timingInterval,
191 qreal rateExtraScale);
float value(const T *src, size_t ch)
qreal distance(const QPointF &p1, const QPointF &p2)
void reset(const QPointF &pt)
QPointF pushThroughHistory(const QPointF &pt, qreal zoom)
qreal incrementInDirection(qreal a, qreal inc, qreal direction)
qreal shortestAngularDistance(qreal a, qreal b)
qreal calcAutoSpacing(qreal value, qreal coeff)
KisSpacingInformation effectiveSpacing(qreal dabWidth, qreal dabHeight, qreal extraScale, bool distanceSpacingEnabled, bool isotropicSpacing, qreal rotation, bool axesFlipped, qreal spacingVal, bool autoSpacingActive, qreal autoSpacingCoeff, qreal lodScale)
bool paintFan(PaintOp &op, const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance, qreal fanCornersStep)
bool checkSizeTooSmall(qreal scale, qreal width, qreal height)
void paintLine(PaintOp &op, const KisPaintInformation &pi1, const KisPaintInformation &pi2, KisDistanceInformation *currentDistance, bool fanCornersEnabled, qreal fanCornersStep)
KisTimingInformation effectiveTiming(bool timingEnabled, qreal timingInterval, qreal rateExtraScale)
QVector< QRect > splitAndFilterDabRect(const QRect &totalRect, const QVector< QRect > &dabRects, int idealPatchSize)
QVector< QRect > splitDabsIntoRects(const QVector< QRect > &dabRects, int idealNumRects, int diameter, qreal spacing)