18KisSpacingInformation effectiveSpacing(qreal dabWidth, qreal dabHeight, qreal extraScale,
bool distanceSpacingEnabled,
bool isotropicSpacing, qreal rotation,
bool axesFlipped, qreal spacingVal,
bool autoSpacingActive, qreal autoSpacingCoeff, qreal lodScale)
22 if (!isotropicSpacing) {
23 if (autoSpacingActive) {
24 spacing =
calcAutoSpacing(QPointF(dabWidth, dabHeight), autoSpacingCoeff, lodScale);
26 spacing = QPointF(dabWidth, dabHeight);
27 spacing *= spacingVal;
31 qreal significantDimension = qMax(dabWidth, dabHeight);
32 if (autoSpacingActive) {
33 significantDimension =
calcAutoSpacing(significantDimension, autoSpacingCoeff);
35 significantDimension *= spacingVal;
37 spacing = QPointF(significantDimension, significantDimension);
42 spacing *= extraScale;
77 const QRect totalRect =
78 std::accumulate(dabRects.begin(), dabRects.end(), QRect(), std::bit_or<QRect>());
80 constexpr int minPatchSize = 128;
81 constexpr int maxPatchSize = 512;
82 constexpr int patchStep = 64;
83 constexpr int halfPatchStep = patchStep >> 1;
86 int idealPatchSize = qBound(minPatchSize,
87 (
int(diameter * (2.0 - spacing)) + halfPatchStep) & ~(patchStep - 1),
93 while (rects.size() < idealNumRects && idealPatchSize >minPatchSize) {
94 idealPatchSize = qMax(minPatchSize, idealPatchSize - patchStep);