Krita Source Code Documentation
Loading...
Searching...
No Matches
DlgCanvasSize Class Reference

#include <dlg_canvassize.h>

+ Inheritance diagram for DlgCanvasSize:

Public Types

enum  anchor {
  NORTH_WEST = 0 , NORTH , NORTH_EAST , WEST ,
  CENTER , EAST , SOUTH_WEST , SOUTH ,
  SOUTH_EAST , NONE
}
 
- Public Types inherited from KoDialog
enum  ButtonCode {
  None = 0x00000000 , Help = 0x00000001 , Default = 0x00000002 , Ok = 0x00000004 ,
  Apply = 0x00000008 , Try = 0x00000010 , Cancel = 0x00000020 , Close = 0x00000040 ,
  No = 0x00000080 , Yes = 0x00000100 , Reset = 0x00000200 , Details = 0x00000400 ,
  User1 = 0x00001000 , User2 = 0x00002000 , User3 = 0x00004000 , NoDefault = 0x00008000
}
 
enum  ButtonPopupMode { InstantPopup = 0 , DelayedPopup = 1 }
 
enum  CaptionFlag { NoCaptionFlags = 0 , AppNameCaption = 1 , ModifiedCaption = 2 , HIGCompliantCaption = AppNameCaption }
 

Public Member Functions

 DlgCanvasSize (QWidget *parent, int width, int height, double resolution)
 
qint32 height ()
 
qint32 width ()
 
qint32 xOffset ()
 
qint32 yOffset ()
 
 ~DlgCanvasSize () override
 
- Public Member Functions inherited from KoDialog
QPushButton * button (ButtonCode id) const
 
QIcon buttonIcon (ButtonCode id) const
 
QString buttonText (ButtonCode id) const
 
QString buttonToolTip (ButtonCode id) const
 
QString buttonWhatsThis (ButtonCode id) const
 
ButtonCode defaultButton () const
 
QString helpLinkText () const
 
void incrementInitialSize (const QSize &size)
 
