Krita Source Code Documentation
Loading...
Searching...
No Matches
GutterWidthsConfig.cpp
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Agata Cacko
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
8#include <kis_algebra_2d.h>
9#include <kis_debug.h>
10
11
12GutterWidthsConfig::GutterWidthsConfig(KoUnit _baseUnit, qreal _resolution, qreal _horizontal, qreal _vertical, qreal _diagonal, qreal _angleDegrees)
13 : baseUnit(_baseUnit)
14 , resolution(_resolution)
15 , horizontal(_horizontal)
16 , vertical(_vertical)
17 , diagonal(_diagonal)
18 , angleDegrees(_angleDegrees)
19{
20}
21
22
23GutterWidthsConfig::GutterWidthsConfig(KoUnit _baseUnit, qreal _resolution, qreal _all, qreal _angleDegrees)
24 : baseUnit(_baseUnit)
25 , resolution(_resolution)
26 , horizontal(_all)
27 , vertical(_all)
28 , diagonal(_all)
29 , angleDegrees(_angleDegrees)
30{
31}
32
33bool inRangeWrapped(qreal value, qreal min, qreal max, qreal rangeMax) {
34 min = KisAlgebra2D::wrapValue(min, 0.0, rangeMax);
35 max = KisAlgebra2D::wrapValue(max, 0.0, rangeMax);
36
37 if (min > max) {
38 return value > min || value < max; // range is on the edges instead of in the middle
39 } else {
40 return value > min && value < max;
41 }
42
43
44
45}
46
47qreal convertToPixels(KoUnit baseUnit, qreal resolution, qreal length)
48{
49 KoUnit toUnit = KoUnit::fromSymbol("px");
50 return KoUnit::convertFromUnitToUnit(length, baseUnit, toUnit, resolution);
51}
52
53qreal GutterWidthsConfig::widthForAngleInPixels(qreal lineAngleDegrees)
54{
55 qreal angleMax = 360;
56
57 if (inRangeWrapped(lineAngleDegrees, -angleDegrees, angleDegrees, angleMax)) {
59 } else if (inRangeWrapped(lineAngleDegrees, 180-angleDegrees, 180+angleDegrees, angleMax)) {
61 } else if (inRangeWrapped(lineAngleDegrees, 90-angleDegrees, 90+angleDegrees, angleMax)) {
63 } else if (inRangeWrapped(lineAngleDegrees, 270-angleDegrees, 270+angleDegrees, angleMax)) {
65 } else {
67 }
68}
qreal length(const QPointF &vec)
Definition Ellipse.cc:82
qreal convertToPixels(KoUnit baseUnit, qreal resolution, qreal length)
bool inRangeWrapped(qreal value, qreal min, qreal max, qreal rangeMax)
float value(const T *src, size_t ch)
GutterWidthsConfig(KoUnit _baseUnit, qreal resolution, qreal _horizontal, qreal _vertical, qreal _diagonal, qreal _angleDegrees)
qreal widthForAngleInPixels(qreal lineAngleDegrees)
static qreal convertFromUnitToUnit(const qreal value, const KoUnit &fromUnit, const KoUnit &toUnit, qreal factor=1.0)
Definition KoUnit.cpp:295
static KoUnit fromSymbol(const QString &symbol, bool *ok=0)
Definition KoUnit.cpp:271
T wrapValue(T value, T wrapBounds)