62 document->setCurrentImage(dst);
71 document->setFileBatchMode(
true);
72 if (!document->exportDocumentSync(url, mimeType.toLatin1())) {
73 if (document->errorMessage().isEmpty()) {
74 QMessageBox::critical(qApp->activeWindow(), i18nc(
"@title:window",
"Krita"), i18n(
"Could not save\n%1", document->localFilePath()));
76 QMessageBox::critical(qApp->activeWindow(), i18nc(
"@title:window",
"Krita"), i18n(
"Could not save %1\nReason: %2", document->localFilePath(), document->errorMessage()));
90 QString suffix = strList.at(0);
94 QString defaultMime = QString::fromLatin1(
viewManager()->document()->mimeType());
95 if (defaultMime.isEmpty()) defaultMime = QString::fromLatin1(
viewManager()->document()->nativeFormatMimeType());
96 int defaultMimeIndex = 0;
98 listMimeFilter.sort();
102 Q_FOREACH (
const QString &mimeType, listMimeFilter) {
104 filteredMimeTypes.append(mimeType);
105 if (mimeType == defaultMime) {
106 defaultMimeIndex = i;
111 listMimeFilter = filteredMimeTypes;
113 Q_ASSERT(listMimeFilter.size() == listFileType.size());
115 QList <qreal> xGuides =
viewManager()->document()->guidesConfig().verticalGuideLines();
116 QList <qreal> yGuides =
viewManager()->document()->guidesConfig().horizontalGuideLines();
118 std::sort(xGuides.begin(), xGuides.end());
119 std::sort(yGuides.begin(), yGuides.end());
122 const QTransform documentToImage =
123 QTransform::fromScale(image->
xRes(), image->
yRes());
125 for (
int i = 0; i< xGuides.size(); i++) {
126 qreal line = xGuides[i];
127 xGuides[i] = documentToImage.map(QPointF(line, line)).x();
129 for (
int i = 0; i< yGuides.size(); i++) {
130 qreal line = yGuides[i];
131 yGuides[i] = documentToImage.map(QPointF(line, line)).y();
134 qreal thumbnailRatio = qreal(200)/qMax(image->
width(), image->
height());
140 ,
viewManager()->document()->generatePreview(QSize(200, 200)).toImage()
141 , yGuides, xGuides, thumbnailRatio);
142 dlgImagesplit->setObjectName(
"Imagesplit");
143 Q_CHECK_PTR(dlgImagesplit);
145 if (dlgImagesplit->exec() == QDialog::Accepted) {
150 int img_width = image->
width() / (numVerticalLines + 1);
151 int img_height = image->
height() / (numHorizontalLines + 1);
154 numHorizontalLines = yGuides.size();
157 numVerticalLines = xGuides.size();
170 dialog.setCaption(i18n(
"Save Image on Split"));
171 dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation));
173 QString defaultMime = QString::fromLatin1(
viewManager()->document()->mimeType());
174 dialog.setMimeTypeFilters(mimeFilter, defaultMime);
176 QUrl directory = QUrl::fromUserInput(dialog.filename());
178 if (directory.isEmpty())
181 mimeType = listMimeFilter.at(dlgImagesplit->
cmbIndex);
182 homepath = directory.toLocalFile();
184 if (suffix.startsWith(
"*.")) {
185 suffix = suffix.remove(0, 1);
187 if (!suffix.startsWith(
".")) {
188 suffix = suffix.prepend(
'.');
196 outerLoop = numHorizontalLines + 1;
197 innerLoop = numVerticalLines + 1;
200 outerLoop = numVerticalLines + 1;
201 innerLoop = numHorizontalLines + 1;
204 xGuides.prepend(qreal(0));
205 xGuides.append(image->
width());
206 yGuides.prepend(qreal(0));
207 yGuides.append(image->
height());
212 for (
int i = 0, k = 1; i < outerLoop; i++) {
213 for (
int j = 0; j < innerLoop; j++, k++) {
226 currentX = xGuides[column];
227 img_width = xGuides[column+1]-currentX;
229 currentX = (column * img_width);
232 currentY = yGuides[row];
233 img_height = yGuides[row+1]-currentY;
235 currentY = (row * img_height);
239 QString fileName = dlgImagesplit->
suffix() +
'_' + QString::number(k) + suffix;
240 filepath = homepath +
'/' + fileName;
241 mimeType = listMimeFilter.at(dlgImagesplit->
cmbIndex);
245 dialog.setCaption(i18n(
"Save Image on Split"));
246 dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation));
247 dialog.setMimeTypeFilters(listMimeFilter, defaultMime);
249 QUrl url = QUrl::fromUserInput(dialog.filename());
250 filepath = url.toLocalFile();
258 if (!
saveAsImage(QRect(currentX, currentY, img_width, img_height), mimeType, filepath)) {
269 delete dlgImagesplit;