Krita Source Code Documentation
Loading...
Searching...
No Matches
dlg_imagesplit.cpp
Go to the documentation of this file.
1/*
2 * dlg_imagesplit.cc - part of KimageShop^WKrayon^WKrita
3 *
4 * SPDX-FileCopyrightText: 2009 Boudewijn Rempt <boud@valdyas.org>
5 * SPDX-FileCopyrightText: 2011 Srikanth Tiyyagura <srikanth.tulasiram@gmail.com>
6 *
7 * SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10#include "dlg_imagesplit.h"
11
12#include <klocalizedstring.h>
13#include <kis_debug.h>
14
15#include <KisViewManager.h>
16#include <kis_image.h>
17#include <kis_paint_device.h>
18#include <QPainter>
19
21 , const QString &suffix
22 , QStringList listMimeFilter
23 , int defaultMimeIndex, QImage thumbnail
24 , QList<qreal> hGuides
25 , QList<qreal> vGuides, qreal thumbnailRatio)
26 : KoDialog(view->mainWindowAsQWidget())
27{
28 m_page = new WdgImagesplit(this);
29 m_thumbnail = thumbnail;
30 m_horizontalGuides = hGuides;
31 m_verticalGuides = vGuides;
32 m_thumbnailRatio = thumbnailRatio;
33
34 setCaption(i18n("Image Split"));
37
38 connect(this, SIGNAL(applyClicked()), this, SLOT(applyClicked()));
39
41 m_page->lineEdit->setText(suffix);
42 m_page->cmbFileType->clear();
43 m_page->cmbFileType->addItems(listMimeFilter);
44 m_page->cmbFileType->setCurrentIndex(defaultMimeIndex);
45 cmbIndex = defaultMimeIndex;
46
47 connect(m_page->chkAutoSave, SIGNAL(stateChanged(int)), SLOT(lineEditEnable()));
48 connect(m_page->cmbFileType, SIGNAL(activated(int)), this, SLOT(setMimeType(int)));
49 connect(m_page->chkGuidesHorizontal, SIGNAL(toggled(bool)), m_page->intHorizontalSplitLines, SLOT(setDisabled(bool)));
50 connect(m_page->chkGuidesVertical, SIGNAL(toggled(bool)), m_page->intVerticalSplitLines, SLOT(setDisabled(bool)));
51
52 connect(m_page->intVerticalSplitLines, SIGNAL(valueChanged(int)), SLOT(updatePreview()));
53 connect(m_page->intHorizontalSplitLines, SIGNAL(valueChanged(int)), SLOT(updatePreview()));
54 connect(m_page->chkGuidesHorizontal, SIGNAL(toggled(bool)), SLOT(updatePreview()));
55 connect(m_page->chkGuidesVertical, SIGNAL(toggled(bool)), SLOT(updatePreview()));
56
58}
59
63
65{
66 if (m_page->chkAutoSave->isChecked()) {
67 m_page->lblSuffix->setEnabled(true);
68 m_page->lineEdit->setEnabled(true);
69 m_page->lblFileType->setEnabled(true);
70 m_page->cmbFileType->setEnabled(true);
71 }
72 else
73 {
74 m_page->lblSuffix->setEnabled(false);
75 m_page->lineEdit->setEnabled(false);
76 m_page->lblFileType->setEnabled(false);
77 m_page->cmbFileType->setEnabled(false);
78 }
79
80}
81
83{
84 if (m_page->chkAutoSave->isChecked())
85 return true;
86 else
87 return false;
88}
89
91{
92 if (m_page->chkHorizontal->isChecked())
93 return true;
94 else
95 return false;
96}
97
99{
100 return m_page->intHorizontalSplitLines->value();
101}
102
104{
105 return m_page->intVerticalSplitLines->value();
106}
107
109{
110 return m_page->chkGuidesHorizontal->isChecked();
111}
112
114{
115 return m_page->chkGuidesVertical->isChecked();
116}
117
119{
120 return m_page->lineEdit->text();
121}
122
124{
125 cmbIndex = index;
126}
127
129{
130 QImage img = QImage(200, 200, QImage::Format_RGBA8888);
131 QPainter painter(&img);
132
133 img.fill(palette().window().color());
134 QPoint point;
135 point.setX((img.width()-m_thumbnail.width())*0.5);
136 point.setY((img.height()-m_thumbnail.height())*0.5);
137
138 painter.setOpacity(0.5);
139 painter.drawImage(point, m_thumbnail);
140
141 painter.setOpacity(1.0);
142 QPen pen = QPen(palette().highlight().color());
143 pen.setWidth(1);
144 painter.setPen(pen);
145
146 if (useHorizontalGuides()) {
147 for (int i = 0; i< m_horizontalGuides.size(); i++) {
148 int lineY = point.y() + (m_thumbnailRatio *m_horizontalGuides[i]);
149 painter.drawLine(point.x(), lineY, point.x()+m_thumbnail.width(), lineY);
150 }
151 } else {
152 int rowHeight = m_thumbnail.height()/(horizontalLines()+1);
153 for (int i = 0; i< horizontalLines(); i++) {
154 int lineY = point.y()+(rowHeight*(i+1));
155 painter.drawLine(point.x(), lineY, point.x()+m_thumbnail.width(), lineY);
156 }
157 }
158
159 if (useVerticalGuides()) {
160 for (int i = 0; i< m_verticalGuides.size(); i++) {
161 int lineX = point.x() + (m_thumbnailRatio *m_verticalGuides[i]);
162 painter.drawLine(lineX, point.y(), lineX, point.y()+m_thumbnail.height());
163 }
164 } else {
165 int columnWidth = m_thumbnail.width()/(verticalLines()+1);
166 for (int i = 0; i< verticalLines(); i++) {
167 int lineX = point.x()+(columnWidth*(i+1));
168 painter.drawLine(lineX, point.y(), lineX, point.y()+m_thumbnail.height());
169 }
170 }
171 painter.end(); // Otherwise there will always be a copy
172
173 m_page->imagePreviewLabel->setPixmap(QPixmap::fromImage(img));
174}
175
177{
178 accept();
179}
180
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
DlgImagesplit(KisViewManager *view, const QString &suffix, QStringList listMimeType, int defaultMimeIndex, QImage thumbnail, QList< qreal > hGuides, QList< qreal > vGuides, qreal thumbnailRatio)
~DlgImagesplit() override
QList< qreal > m_verticalGuides
void setMimeType(int index)
QList< qreal > m_horizontalGuides
WdgImagesplit * m_page
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
@ Apply
Show Apply button.
Definition KoDialog.h:128
@ Close
Show Close-button. (this button closes the dialog)
Definition KoDialog.h:131
rgba palette[MAX_PALETTE]
Definition palette.c:35