Skip to content

Commit

Permalink
~ Add MODE_DISABLED into AutoManualMode enum.
Browse files Browse the repository at this point in the history
It allows to get rid of booleans storing enabled state for content/page boxes that essentially simplifies logic.
  • Loading branch information
4lex4 committed Jun 17, 2018
1 parent 67a7861 commit 7e7be03
Show file tree
Hide file tree
Showing 15 changed files with 135 additions and 222 deletions.
28 changes: 28 additions & 0 deletions AutoManualMode.cpp
@@ -0,0 +1,28 @@
#include "AutoManualMode.h"

QString autoManualModeToString(AutoManualMode mode) {
QString str;
switch (mode) {
case MODE_AUTO:
str = "auto";
break;
case MODE_MANUAL:
str = "manual";
break;
case MODE_DISABLED:
str = "disabled";
break;
}

return str;
}

AutoManualMode stringToAutoManualMode(const QString& str) {
if (str == "disabled") {
return MODE_DISABLED;
} else if (str == "manual") {
return MODE_MANUAL;
} else {
return MODE_AUTO;
}
}
26 changes: 7 additions & 19 deletions AutoManualMode.h
@@ -1,24 +1,12 @@
/*
Scan Tailor - Interactive post-processing tool for scanned pages.
Copyright (C) 2007-2008 Joseph Artsimovich <joseph_a@mail.ru>
#ifndef SCANTAILOR_ADVANCED_AUTOMANUALMODE_H
#define SCANTAILOR_ADVANCED_AUTOMANUALMODE_H

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
#include <QtCore/QString>

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
enum AutoManualMode { MODE_AUTO, MODE_MANUAL, MODE_DISABLED };

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
QString autoManualModeToString(AutoManualMode mode);

#ifndef AUTOMANUALMODE_H_
#define AUTOMANUALMODE_H_
AutoManualMode stringToAutoManualMode(const QString& str);

enum AutoManualMode { MODE_AUTO, MODE_MANUAL };

#endif
#endif // SCANTAILOR_ADVANCED_AUTOMANUALMODE_H
2 changes: 1 addition & 1 deletion CMakeLists.txt
Expand Up @@ -472,7 +472,7 @@ set(
SelectedPage.cpp SelectedPage.h
Utils.cpp Utils.h
PageView.h
AutoManualMode.h
AutoManualMode.cpp AutoManualMode.h
AbstractCommand.h
AbstractFilter.h
BeforeOrAfter.h
Expand Down
23 changes: 5 additions & 18 deletions DefaultParams.cpp
Expand Up @@ -178,21 +178,18 @@ QDomElement DefaultParams::PageSplitParams::toXml(QDomDocument& doc, const QStri
}

DefaultParams::SelectContentParams::SelectContentParams(const QSizeF& pageRectSize,
AutoManualMode pageDetectMode,
bool contentDetectEnabled,
bool pageDetectEnabled,
AutoManualMode pageDetectMode,
bool fineTuneCorners)
: pageRectSize(pageRectSize),
pageDetectMode(pageDetectMode),
contentDetectEnabled(contentDetectEnabled),
pageDetectEnabled(pageDetectEnabled),
pageDetectMode(pageDetectMode),
fineTuneCorners(fineTuneCorners) {}

DefaultParams::SelectContentParams::SelectContentParams()
: pageRectSize(QSizeF(210, 297)),
pageDetectMode(MODE_AUTO),
contentDetectEnabled(true),
pageDetectEnabled(false),
pageDetectMode(MODE_DISABLED),
fineTuneCorners(false) {}

const QSizeF& DefaultParams::SelectContentParams::getPageRectSize() const {
Expand All @@ -211,14 +208,6 @@ void DefaultParams::SelectContentParams::setContentDetectEnabled(bool contentDet
SelectContentParams::contentDetectEnabled = contentDetectEnabled;
}

bool DefaultParams::SelectContentParams::isPageDetectEnabled() const {
return pageDetectEnabled;
}

void DefaultParams::SelectContentParams::setPageDetectEnabled(bool pageDetectEnabled) {
SelectContentParams::pageDetectEnabled = pageDetectEnabled;
}

bool DefaultParams::SelectContentParams::isFineTuneCorners() const {
return fineTuneCorners;
}
Expand All @@ -229,17 +218,15 @@ void DefaultParams::SelectContentParams::setFineTuneCorners(bool fineTuneCorners

DefaultParams::SelectContentParams::SelectContentParams(const QDomElement& el)
: pageRectSize(XmlUnmarshaller::sizeF(el.namedItem("pageRectSize").toElement())),
pageDetectMode((el.attribute("pageDetectMode") == "manual") ? MODE_MANUAL : MODE_AUTO),
contentDetectEnabled(el.attribute("contentDetectEnabled") == "1"),
pageDetectEnabled(el.attribute("pageDetectEnabled") == "1"),
pageDetectMode(stringToAutoManualMode(el.attribute("pageDetectMode"))),
fineTuneCorners(el.attribute("fineTuneCorners") == "1") {}

QDomElement DefaultParams::SelectContentParams::toXml(QDomDocument& doc, const QString& name) const {
QDomElement el(doc.createElement(name));
el.appendChild(XmlMarshaller(doc).sizeF(pageRectSize, "pageRectSize"));
el.setAttribute("pageDetectMode", (pageDetectMode == MODE_AUTO) ? "auto" : "manual");
el.setAttribute("contentDetectEnabled", contentDetectEnabled ? "1" : "0");
el.setAttribute("pageDetectEnabled", pageDetectEnabled ? "1" : "0");
el.setAttribute("pageDetectMode", autoManualModeToString(pageDetectMode));
el.setAttribute("fineTuneCorners", fineTuneCorners ? "1" : "0");

return el;
Expand Down
10 changes: 2 additions & 8 deletions DefaultParams.h
Expand Up @@ -81,18 +81,16 @@ class DefaultParams {
class SelectContentParams {
private:
QSizeF pageRectSize;
AutoManualMode pageDetectMode;
bool contentDetectEnabled;
bool pageDetectEnabled;
AutoManualMode pageDetectMode;
bool fineTuneCorners;

public:
SelectContentParams();

SelectContentParams(const QSizeF& pageRectSize,
AutoManualMode pageDetectMode,
bool contentDetectEnabled,
bool pageDetectEnabled,
AutoManualMode pageDetectMode,
bool fineTuneCorners);

explicit SelectContentParams(const QDomElement& el);
Expand All @@ -107,10 +105,6 @@ class DefaultParams {

void setContentDetectEnabled(bool contentDetectEnabled);

bool isPageDetectEnabled() const;

void setPageDetectEnabled(bool pageDetectEnabled);

bool isFineTuneCorners() const;

void setFineTuneCorners(bool fineTuneCorners);
Expand Down
31 changes: 17 additions & 14 deletions DefaultParamsDialog.cpp
Expand Up @@ -168,19 +168,20 @@ void DefaultParamsDialog::updateDeskewDisplay(const DefaultParams::DeskewParams&
}

void DefaultParamsDialog::updateSelectContentDisplay(const DefaultParams::SelectContentParams& params) {
if (params.isPageDetectEnabled()) {
pageDetectOptions->setEnabled(true);
AutoManualMode pageDetectMode = params.getPageDetectMode();
fineTuneBtn->setEnabled(pageDetectMode == MODE_AUTO);
dimensionsWidget->setEnabled(pageDetectMode == MODE_MANUAL);
if (pageDetectMode == MODE_AUTO) {
const AutoManualMode pageDetectMode = params.getPageDetectMode();
pageDetectOptions->setEnabled(pageDetectMode != MODE_DISABLED);
fineTuneBtn->setEnabled(pageDetectMode == MODE_AUTO);
dimensionsWidget->setEnabled(pageDetectMode == MODE_MANUAL);
switch (pageDetectMode) {
case MODE_AUTO:
pageDetectAutoBtn->setChecked(true);
} else {
break;
case MODE_MANUAL:
pageDetectManualBtn->setChecked(true);
}
} else {
pageDetectOptions->setEnabled(false);
pageDetectDisableBtn->setChecked(true);
break;
case MODE_DISABLED:
pageDetectDisableBtn->setChecked(true);
break;
}

if (params.isContentDetectEnabled()) {
Expand Down Expand Up @@ -600,9 +601,11 @@ std::unique_ptr<DefaultParams> DefaultParamsDialog::buildParams() const {

DefaultParams::DeskewParams deskewParams(angleSpinBox->value(), deskewAutoBtn->isChecked() ? MODE_AUTO : MODE_MANUAL);

DefaultParams::SelectContentParams selectContentParams(
QSizeF(widthSpinBox->value(), heightSpinBox->value()), pageDetectManualBtn->isChecked() ? MODE_MANUAL : MODE_AUTO,
!contentDetectDisableBtn->isChecked(), !pageDetectDisableBtn->isChecked(), fineTuneBtn->isChecked());
const AutoManualMode pageBoxMode
= pageDetectDisableBtn->isChecked() ? MODE_DISABLED : pageDetectManualBtn->isChecked() ? MODE_MANUAL : MODE_AUTO;
DefaultParams::SelectContentParams selectContentParams(QSizeF(widthSpinBox->value(), heightSpinBox->value()),
!contentDetectDisableBtn->isChecked(), pageBoxMode,
fineTuneBtn->isChecked());

Alignment alignment;
switch (alignmentMode->currentIndex()) {
Expand Down
3 changes: 2 additions & 1 deletion UnitsObserver.h
Expand Up @@ -8,9 +8,10 @@
class Dpi;

class UnitsObserver {
public:
protected:
UnitsObserver();

public:
virtual ~UnitsObserver();

virtual void updateUnits(Units units) = 0;
Expand Down
7 changes: 3 additions & 4 deletions filters/select_content/CMakeLists.txt
Expand Up @@ -8,8 +8,7 @@ set_source_files_properties(${ui_sources} PROPERTIES GENERATED TRUE)
source_group("UI Files" FILES ${ui_files})
source_group("Generated" FILES ${ui_sources})

set(
sources
set(sources
ImageView.cpp ImageView.h
Filter.cpp Filter.h
OptionsWidget.cpp OptionsWidget.h
Expand All @@ -24,8 +23,8 @@ set(
Thumbnail.cpp Thumbnail.h
PhysSizeCalc.cpp PhysSizeCalc.h
OrderByWidthProvider.cpp OrderByWidthProvider.h
OrderByHeightProvider.cpp OrderByHeightProvider.h
)
OrderByHeightProvider.cpp OrderByHeightProvider.h)

source_group("Sources" FILES ${sources})
set(CMAKE_INCLUDE_CURRENT_DIR ON)
set(CMAKE_AUTOMOC ON)
Expand Down
2 changes: 1 addition & 1 deletion filters/select_content/CacheDrivenTask.cpp
Expand Up @@ -68,7 +68,7 @@ void CacheDrivenTask::process(const PageInfo& page_info,
if (auto* thumb_col = dynamic_cast<ThumbnailCollector*>(collector)) {
thumb_col->processThumbnail(std::unique_ptr<QGraphicsItem>(new Thumbnail(
thumb_col->thumbnailCache(), thumb_col->maxLogicalThumbSize(), page_info.imageId(), xform,
params->contentRect(), params->pageRect(), params->isPageDetectionEnabled(),
params->contentRect(), params->pageRect(), params->pageDetectionMode() != MODE_DISABLED,
m_ptrSettings->deviationProvider().isDeviant(page_info.id(), deviationCoef, deviationThreshold))));
}
} // CacheDrivenTask::process
Expand Down
7 changes: 3 additions & 4 deletions filters/select_content/Filter.cpp
Expand Up @@ -181,10 +181,9 @@ void Filter::loadDefaultSettings(const PageInfo& page_info) {
unitsConverter.convert(pageRectWidth, pageRectHeight, defaultParams.getUnits(), PIXELS);

m_ptrSettings->setPageParams(
page_info.id(),
Params(QRectF(), QSizeF(), QRectF(QPointF(0, 0), QSizeF(pageRectWidth, pageRectHeight)), Dependencies(),
MODE_AUTO, selectContentParams.getPageDetectMode(), selectContentParams.isContentDetectEnabled(),
selectContentParams.isPageDetectEnabled(), selectContentParams.isFineTuneCorners()));
page_info.id(), Params(QRectF(), QSizeF(), QRectF(QPointF(0, 0), QSizeF(pageRectWidth, pageRectHeight)),
Dependencies(), selectContentParams.isContentDetectEnabled() ? MODE_AUTO : MODE_DISABLED,
selectContentParams.getPageDetectMode(), selectContentParams.isFineTuneCorners()));
}

OptionsWidget* Filter::optionsWidget() {
Expand Down

0 comments on commit 7e7be03

Please sign in to comment.