bool isButtonEnabled (ButtonCode id) const
 
 KoDialog (QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
 
QWidget * mainWidget ()
 
QSize minimumSizeHint () const override
 
void setButtonFocus (ButtonCode id)
 
void setButtonGuiItem (ButtonCode id, const KGuiItem &item)
 
void setButtonIcon (ButtonCode id, const QIcon &icon)
 
void setButtons (ButtonCodes buttonMask)
 
void setButtonsOrientation (Qt::Orientation orientation)
 
void setButtonText (ButtonCode id, const QString &text)
 
void setButtonToolTip (ButtonCode id, const QString &text)
 
void setButtonWhatsThis (ButtonCode id, const QString &text)
 
void setDefaultButton (ButtonCode id)
 
void setEscapeButton (ButtonCode id)
 
void setInitialSize (const QSize &size)
 
void setMainWidget (QWidget *widget)
 
void showButton (ButtonCode id, bool state)
 
void showButtonSeparator (bool state)
 
QSize sizeHint () const override
 
 ~KoDialog () override
 

Public Attributes

WdgCanvasSizem_page
 

Static Public Attributes

static const QString PARAM_HEIGHT_UNIT = DlgCanvasSize::PARAM_PREFIX + "_heightunit"
 
static const QString PARAM_PREFIX = "canvasizedlg"
 
static const QString PARAM_WIDTH_UNIT = DlgCanvasSize::PARAM_PREFIX + "_widthunit"
 
static const QString PARAM_XOFFSET_UNIT = DlgCanvasSize::PARAM_PREFIX + "_xoffsetunit"
 
static const QString PARAM_YOFFSET_UNIT = DlgCanvasSize::PARAM_PREFIX + "_yoffsetunit"
 

Private Slots

void slotAnchorButtonClicked (int)
 
void slotAspectChanged (bool keep)
 
void slotCanvasPreviewXOffsetChanged (int v)
 
void slotCanvasPreviewYOffsetChanged (int v)
 
void slotHeightChanged (double v)
 
void slotWidthChanged (double v)
 
void slotXOffsetChanged (double v)
 
void slotYOffsetChanged (double v)
 
void updatexOffsetIcon (bool v)
 
void updateyOffsetIcon (bool v)
 

Private Member Functions

void expectedOffset (int id, double &xOffset, double &yOffset)
 
void loadAnchorIcons ()
 
void updateAnchorIcons (int id)
 
void updateButtons (int forceId)
 
void updateOffset (int id)
 

Private Attributes

KisDocumentAwareSpinBoxUnitManager_heightUnitManager
 
KisDocumentAwareSpinBoxUnitManager_widthUnitManager
 
KisDocumentAwareSpinBoxUnitManager_xOffsetUnitManager
 
KisDocumentAwareSpinBoxUnitManager_yOffsetUnitManager
 
QIcon m_anchorIcons [9]
 
const double m_aspectRatio
 
QButtonGroup * m_group
 
bool m_keepAspect
 
int m_newHeight
 
int m_newWidth
 
const int m_originalHeight
 
const int m_originalWidth
 
const double m_resolution
 
int m_xOffset
 
int m_yOffset
 

Additional Inherited Members

- Public Slots inherited from KoDialog
void delayedDestruct ()
 
void enableButton (ButtonCode id, bool state)
 
void enableButtonApply (bool state)
 
void enableButtonCancel (bool state)
 
void enableButtonOk (bool state)
 
void enableLinkedHelp (bool state)
 
bool isDetailsWidgetVisible () const
 
virtual void setCaption (const QString &caption)
 
virtual void setCaption (const QString &caption, bool modified)
 
void setDetailsWidget (QWidget *detailsWidget)
 
void setDetailsWidgetVisible (bool visible)
 
void setHelp (const QString &anchor, const QString &appname=QString())
 
void setHelpLinkText (const QString &text)
 
virtual void setPlainCaption (const QString &caption)
 
- Signals inherited from KoDialog
void aboutToShowDetails ()
 
void applyClicked ()
 
void buttonClicked (KoDialog::ButtonCode button)
 
void cancelClicked ()
 
void closeClicked ()
 
void defaultClicked ()
 
void finished ()
 
void helpClicked ()
 
void hidden ()
 
void layoutHintChanged ()
 
void noClicked ()
 
void okClicked ()
 
void resetClicked ()
 
void tryClicked ()
 
void user1Clicked ()
 
void user2Clicked ()
 
void user3Clicked ()
 
void yesClicked ()
 
- Static Public Member Functions inherited from KoDialog
static int groupSpacingHint ()
 
static QString makeStandardCaption (const QString &userCaption, QWidget *window=0, CaptionFlags flags=HIGCompliantCaption)
 
static int marginHint ()
 
static void resizeLayout (QLayout *lay, int margin, int spacing)
 
static void resizeLayout (QWidget *widget, int margin, int spacing)
 
static int spacingHint ()
 
- Protected Slots inherited from KoDialog
virtual void slotButtonClicked (int button)
 
- Protected Member Functions inherited from KoDialog
void closeEvent (QCloseEvent *e) override
 
void hideEvent (QHideEvent *) override
 
void keyPressEvent (QKeyEvent *) override
 
void showEvent (QShowEvent *e) override
 

Detailed Description

Definition at line 31 of file dlg_canvassize.h.

Member Enumeration Documentation

◆ anchor

Enumerator
NORTH_WEST 
NORTH 
NORTH_EAST 
WEST 
CENTER 
EAST 
SOUTH_WEST 
SOUTH 
SOUTH_EAST 
NONE 

Definition at line 37 of file dlg_canvassize.h.

Constructor & Destructor Documentation

◆ DlgCanvasSize()

DlgCanvasSize::DlgCanvasSize ( QWidget * parent,
int width,
int height,
double resolution )

Definition at line 28 of file dlg_canvassize.cc.

29 : KoDialog(parent)
30 , m_keepAspect(true)
31 , m_aspectRatio((double)width / height)
32 , m_resolution(resolution)
37 , m_xOffset(0)
38 , m_yOffset(0)
39{
40 setCaption(i18n("Resize Canvas"));
43
44 m_page = new WdgCanvasSize(this);
45 Q_CHECK_PTR(m_page);
46 m_page->layout()->setContentsMargins(0, 0, 0, 0);
47 m_page->setObjectName("canvas_size");
48
51
52 KisConfig cfg(true);
53
56
57 m_page->newWidthDouble->setUnitManager(_widthUnitManager);
58 m_page->newHeightDouble->setUnitManager(_heightUnitManager);
59 m_page->newWidthDouble->setDisplayUnit(false);
60 m_page->newHeightDouble->setDisplayUnit(false);
61
62 m_page->newWidthDouble->setValue(width);
63 m_page->newWidthDouble->setFocus();
64 m_page->newHeightDouble->setValue(height);
65
66 m_page->widthUnit->setModel(_widthUnitManager);
67 m_page->heightUnit->setModel(_heightUnitManager);
68
69 QString unitw = cfg.readEntry<QString>(PARAM_WIDTH_UNIT, "px");
70 QString unith = cfg.readEntry<QString>(PARAM_HEIGHT_UNIT, "px");
71
74
75 const int wUnitIndex = _widthUnitManager->getsUnitSymbolList().indexOf(unitw);
76 const int hUnitIndex = _widthUnitManager->getsUnitSymbolList().indexOf(unith);
77
78 m_page->widthUnit->setCurrentIndex(wUnitIndex);
79 m_page->heightUnit->setCurrentIndex(hUnitIndex);
80
83
86
87 m_page->xOffsetDouble->setUnitManager(_xOffsetUnitManager);
88 m_page->yOffsetDouble->setUnitManager(_yOffsetUnitManager);
89 m_page->xOffsetDouble->setDisplayUnit(false);
90 m_page->yOffsetDouble->setDisplayUnit(false);
91
92 m_page->xOffUnit->setModel(_xOffsetUnitManager);
93 m_page->yOffUnit->setModel(_yOffsetUnitManager);
94
95 m_page->xOffsetDouble->changeValue(m_xOffset);
96 m_page->yOffsetDouble->changeValue(m_yOffset);
97
98 QString unitx = cfg.readEntry<QString>(PARAM_XOFFSET_UNIT, "px");
99 QString unity = cfg.readEntry<QString>(PARAM_YOFFSET_UNIT, "px");
100
103
104 const int xUnitIndex = _xOffsetUnitManager->getsUnitSymbolList().indexOf(unitx);
105 const int yUnitIndex = _yOffsetUnitManager->getsUnitSymbolList().indexOf(unity);
106
107 m_page->xOffUnit->setCurrentIndex(xUnitIndex);
108 m_page->yOffUnit->setCurrentIndex(yUnitIndex);
109
110 QIcon lockedIcon = KisIconUtils::loadIcon("locked");
111 QIcon unlockedIcon = KisIconUtils::loadIcon("unlocked");
112 m_page->lockxOffset->setCheckable(true);
113 m_page->lockyOffset->setCheckable(true);
114 m_page->lockxOffset->setChecked(false);
115 m_page->lockyOffset->setChecked(false);
116 m_page->lockxOffset-> setIcon(m_page->lockxOffset->isChecked() ? lockedIcon : unlockedIcon);
117 m_page->lockyOffset-> setIcon(m_page->lockyOffset->isChecked() ? lockedIcon : unlockedIcon);
118
119 m_page->canvasPreview->setImageSize(m_originalWidth, m_originalHeight);
120 m_page->canvasPreview->setCanvasSize(m_originalWidth, m_originalHeight);
121 m_page->canvasPreview->setImageOffset(m_xOffset, m_yOffset);
122
123 m_page->aspectRatioBtn->setKeepAspectRatio(cfg.readEntry("CanvasSize/KeepAspectRatio", false));
124 m_page->constrainProportionsCkb->setChecked(cfg.readEntry("CanvasSize/ConstrainProportions", false));
125 m_keepAspect = cfg.readEntry("CanvasSize/KeepAspectRatio", false);
126
127
128 m_group = new QButtonGroup(m_page);
129 m_group->addButton(m_page->topLeft, NORTH_WEST);
130 m_group->addButton(m_page->topCenter, NORTH);
131 m_group->addButton(m_page->topRight, NORTH_EAST);
132
133 m_group->addButton(m_page->middleLeft, WEST);
134 m_group->addButton(m_page->middleCenter, CENTER);
135 m_group->addButton(m_page->middleRight, EAST);
136
137 m_group->addButton(m_page->bottomLeft, SOUTH_WEST);
138 m_group->addButton(m_page->bottomCenter, SOUTH);
139 m_group->addButton(m_page->bottomRight, SOUTH_EAST);
140
142 m_group->button(CENTER)->setChecked(true);
144
145 KisSizeGroup *labelsGroup = new KisSizeGroup(this);
146 labelsGroup->addWidget(m_page->lblNewWidth);
147 labelsGroup->addWidget(m_page->lblNewHeight);
148 labelsGroup->addWidget(m_page->lblXOff);
149 labelsGroup->addWidget(m_page->lblYOff);
150 labelsGroup->addWidget(m_page->lblAnchor);
151
152 KisSizeGroup *spinboxesGroup = new KisSizeGroup(this);
153 spinboxesGroup->addWidget(m_page->newWidthDouble);
154 spinboxesGroup->addWidget(m_page->newHeightDouble);
155 spinboxesGroup->addWidget(m_page->xOffsetDouble);
156 spinboxesGroup->addWidget(m_page->yOffsetDouble);
157
158 KisSizeGroup *comboboxesGroup = new KisSizeGroup(this);
159 comboboxesGroup->addWidget(m_page->widthUnit);
160 comboboxesGroup->addWidget(m_page->heightUnit);
161 comboboxesGroup->addWidget(m_page->xOffUnit);
162 comboboxesGroup->addWidget(m_page->yOffUnit);
163
165 connect(this, SIGNAL(okClicked()), this, SLOT(accept()));
166
167 connect(m_page->newWidthDouble, SIGNAL(valueChangedPt(double)), this, SLOT(slotWidthChanged(double)));
168 connect(m_page->newHeightDouble, SIGNAL(valueChangedPt(double)), this, SLOT(slotHeightChanged(double)));
169 connect(m_page->widthUnit, SIGNAL(currentIndexChanged(int)), _widthUnitManager, SLOT(selectApparentUnitFromIndex(int)));
170 connect(m_page->heightUnit, SIGNAL(currentIndexChanged(int)), _heightUnitManager, SLOT(selectApparentUnitFromIndex(int)));
171 connect(_widthUnitManager, SIGNAL(unitChanged(int)), m_page->widthUnit, SLOT(setCurrentIndex(int)));
172 connect(_heightUnitManager, SIGNAL(unitChanged(int)), m_page->heightUnit, SLOT(setCurrentIndex(int)));
173
174 connect(m_page->xOffsetDouble, SIGNAL(valueChangedPt(double)), this, SLOT(slotXOffsetChanged(double)));
175 connect(m_page->yOffsetDouble, SIGNAL(valueChangedPt(double)), this, SLOT(slotYOffsetChanged(double)));
176 connect(m_page->xOffUnit, SIGNAL(currentIndexChanged(int)), _xOffsetUnitManager, SLOT(selectApparentUnitFromIndex(int)));
177 connect(m_page->yOffUnit, SIGNAL(currentIndexChanged(int)), _yOffsetUnitManager, SLOT(selectApparentUnitFromIndex(int)));
178 connect(_xOffsetUnitManager, SIGNAL(unitChanged(int)), m_page->xOffUnit, SLOT(setCurrentIndex(int)));
179 connect(_yOffsetUnitManager, SIGNAL(unitChanged(int)), m_page->yOffUnit, SLOT(setCurrentIndex(int)));
180
181 connect(m_page->lockxOffset, SIGNAL(toggled(bool)), this, SLOT(updatexOffsetIcon(bool)));
182 connect(m_page->lockyOffset, SIGNAL(toggled(bool)), this, SLOT(updateyOffsetIcon(bool)));
183 connect(m_page->lockxOffset, SIGNAL(toggled(bool)), m_page->canvasPreview , SLOT(setxOffsetLock(bool)));
184 connect(m_page->lockyOffset, SIGNAL(toggled(bool)), m_page->canvasPreview , SLOT(setyOffsetLock(bool)));
185
186 connect(m_page->constrainProportionsCkb, SIGNAL(toggled(bool)), this, SLOT(slotAspectChanged(bool)));
187 connect(m_page->aspectRatioBtn, SIGNAL(keepAspectRatioChanged(bool)), this, SLOT(slotAspectChanged(bool)));
188
189 connect(m_group, SIGNAL(idClicked(int)), SLOT(slotAnchorButtonClicked(int)));
190 connect(m_page->canvasPreview, SIGNAL(sigModifiedXOffset(int)), this, SLOT(slotCanvasPreviewXOffsetChanged(int)));
191 connect(m_page->canvasPreview, SIGNAL(sigModifiedYOffset(int)), this, SLOT(slotCanvasPreviewYOffsetChanged(int)));
192}
KisDocumentAwareSpinBoxUnitManager * _xOffsetUnitManager
void slotHeightChanged(double v)
static const QString PARAM_YOFFSET_UNIT
void updatexOffsetIcon(bool v)
void slotCanvasPreviewXOffsetChanged(int v)
const int m_originalWidth
KisDocumentAwareSpinBoxUnitManager * _widthUnitManager
void updateyOffsetIcon(bool v)
QButtonGroup * m_group
static const QString PARAM_HEIGHT_UNIT
WdgCanvasSize * m_page
void updateAnchorIcons(int id)
void slotYOffsetChanged(double v)
const int m_originalHeight
static const QString PARAM_XOFFSET_UNIT
const double m_resolution
KisDocumentAwareSpinBoxUnitManager * _yOffsetUnitManager
const double m_aspectRatio
void slotCanvasPreviewYOffsetChanged(int v)
void slotAspectChanged(bool keep)
KisDocumentAwareSpinBoxUnitManager * _heightUnitManager
void slotWidthChanged(double v)
static const QString PARAM_WIDTH_UNIT
void slotAnchorButtonClicked(int)
void slotXOffsetChanged(double v)
The KisDocumentAwareSpinBoxUnitManager class is a KisSpinBoxUnitManager that is able to connect to th...
void addWidget(QWidget *widget)
void setApparentUnitFromSymbol(QString pSymbol)
virtual QStringList getsUnitSymbolList(bool withName=false) const
void setMainWidget(QWidget *widget)
Definition KoDialog.cpp:345
virtual void setCaption(const QString &caption)
Definition KoDialog.cpp:489
void setButtons(ButtonCodes buttonMask)
Definition KoDialog.cpp:195
void setDefaultButton(ButtonCode id)
Definition KoDialog.cpp:293
@ 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
KoDialog(QWidget *parent=0, Qt::WindowFlags f=Qt::WindowFlags())
Definition KoDialog.cpp:176
void okClicked()
QIcon loadIcon(const QString &name)

References _heightUnitManager, _widthUnitManager, _xOffsetUnitManager, _yOffsetUnitManager, KisSizeGroup::addWidget(), KoDialog::Cancel, CENTER, EAST, KisSpinBoxUnitManager::getsUnitSymbolList(), height(), loadAnchorIcons(), KisIconUtils::loadIcon(), m_group, m_keepAspect, m_originalHeight, m_originalWidth, m_page, m_xOffset, m_yOffset, NORTH, NORTH_EAST, NORTH_WEST, KoDialog::Ok, KoDialog::okClicked(), PARAM_HEIGHT_UNIT, PARAM_WIDTH_UNIT, PARAM_XOFFSET_UNIT, PARAM_YOFFSET_UNIT, KisDocumentAwareSpinBoxUnitManager::PIX_DIR_Y, KisConfig::readEntry(), KisSpinBoxUnitManager::setApparentUnitFromSymbol(), KoDialog::setButtons(), KoDialog::setCaption(), KoDialog::setDefaultButton(), KoDialog::setMainWidget(), slotAnchorButtonClicked(), slotAspectChanged(), slotCanvasPreviewXOffsetChanged(), slotCanvasPreviewYOffsetChanged(), slotHeightChanged(), slotWidthChanged(), slotXOffsetChanged(), slotYOffsetChanged(), SOUTH, SOUTH_EAST, SOUTH_WEST, updateAnchorIcons(), updatexOffsetIcon(), updateyOffsetIcon(), WEST, and width().

◆ ~DlgCanvasSize()

DlgCanvasSize::~DlgCanvasSize ( )
override

Definition at line 194 of file dlg_canvassize.cc.

195{
196 KisConfig cfg(false);
197 cfg.writeEntry<bool>("CanvasSize/KeepAspectRatio", m_page->aspectRatioBtn->keepAspectRatio());
198 cfg.writeEntry<bool>("CanvasSize/ConstrainProportions", m_page->constrainProportionsCkb->isChecked());
199
200 cfg.writeEntry<QString>(PARAM_WIDTH_UNIT, _widthUnitManager->getApparentUnitSymbol());
202
205
206 delete m_page;
207}

References _heightUnitManager, _widthUnitManager, _xOffsetUnitManager, _yOffsetUnitManager, KisSpinBoxUnitManager::getApparentUnitSymbol(), m_page, PARAM_HEIGHT_UNIT, PARAM_WIDTH_UNIT, PARAM_XOFFSET_UNIT, PARAM_YOFFSET_UNIT, and KisConfig::writeEntry().

Member Function Documentation

◆ expectedOffset()

void DlgCanvasSize::expectedOffset ( int id,
double & xOffset,
double & yOffset )
private

Definition at line 499 of file dlg_canvassize.cc.

500{
501 const double xCoeff = (id % 3) * 0.5;
502 const double yCoeff = (int)(id / 3.0) * 0.5;
503
504 const int xDiff = m_newWidth - m_originalWidth;
505 const int yDiff = m_newHeight - m_originalHeight;
506
507 //convert to unitmanager default unit.
510}
qreal getConversionFactor(int dim, QString psymbol) const override

References _xOffsetUnitManager, _yOffsetUnitManager, KisDocumentAwareSpinBoxUnitManager::getConversionFactor(), KisSpinBoxUnitManager::LENGTH, m_newHeight, m_newWidth, m_originalHeight, m_originalWidth, xOffset(), and yOffset().

◆ height()

qint32 DlgCanvasSize::height ( )

Definition at line 214 of file dlg_canvassize.cc.

215{
216 return (qint32) m_newHeight;
217}

References m_newHeight.

◆ loadAnchorIcons()

void DlgCanvasSize::loadAnchorIcons ( )
private

◆ slotAnchorButtonClicked

void DlgCanvasSize::slotAnchorButtonClicked ( int id)
privateslot

Definition at line 263 of file dlg_canvassize.cc.

264{
265 updateOffset(id);
266 updateButtons(id);
267}
void updateOffset(int id)
void updateButtons(int forceId)

References updateButtons(), and updateOffset().

◆ slotAspectChanged

void DlgCanvasSize::slotAspectChanged ( bool keep)
privateslot

Definition at line 229 of file dlg_canvassize.cc.

230{
231 m_page->aspectRatioBtn->blockSignals(true);
232 m_page->constrainProportionsCkb->blockSignals(true);
233
234 m_page->aspectRatioBtn->setKeepAspectRatio(keep);
235 m_page->constrainProportionsCkb->setChecked(keep);
236
237 m_page->aspectRatioBtn->blockSignals(false);
238 m_page->constrainProportionsCkb->blockSignals(false);
239
240 m_keepAspect = keep;
241
242
243 if (keep) {
244 // Do a dummy update of all the data to force it to recalculate the offset and size
245 m_xOffset = 0;
246 m_yOffset = 0;
247
248 double h = m_page->newHeightDouble->valuePt();
249 double w = m_page->newWidthDouble->valuePt();
250
251 m_page->canvasPreview->blockSignals(true);
252 m_page->canvasPreview->setCanvasSize(w, h);
253 m_page->newWidthDouble->setValuePt(w);
254 m_page->newHeightDouble->setValuePt(h);
255 m_page->canvasPreview->setImageOffset(m_xOffset, m_yOffset);
256 m_page->canvasPreview->blockSignals(false);
259
260 }
261}

References CENTER, m_keepAspect, m_page, m_xOffset, m_yOffset, updateButtons(), and updateOffset().

◆ slotCanvasPreviewXOffsetChanged

void DlgCanvasSize::slotCanvasPreviewXOffsetChanged ( int v)
privateslot

Definition at line 338 of file dlg_canvassize.cc.

339{
341 m_page->xOffsetDouble->changeValue(newVal);
342}
qreal v

References _xOffsetUnitManager, KisDocumentAwareSpinBoxUnitManager::getConversionFactor(), KisSpinBoxUnitManager::LENGTH, m_page, and v.

◆ slotCanvasPreviewYOffsetChanged

void DlgCanvasSize::slotCanvasPreviewYOffsetChanged ( int v)
privateslot

Definition at line 344 of file dlg_canvassize.cc.

345{
346
348 m_page->yOffsetDouble->changeValue(newVal);
349}

References _yOffsetUnitManager, KisDocumentAwareSpinBoxUnitManager::getConversionFactor(), KisSpinBoxUnitManager::LENGTH, m_page, and v.

◆ slotHeightChanged

void DlgCanvasSize::slotHeightChanged ( double v)
privateslot

Definition at line 290 of file dlg_canvassize.cc.

291{
292 //this slot receives values in pt from the unitspinbox, so just use the resolution.
294 m_newHeight = qRound(resValue);
295
296 if (m_keepAspect) {
298 m_page->newWidthDouble->blockSignals(true);
299 m_page->newWidthDouble->changeValue(v * m_aspectRatio);
300 m_page->newWidthDouble->blockSignals(false);
301 }
302
303 int savedId = m_group->checkedId();
304 m_page->canvasPreview->blockSignals(true);
305 m_page->canvasPreview->setCanvasSize(m_newWidth, m_newHeight);
306 m_page->canvasPreview->blockSignals(false);
307 updateOffset(savedId);
308 updateButtons(savedId);
309}

References _heightUnitManager, KisDocumentAwareSpinBoxUnitManager::getConversionFactor(), KisSpinBoxUnitManager::LENGTH, m_aspectRatio, m_group, m_keepAspect, m_newHeight, m_newWidth, m_page, updateButtons(), updateOffset(), and v.

◆ slotWidthChanged

void DlgCanvasSize::slotWidthChanged ( double v)
privateslot

Definition at line 269 of file dlg_canvassize.cc.

270{
271 //this slot receives values in pt from the unitspinbox, so just use the resolution.
273 m_newWidth = qRound(resValue);
274
275 if (m_keepAspect) {
277 m_page->newHeightDouble->blockSignals(true);
278 m_page->newHeightDouble->changeValue(v / m_aspectRatio);
279 m_page->newHeightDouble->blockSignals(false);
280 }
281
282 int savedId = m_group->checkedId();
283 m_page->canvasPreview->blockSignals(true);
284 m_page->canvasPreview->setCanvasSize(m_newWidth, m_newHeight);
285 m_page->canvasPreview->blockSignals(false);
286 updateOffset(savedId);
287 updateButtons(savedId);
288}

References _widthUnitManager, KisDocumentAwareSpinBoxUnitManager::getConversionFactor(), KisSpinBoxUnitManager::LENGTH, m_aspectRatio, m_group, m_keepAspect, m_newHeight, m_newWidth, m_page, updateButtons(), updateOffset(), and v.

◆ slotXOffsetChanged

void DlgCanvasSize::slotXOffsetChanged ( double v)
privateslot

Definition at line 311 of file dlg_canvassize.cc.

312{
313 //this slot receives values in pt from the unitspinbox, so just use the resolution.
315 m_xOffset = qRound(resValue);
316
317 m_page->canvasPreview->blockSignals(true);
318 m_page->canvasPreview->setImageOffset(m_xOffset, m_yOffset);
319 m_page->canvasPreview->blockSignals(false);
320
321 updateButtons(-1);
322}

References _xOffsetUnitManager, KisDocumentAwareSpinBoxUnitManager::getConversionFactor(), KisSpinBoxUnitManager::LENGTH, m_page, m_xOffset, m_yOffset, updateButtons(), and v.

◆ slotYOffsetChanged

void DlgCanvasSize::slotYOffsetChanged ( double v)
privateslot

Definition at line 324 of file dlg_canvassize.cc.

325{
326 //this slot receives values in pt from the unitspinbox, so just use the resolution.
328 m_yOffset = qRound(resValue);
329
330
331 m_page->canvasPreview->blockSignals(true);
332 m_page->canvasPreview->setImageOffset(m_xOffset, m_yOffset);
333 m_page->canvasPreview->blockSignals(false);
334
335 updateButtons(-1);
336}

References _xOffsetUnitManager, KisDocumentAwareSpinBoxUnitManager::getConversionFactor(), KisSpinBoxUnitManager::LENGTH, m_page, m_xOffset, m_yOffset, updateButtons(), and v.

◆ updateAnchorIcons()

void DlgCanvasSize::updateAnchorIcons ( int id)
private

Definition at line 366 of file dlg_canvassize.cc.

367{
368 anchor iconLayout[10][9] = {
379 };
380
381 if (id == -1) {
382 id = SOUTH_EAST + 1;
383 }
384
385 // we are going to swap arrows direction based on width and height shrinking
386 bool shrinkWidth = (m_newWidth < m_originalWidth) ? true : false;
387 bool shrinkHeight = (m_newHeight < m_originalHeight) ? true : false;
388
389 for (int i = NORTH_WEST; i <= SOUTH_EAST; i++) {
390 anchor iconId = iconLayout[id][i];
391
392 // all corner arrows represents shrinking in some direction
393 if (shrinkWidth || shrinkHeight) {
394 switch (iconId) {
395 case NORTH_WEST: iconId = SOUTH_EAST; break;
396 case NORTH_EAST: iconId = SOUTH_WEST; break;
397 case SOUTH_WEST: iconId = NORTH_EAST; break;
398 case SOUTH_EAST: iconId = NORTH_WEST; break;
399 default: break;
400 }
401 }
402
403 if (shrinkWidth) {
404 switch (iconId) {
405 case WEST: iconId = EAST; break;
406 case EAST: iconId = WEST; break;
407 default: break;
408 }
409 }
410
411 if (shrinkHeight) {
412 switch (iconId) {
413 case NORTH: iconId = SOUTH; break;
414 case SOUTH: iconId = NORTH; break;
415 default: break;
416 }
417 }
418
419 QAbstractButton *button = m_group->button(i);
420
421 if (iconId == NONE) {
422 button->setIcon(QIcon());
423 } else {
424 button->setIcon(m_anchorIcons[iconId]);
425 }
426 }
427
428}
QPushButton * button(ButtonCode id) const
Definition KoDialog.cpp:582

References KoDialog::button(), EAST, m_anchorIcons, m_group, m_newHeight, m_newWidth, m_originalHeight, m_originalWidth, NONE, NORTH, NORTH_EAST, NORTH_WEST, SOUTH, SOUTH_EAST, SOUTH_WEST, and WEST.

◆ updateButtons()

void DlgCanvasSize::updateButtons ( int forceId)
private

Definition at line 430 of file dlg_canvassize.cc.

431{
432 int id = m_group->checkedId();
433
434 if (forceId != -1) {
435 m_group->setExclusive(true);
436 m_group->button(forceId)->setChecked(true);
437 updateAnchorIcons(forceId);
438 } else if (id != -1) {
439 double xOffset, yOffset;
441
442 // convert values to internal unit
443 int internalXOffset = 0;
444 int internalYOffset = 0;
445 const KoUnit xOffsetUnit = KoUnit::fromListForUi(m_page->xOffUnit->currentIndex());
446 internalXOffset = qRound(xOffsetUnit.fromUserValue(xOffset));
447 const KoUnit yOffsetUnit = KoUnit::fromListForUi(m_page->yOffUnit->currentIndex());
448 internalYOffset = qRound(yOffsetUnit.fromUserValue(yOffset));
449
450 bool offsetAsExpected =
451 internalXOffset == m_xOffset &&
452 internalYOffset == m_yOffset;
453
454 if (offsetAsExpected) {
455 m_group->setExclusive(true);
456 } else {
457 m_group->setExclusive(false);
458 m_group->button(id)->setChecked(false);
459 id = -1;
460 }
461
463 } else {
465 }
466}
void expectedOffset(int id, double &xOffset, double &yOffset)
qreal fromUserValue(qreal value) const
Definition KoUnit.cpp:201
static KoUnit fromListForUi(int index, ListOptions listOptions=ListAll, qreal factor=1.0)
Definition KoUnit.cpp:80

References expectedOffset(), KoUnit::fromListForUi(), KoUnit::fromUserValue(), m_group, m_page, m_xOffset, m_yOffset, updateAnchorIcons(), xOffset(), and yOffset().

◆ updateOffset()

void DlgCanvasSize::updateOffset ( int id)
private

Definition at line 468 of file dlg_canvassize.cc.

469{
470 if (id == -1) return;
471
472 double xOffset;
473 double yOffset;
475
476 m_page->xOffsetDouble->changeValue(xOffset);
477 m_page->yOffsetDouble->changeValue(yOffset);
478}

References expectedOffset(), m_page, xOffset(), and yOffset().

◆ updatexOffsetIcon

void DlgCanvasSize::updatexOffsetIcon ( bool v)
privateslot

Definition at line 479 of file dlg_canvassize.cc.

480{
481 if (v) {
482 m_page->xOffsetDouble->setReadOnly(true);
483 m_page->lockxOffset->setIcon(KisIconUtils::loadIcon("locked"));
484 } else {
485 m_page->xOffsetDouble->setReadOnly(false);
486 m_page->lockxOffset->setIcon(KisIconUtils::loadIcon("unlocked"));
487 }
488}

References KisIconUtils::loadIcon(), m_page, and v.

◆ updateyOffsetIcon

void DlgCanvasSize::updateyOffsetIcon ( bool v)
privateslot

Definition at line 489 of file dlg_canvassize.cc.

490{
491 if (v) {
492 m_page->yOffsetDouble->setReadOnly(true);
493 m_page->lockyOffset->setIcon(KisIconUtils::loadIcon("locked"));
494 } else {
495 m_page->yOffsetDouble->setReadOnly(false);
496 m_page->lockyOffset->setIcon(KisIconUtils::loadIcon("unlocked"));
497 }
498}

References KisIconUtils::loadIcon(), m_page, and v.

◆ width()

qint32 DlgCanvasSize::width ( )

Definition at line 209 of file dlg_canvassize.cc.

210{
211 return (qint32) m_newWidth;
212}

References m_newWidth.

◆ xOffset()

qint32 DlgCanvasSize::xOffset ( )

Definition at line 219 of file dlg_canvassize.cc.

220{
221 return (qint32) m_xOffset;
222}

References m_xOffset.

◆ yOffset()

qint32 DlgCanvasSize::yOffset ( )

Definition at line 224 of file dlg_canvassize.cc.

225{
226 return (qint32) m_yOffset;
227}

References m_yOffset.

Member Data Documentation

◆ _heightUnitManager

KisDocumentAwareSpinBoxUnitManager* DlgCanvasSize::_heightUnitManager
private

Definition at line 89 of file dlg_canvassize.h.

◆ _widthUnitManager

KisDocumentAwareSpinBoxUnitManager* DlgCanvasSize::_widthUnitManager
private

Definition at line 88 of file dlg_canvassize.h.

◆ _xOffsetUnitManager

KisDocumentAwareSpinBoxUnitManager* DlgCanvasSize::_xOffsetUnitManager
private

Definition at line 91 of file dlg_canvassize.h.

◆ _yOffsetUnitManager

KisDocumentAwareSpinBoxUnitManager* DlgCanvasSize::_yOffsetUnitManager
private

Definition at line 92 of file dlg_canvassize.h.

◆ m_anchorIcons

QIcon DlgCanvasSize::m_anchorIcons[9]
private

Definition at line 85 of file dlg_canvassize.h.

◆ m_aspectRatio

const double DlgCanvasSize::m_aspectRatio
private

Definition at line 79 of file dlg_canvassize.h.

◆ m_group

QButtonGroup* DlgCanvasSize::m_group
private

Definition at line 86 of file dlg_canvassize.h.

◆ m_keepAspect

bool DlgCanvasSize::m_keepAspect
private

Definition at line 78 of file dlg_canvassize.h.

◆ m_newHeight

int DlgCanvasSize::m_newHeight
private

Definition at line 82 of file dlg_canvassize.h.

◆ m_newWidth

int DlgCanvasSize::m_newWidth
private

Definition at line 82 of file dlg_canvassize.h.

◆ m_originalHeight

const int DlgCanvasSize::m_originalHeight
private

Definition at line 81 of file dlg_canvassize.h.

◆ m_originalWidth

const int DlgCanvasSize::m_originalWidth
private

Definition at line 81 of file dlg_canvassize.h.

◆ m_page

WdgCanvasSize* DlgCanvasSize::m_page

Definition at line 52 of file dlg_canvassize.h.

◆ m_resolution

const double DlgCanvasSize::m_resolution
private

Definition at line 80 of file dlg_canvassize.h.

◆ m_xOffset

int DlgCanvasSize::m_xOffset
private

Definition at line 83 of file dlg_canvassize.h.

◆ m_yOffset

int DlgCanvasSize::m_yOffset
private

Definition at line 83 of file dlg_canvassize.h.

◆ PARAM_HEIGHT_UNIT

const QString DlgCanvasSize::PARAM_HEIGHT_UNIT = DlgCanvasSize::PARAM_PREFIX + "_heightunit"
static

Definition at line 41 of file dlg_canvassize.h.

◆ PARAM_PREFIX

const QString DlgCanvasSize::PARAM_PREFIX = "canvasizedlg"
static

Definition at line 39 of file dlg_canvassize.h.

◆ PARAM_WIDTH_UNIT

const QString DlgCanvasSize::PARAM_WIDTH_UNIT = DlgCanvasSize::PARAM_PREFIX + "_widthunit"
static

Definition at line 40 of file dlg_canvassize.h.

◆ PARAM_XOFFSET_UNIT

const QString DlgCanvasSize::PARAM_XOFFSET_UNIT = DlgCanvasSize::PARAM_PREFIX + "_xoffsetunit"
static

Definition at line 42 of file dlg_canvassize.h.

◆ PARAM_YOFFSET_UNIT

const QString DlgCanvasSize::PARAM_YOFFSET_UNIT = DlgCanvasSize::PARAM_PREFIX + "_yoffsetunit"
static

Definition at line 43 of file dlg_canvassize.h.


The documentation for this class was generated from the following files: