Krita Source Code Documentation
Loading...
Searching...
No Matches
dlg_rotateimage.cc
Go to the documentation of this file.
1/*
2 * dlg_rotateimage.cc - part of KimageShop^WKrayon^WKrita
3 *
4 * SPDX-FileCopyrightText: 2004 Michael Thaler <michael.thaler@physik.tu-muenchen.de>
5 *
6 * SPDX-License-Identifier: GPL-2.0-or-later
7 */
8
9#include "dlg_rotateimage.h"
10
11#include <math.h>
12
13#include <klocalizedstring.h>
14#include <kis_debug.h>
15#include <kis_icon.h>
16
18 const char * name)
19 : KoDialog(parent)
20{
21 setCaption(i18n("Rotate Image"));
24 setObjectName(name);
25
26 m_lock = false;
27
28 m_page = new WdgRotateImage(this);
29 Q_CHECK_PTR(m_page);
30 m_page->setObjectName("rotate_image");
31
33 resize(m_page->sizeHint());
34
35 m_page->angleSelectorCustom->setIncreasingDirection(KisAngleGauge::IncreasingDirection_Clockwise);
36
37 m_page->radioCCW->setIcon(KisIconUtils::loadIcon("transform_icons_liquify_rotateCCW"));
38 m_page->radioCW->setIcon(KisIconUtils::loadIcon("transform_icons_liquify_rotate"));
39
40 connect(this, SIGNAL(okClicked()),
41 this, SLOT(okClicked()));
42 connect(m_page->angleSelectorCustom, SIGNAL(angleChanged(double)),
43 this, SLOT(slotAngleValueChanged(double)));
44 connect(m_page->radioCCW, SIGNAL(toggled(bool)), SLOT(slotRadioCCWToggled(bool)));
45 connect(m_page->radioCW, SIGNAL(toggled(bool)), SLOT(slotRadioCWToggled(bool)));
46}
47
52
54{
55 m_page->radioCustom->setChecked(true);
56}
57
58void DlgRotateImage::setAngle(quint32 angle)
59{
60 if (angle == 90) {
61 m_page->radio90->setChecked(true);
62 } else if (angle == 180) {
63 m_page->radio180->setChecked(true);
64 } else if (angle == 270) {
65 m_page->radio270->setChecked(true);
66 } else {
67 m_page->radioCustom->setChecked(true);
68 m_page->angleSelectorCustom->setAngle(angle);
69 }
70
71 if (m_oldAngle != angle)
73
75
76}
77
79{
80 double angle = 0;
81 if (m_page->radio90->isChecked()) {
82 angle = 90;
83 } else if (m_page->radio180->isChecked()) {
84 angle = 180;
85 } else if (m_page->radio270->isChecked()) {
86 angle = 270;
87 } else {
88 angle = m_page->angleSelectorCustom->angle();
89 }
90 if (m_page->radioCW->isChecked()) {
91 return angle;
92 } else {
93 return -angle;
94 }
95}
96
98{
99 if (direction == CLOCKWISE) {
100 m_page->radioCW->setChecked(true);
101 } else if (direction == COUNTERCLOCKWISE) {
102 m_page->radioCCW->setChecked(true);
103 }
104}
105
107{
108 if (m_page->radioCCW->isChecked()) {
109 return COUNTERCLOCKWISE;
110 } else {
111 return CLOCKWISE;
112 }
113}
114
116{
117 accept();
118}
119
121{
122 // Code to update preview here.
123}
124
126{
127 if (!toggled) {
128 return;
129 }
130 m_page->angleSelectorCustom->setIncreasingDirection(KisAngleGauge::IncreasingDirection_CounterClockwise);
131}
132
134{
135 if (!toggled) {
136 return;
137 }
138 m_page->angleSelectorCustom->setIncreasingDirection(KisAngleGauge::IncreasingDirection_Clockwise);
139}
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
enumRotationDirection direction()
void slotAngleValueChanged(double)
void setDirection(enumRotationDirection direction)
void setAngle(quint32 w)
~DlgRotateImage() override
WdgRotateImage * m_page
void slotRadioCWToggled(bool toggled)
DlgRotateImage(QWidget *parent=0, const char *name=0)
void slotRadioCCWToggled(bool toggled)
@ IncreasingDirection_CounterClockwise
@ IncreasingDirection_Clockwise
A dialog base class with standard buttons and predefined layouts.
Definition KoDialog.h:116
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:354
virtual void setCaption(const QString &caption)
Definition KoDialog.cpp:498
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void setDefaultButton(ButtonCode id)
Definition KoDialog.cpp:302
@ Ok
Show Ok button. (this button accept()s the dialog; result set to QDialog::Accepted)
Definition KoDialog.h:127
@ Cancel
Show Cancel-button. (this button reject()s the dialog; result set to QDialog::Rejected)
Definition KoDialog.h:130
enumRotationDirection
@ CLOCKWISE
@ COUNTERCLOCKWISE
QIcon loadIcon(const QString &name)