diff --git a/plugins/extensions/imagesplit/dlg_imagesplit.h b/plugins/extensions/imagesplit/dlg_imagesplit.h --- a/plugins/extensions/imagesplit/dlg_imagesplit.h +++ b/plugins/extensions/imagesplit/dlg_imagesplit.h @@ -42,6 +42,7 @@ DlgImagesplit(KisViewManager* view, const QString &suffix, QStringList listMimeType, int defaultMimeIndex); ~DlgImagesplit() override; bool autoSave(); + bool sortHorizontal(); int horizontalLines(); int verticalLines(); int cmbIndex; diff --git a/plugins/extensions/imagesplit/dlg_imagesplit.cpp b/plugins/extensions/imagesplit/dlg_imagesplit.cpp --- a/plugins/extensions/imagesplit/dlg_imagesplit.cpp +++ b/plugins/extensions/imagesplit/dlg_imagesplit.cpp @@ -84,6 +84,14 @@ return false; } +bool DlgImagesplit::sortHorizontal() +{ + if (m_page->chkHorizontal->isChecked()) + return true; + else + return false; +} + int DlgImagesplit::horizontalLines() { return m_page->intHorizontalSplitLines->value(); diff --git a/plugins/extensions/imagesplit/imagesplit.cpp b/plugins/extensions/imagesplit/imagesplit.cpp --- a/plugins/extensions/imagesplit/imagesplit.cpp +++ b/plugins/extensions/imagesplit/imagesplit.cpp @@ -137,6 +137,12 @@ bool stop = false; + + QString mimeType; + QString filepath; + QString homepath; + QString suffix; + if (dlgImagesplit->autoSave()) { KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::OpenDirectory, "OpenDocument"); dialog.setCaption(i18n("Save Image on Split")); @@ -149,59 +155,76 @@ if (directory.isEmpty()) return; - for (int i = 0, k = 1; i < (numVerticalLines + 1); i++) { - for (int j = 0; j < (numHorizontalLines + 1); j++, k++) { - QString mimeTypeSelected = listMimeFilter.at(dlgImagesplit->cmbIndex); - QString homepath = directory.toLocalFile(); - QString suffix = KisMimeDatabase::suffixesForMimeType(mimeTypeSelected).first(); - qDebug() << "suffix" << suffix; - if (suffix.startsWith("*.")) { - suffix = suffix.remove(0, 1); - } - qDebug() << "\tsuffix" << suffix; - if (!suffix.startsWith(".")) { - suffix = suffix.prepend('.'); - } - qDebug() << "\tsuffix" << suffix; - QString fileName = dlgImagesplit->suffix() + '_' + QString::number(k) + suffix; - QString url = homepath + '/' + fileName; - if (!saveAsImage(QRect((i * img_width), (j * img_height), img_width, img_height), listMimeFilter.at(dlgImagesplit->cmbIndex), url)) { - stop = true; - break; - } - } - if (stop) { - break; - } + + mimeType = listMimeFilter.at(dlgImagesplit->cmbIndex); + homepath = directory.toLocalFile(); + suffix = KisMimeDatabase::suffixesForMimeType(mimeType).first(); + qDebug() << "suffix" << suffix; + if (suffix.startsWith("*.")) { + suffix = suffix.remove(0, 1); + } + qDebug() << "\tsuffix" << suffix; + if (!suffix.startsWith(".")) { + suffix = suffix.prepend('.'); } + qDebug() << "\tsuffix" << suffix; + } + + int outerLoop; + int innerLoop; + + if (dlgImagesplit->sortHorizontal()) { + outerLoop = numHorizontalLines + 1; + innerLoop = numVerticalLines + 1; } else { + outerLoop = numVerticalLines + 1; + innerLoop = numHorizontalLines + 1; + } + + + for (int i = 0, k = 1; i < outerLoop; i++) { + for (int j = 0; j < innerLoop; j++, k++) { + int row; + int column; + if (dlgImagesplit->sortHorizontal()) { + row = i; + column = j; + } + else { + row = j; + column = i; + } - for (int i = 0; i < (numVerticalLines + 1); i++) { - for (int j = 0; j < (numHorizontalLines + 1); j++) { + if (dlgImagesplit->autoSave()) { + QString fileName = dlgImagesplit->suffix() + '_' + QString::number(k) + suffix; + filepath = homepath + '/' + fileName; + mimeType = listMimeFilter.at(dlgImagesplit->cmbIndex); + } + else { KoFileDialog dialog(viewManager()->mainWindow(), KoFileDialog::SaveFile, "OpenDocument"); dialog.setCaption(i18n("Save Image on Split")); dialog.setDefaultDir(QStandardPaths::writableLocation(QStandardPaths::PicturesLocation)); dialog.setMimeTypeFilters(listMimeFilter, defaultMime); QUrl url = QUrl::fromUserInput(dialog.filename()); + filepath = url.toLocalFile(); - QString mimefilter = KisMimeDatabase::mimeTypeForFile(url.toLocalFile(), false); + mimeType = KisMimeDatabase::mimeTypeForFile(url.toLocalFile(), false); if (url.isEmpty()) return; - if (!saveAsImage(QRect((i * img_width), (j * img_height), img_width, img_height), mimefilter, url.toLocalFile())) { - stop = true; - break; - } + } - if (stop) { + if (!saveAsImage(QRect((column * img_width), (row * img_height), img_width, img_height), mimeType, filepath)) { + stop = true; break; } } - + if (stop) { + break; + } } - } delete dlgImagesplit; } diff --git a/plugins/extensions/imagesplit/wdg_imagesplit.cpp b/plugins/extensions/imagesplit/wdg_imagesplit.cpp --- a/plugins/extensions/imagesplit/wdg_imagesplit.cpp +++ b/plugins/extensions/imagesplit/wdg_imagesplit.cpp @@ -38,6 +38,7 @@ intHorizontalSplitLines->setValue(cfg.horizontalSplitLines()); intVerticalSplitLines->setValue(cfg.verticalSplitLines()); + chkHorizontal->setChecked(true); chkAutoSave->setChecked(true); } diff --git a/plugins/extensions/imagesplit/wdg_imagesplit.ui b/plugins/extensions/imagesplit/wdg_imagesplit.ui --- a/plugins/extensions/imagesplit/wdg_imagesplit.ui +++ b/plugins/extensions/imagesplit/wdg_imagesplit.ui @@ -46,6 +46,8 @@ + + @@ -58,6 +60,45 @@ + + + + + 10 + + + + Sort Direction: + + + + + + + + 10 + + + + Horizontal + + + + + + + + 10 + + + + Vertical + + + + + +