Skip to content

Commit

Permalink
Another bugfix for Page Orientation fix feature
Browse files Browse the repository at this point in the history
Content and page zones weren't detected properly for some page if this
feature is disabled (which was by default).
  • Loading branch information
trufanov-nok committed Jun 25, 2019
1 parent 399ed0a commit 4cd0030
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 3 deletions.
10 changes: 7 additions & 3 deletions ImageTransformation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,10 @@ ImageTransformation::ImageTransformation(
m_origDpi(orig_dpi),
m_pageLevel(pageLevel)
{
if (!GlobalStaticSettings::m_drawDeskewOrientFix) {
m_pageLevel = ImageTransformation::PageLevel;
}

preScaleToEqualizeDpi();
}

Expand All @@ -54,18 +58,18 @@ ImageTransformation::preScaleToDpi(Dpi const& dpi)
);

// Undo's for the specified steps.
QTransform const undo21(m_preRotateXformPage.inverted() * m_preScaleXform.inverted());
QTransform const undo21(preRotateXform().inverted() * m_preScaleXform.inverted());
QTransform const undo4321(m_postRotateXform.inverted() * preCropXform().inverted() * undo21);

// Update transform #1: pre-scale.
m_preScaleXform.reset();
m_preScaleXform.scale(xscale, yscale);

// Update transform #2: pre-rotate.
m_preRotateXformPage = preRotation().transform(new_pre_scaled_image_size);
setPreRotateXform(preRotation().transform(new_pre_scaled_image_size));

// Update transform #3: pre-crop.
QTransform const redo12(m_preScaleXform * m_preRotateXformPage);
QTransform const redo12(m_preScaleXform * preRotateXform());
setPreCropArea((undo21 * redo12).map(preCropArea()));
setPreCropXform(calcCropXform(preCropArea()));

Expand Down
8 changes: 8 additions & 0 deletions ImageTransformation.h
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,14 @@ class ImageTransformation

QTransform const& preRotateXform() const { return m_pageLevel == PageLevel ? m_preRotateXformPage : m_preRotateXformImage; }

void setPreRotateXform(QTransform const& val) {
if (m_pageLevel == PageLevel) {
m_preRotateXformPage = val;
} else {
m_preRotateXformImage = val;
}
}

QTransform calcCropXform(QPolygonF const& crop_area);

QTransform calcPostRotateXform(double degrees);
Expand Down

0 comments on commit 4cd0030

Please sign in to comment.