Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 11 additions & 5 deletions src/core/filters/deskew/ImageView.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -249,9 +249,13 @@ void ImageView::dragFinished() {
* Get the point at the center of the widget content area, in widget coordinates.
*/
QPointF ImageView::getImageRotationOrigin() const {
const QRectF occupied(getOccupiedWidgetRect());
if (!occupied.isEmpty()) {
return occupied.center();
}

const QRectF contentArea(getContentAreaRect());
return QPointF(std::floor(0.5 * contentArea.width()) + 0.5 + contentArea.x(),
std::floor(0.5 * contentArea.height()) + 0.5 + contentArea.y());
return contentArea.center();
}

QRectF ImageView::getContentAreaRect() const {
Expand Down Expand Up @@ -285,7 +289,7 @@ QRectF ImageView::getRotationArcSquare() const {
arcSize.setHeight(arcSize.width());

QRectF arcSquare(QPointF(0, 0), arcSize);
arcSquare.moveCenter(reducedScreenRect.center());
arcSquare.moveCenter(getImageRotationOrigin());
return arcSquare;
}

Expand All @@ -303,15 +307,17 @@ std::pair<QPointF, QPointF> ImageView::getRotationHandles(const QRectF& arcSquar

QRectF ImageView::getObliqueArcSquare() const {
const QRectF reducedScreenRect(getContentAreaRect());
const QRectF occupied(getOccupiedWidgetRect());

const double obliqueSin = std::sin(m_maxObliqueDeg * constants::DEG2RAD);
QSizeF arcSize(obliqueSin, 1.0);
arcSize.scale(reducedScreenRect.size(), Qt::KeepAspectRatio);
arcSize.setWidth(arcSize.height());

QRectF arcSquare(QPointF(0, 0), arcSize);
arcSquare.moveRight(reducedScreenRect.right());
arcSquare.moveCenter(QPointF(arcSquare.center().x(), reducedScreenRect.center().y()));
const double rightEdge = occupied.isEmpty() ? reducedScreenRect.right() : occupied.right();
arcSquare.moveRight(rightEdge);
arcSquare.moveCenter(QPointF(arcSquare.center().x(), getImageRotationOrigin().y()));
return arcSquare;
}

Expand Down
6 changes: 2 additions & 4 deletions src/core/filters/deskew/Task.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -121,16 +121,14 @@ FilterResultPtr Task::process(const TaskStatus& status, FilterData data) {
status.throwIfCancelled();

bool autoObliqueEnabled = false;
if (priorParamsBeforeRecompute) {
autoObliqueEnabled = priorParamsBeforeRecompute->autoOblique();
} else if (const auto pending = m_settings->takePendingAutoOblique(m_pageId)) {
if (const auto pending = m_settings->takePendingAutoOblique(m_pageId)) {
autoObliqueEnabled = *pending;
} else {
autoObliqueEnabled = DefaultParamsProvider::getInstance().getParams().getDeskewParams().isAutoOblique();
}

double preservedObliqueDeg = 0.;
if (priorParamsBeforeRecompute && !priorParamsBeforeRecompute->autoOblique()) {
if (priorParamsBeforeRecompute && priorParamsBeforeRecompute->obliqueMode() == MODE_MANUAL) {
preservedObliqueDeg = priorParamsBeforeRecompute->obliqueAngle();
}

Expand Down
3 changes: 2 additions & 1 deletion src/core/filters/deskew/Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ using namespace deskew;
Params Utils::buildDefaultParams() {
const DefaultParams& defaultParams = DefaultParamsProvider::getInstance().getParams();
const DefaultParams::DeskewParams& deskewParams = defaultParams.getDeskewParams();
const AutoManualMode obliqueMode = deskewParams.isAutoOblique() ? MODE_AUTO : MODE_MANUAL;

return Params(deskewParams.getDeskewAngleDeg(), 0.0, Dependencies(), deskewParams.getMode(), MODE_AUTO);
return Params(deskewParams.getDeskewAngleDeg(), 0.0, Dependencies(), deskewParams.getMode(), obliqueMode);
}