File indexing completed on 2024-05-19 04:26:53
0001 /* 0002 * SPDX-FileCopyrightText: 2020 Deif Lou <ginoba@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 #include "AngleSelector.h" 0007 0008 #include "kis_debug.h" 0009 0010 0011 const QList<QString> FlipOptionsMode = { 0012 "NoFlipOptions", // 0 = KisAngleSelector::FlipOptionsMode_NoFlipOptions 0013 "MenuButton", // KisAngleSelector::FlipOptionsMode_MenuButton 0014 "Buttons", // KisAngleSelector::FlipOptionsMode_Buttons 0015 "ContextMenu" // KisAngleSelector::FlipOptionsMode_ContextMenu 0016 }; 0017 0018 const QList<QString> IncreasingDirection = { 0019 "CounterClockwise", // 0 = KisAngleGauge::IncreasingDirection_CounterClockwise 0020 "Clockwise" // KisAngleGauge::IncreasingDirection_Clockwise 0021 }; 0022 0023 struct AngleSelector::Private { 0024 Private() {} 0025 0026 KisAngleSelector *widget; 0027 }; 0028 0029 AngleSelector::AngleSelector() 0030 : QObject() 0031 , d(new Private) 0032 { 0033 d->widget = new KisAngleSelector(); 0034 0035 // Forward KisAngleSelector::angleChanged to AngleSelector::angleChanged 0036 connect(d->widget, SIGNAL(angleChanged(qreal)), this, SIGNAL(angleChanged(qreal))); 0037 } 0038 0039 AngleSelector::~AngleSelector() 0040 { 0041 delete d; 0042 } 0043 0044 QWidget* AngleSelector::widget() const 0045 { 0046 return d->widget; 0047 } 0048 0049 qreal AngleSelector::angle() const 0050 { 0051 return d->widget->angle(); 0052 } 0053 0054 qreal AngleSelector::snapAngle() const 0055 { 0056 return d->widget->snapAngle(); 0057 } 0058 0059 qreal AngleSelector::resetAngle() const 0060 { 0061 return d->widget->resetAngle(); 0062 } 0063 0064 int AngleSelector::decimals() const 0065 { 0066 return d->widget->decimals(); 0067 } 0068 0069 qreal AngleSelector::maximum() const 0070 { 0071 return d->widget->maximum(); 0072 } 0073 0074 qreal AngleSelector::minimum() const 0075 { 0076 return d->widget->minimum(); 0077 } 0078 0079 QString AngleSelector::prefix() const 0080 { 0081 return d->widget->prefix(); 0082 } 0083 0084 bool AngleSelector::wrapping() const 0085 { 0086 return d->widget->wrapping(); 0087 } 0088 0089 QString AngleSelector::flipOptionsMode() const 0090 { 0091 KisAngleSelector::FlipOptionsMode mode = d->widget->flipOptionsMode(); 0092 if (!(0 <= mode && mode <= FlipOptionsMode.size())) { 0093 warnScript << "AngleSelector::flipOptionsMode() doesn't handle mode '" << mode << "'!"; 0094 return ""; 0095 } 0096 return FlipOptionsMode[mode]; 0097 } 0098 0099 int AngleSelector::widgetsHeight() const 0100 { 0101 return d->widget->widgetsHeight(); 0102 } 0103 0104 QString AngleSelector::increasingDirection() const 0105 { 0106 KisAngleGauge::IncreasingDirection increasingDirection = d->widget->increasingDirection(); 0107 if (!(0 <= increasingDirection && increasingDirection <= IncreasingDirection.size())) { 0108 warnScript << "AngleSelector::increasingDirection() doesn't handle mode '" << increasingDirection << "'!"; 0109 return ""; 0110 } 0111 return IncreasingDirection[increasingDirection]; 0112 } 0113 0114 bool AngleSelector::isUsingFlatSpinBox() const 0115 { 0116 return d->widget->isUsingFlatSpinBox(); 0117 } 0118 0119 void AngleSelector::setAngle(qreal newAngle) 0120 { 0121 d->widget->setAngle(newAngle); 0122 } 0123 0124 void AngleSelector::setSnapAngle(qreal newSnapAngle) 0125 { 0126 d->widget->setSnapAngle(newSnapAngle); 0127 } 0128 0129 void AngleSelector::setResetAngle(qreal newResetAngle) 0130 { 0131 d->widget->setResetAngle(newResetAngle); 0132 } 0133 0134 void AngleSelector::setDecimals(int newNumberOfDecimals) 0135 { 0136 d->widget->setDecimals(newNumberOfDecimals); 0137 } 0138 0139 void AngleSelector::setMaximum(qreal newMaximum) 0140 { 0141 d->widget->setMaximum(newMaximum); 0142 } 0143 0144 void AngleSelector::setMinimum(qreal newMinimum) 0145 { 0146 d->widget->setMinimum(newMinimum); 0147 } 0148 0149 void AngleSelector::setRange(qreal newMinimum, qreal newMaximum) 0150 { 0151 d->widget->setRange(newMinimum, newMaximum); 0152 } 0153 0154 void AngleSelector::setPrefix(const QString &newPrefix) 0155 { 0156 d->widget->setPrefix(newPrefix); 0157 } 0158 0159 void AngleSelector::setWrapping(bool newWrapping) 0160 { 0161 d->widget->setWrapping(newWrapping); 0162 } 0163 0164 void AngleSelector::setFlipOptionsMode(QString newMode) 0165 { 0166 int index = FlipOptionsMode.indexOf(newMode); 0167 if (index == -1) { 0168 dbgScript << "Script using AngleSelector.setFlipOptionsMode() passed invalid mode '" << newMode << "', ignoring."; 0169 return; 0170 } 0171 d->widget->setFlipOptionsMode((KisAngleSelector::FlipOptionsMode) index); 0172 } 0173 0174 void AngleSelector::setWidgetsHeight(int newHeight) 0175 { 0176 d->widget->setWidgetsHeight(newHeight); 0177 } 0178 0179 void AngleSelector::setIncreasingDirection(QString newIncreasingDirection) 0180 { 0181 int index = IncreasingDirection.indexOf(newIncreasingDirection); 0182 if (index == -1) { 0183 dbgScript << "Script using AngleSelector.setIncreasingDirection() passed invalid mode '" << newIncreasingDirection << "', ignoring."; 0184 return; 0185 } 0186 d->widget->setIncreasingDirection((KisAngleGauge::IncreasingDirection) index); 0187 } 0188 0189 void AngleSelector::useFlatSpinBox(bool newUseFlatSpinBox) 0190 { 0191 d->widget->useFlatSpinBox(newUseFlatSpinBox); 0192 } 0193 0194 void AngleSelector::reset() 0195 { 0196 d->widget->reset(); 0197 } 0198 0199 qreal AngleSelector::closestCoterminalAngleInRange(qreal angle, qreal minimum, qreal maximum, bool *ok) 0200 { 0201 return KisAngleSelector::closestCoterminalAngleInRange(angle, minimum, maximum, ok); 0202 } 0203 0204 qreal AngleSelector::closestCoterminalAngleInRange(qreal angle, bool *ok) const 0205 { 0206 return d->widget->closestCoterminalAngleInRange(angle, ok); 0207 } 0208 0209 qreal AngleSelector::flipAngle(qreal angle, Qt::Orientations orientations) 0210 { 0211 return KisAngleSelector::flipAngle(angle, orientations); 0212 } 0213 0214 qreal AngleSelector::flipAngle(qreal angle, qreal minimum, qreal maximum, Qt::Orientations orientations, bool *ok) 0215 { 0216 return KisAngleSelector::flipAngle(angle, minimum, maximum, orientations, ok); 0217 } 0218 0219 void AngleSelector::flip(Qt::Orientations orientations) 0220 { 0221 bool ok = false; 0222 qreal flippedAngle = flipAngle(angle(), minimum(), maximum(), orientations, &ok); 0223 if (ok) { 0224 setAngle(flippedAngle); 0225 } 0226 }