summaryrefslogtreecommitdiff
path: root/fpdfsdk/pwl
diff options
context:
space:
mode:
authorLei Zhang <thestig@chromium.org>2017-08-29 11:34:12 -0700
committerChromium commit bot <commit-bot@chromium.org>2017-08-29 20:37:23 +0000
commit77f9bff2c229df771a43448a9d5087e042235936 (patch)
tree3bdc3d70491248a301c53275ccfe583b074d9184 /fpdfsdk/pwl
parentc9d6d68e9b91a0373d8aac42cdde5dac1925ec42 (diff)
downloadpdfium-77f9bff2c229df771a43448a9d5087e042235936.tar.xz
Reduce rounding errors when Invalidating rects.
Instead of using CFX_FloatRect::ToFxRect(), which always rounds down, use GetOuterRect() which correctly rounds up / down depending on the side of the rectangle. Change-Id: I7abd3a65e8c0467ed4303292f26a72737a5d553b Reviewed-on: https://pdfium-review.googlesource.com/12312 Commit-Queue: dsinclair <dsinclair@chromium.org> Reviewed-by: dsinclair <dsinclair@chromium.org>
Diffstat (limited to 'fpdfsdk/pwl')
-rw-r--r--fpdfsdk/pwl/cpwl_wnd.cpp15
-rw-r--r--fpdfsdk/pwl/cpwl_wnd.h2
2 files changed, 6 insertions, 11 deletions
diff --git a/fpdfsdk/pwl/cpwl_wnd.cpp b/fpdfsdk/pwl/cpwl_wnd.cpp
index 0198c63d6a..53c692dada 100644
--- a/fpdfsdk/pwl/cpwl_wnd.cpp
+++ b/fpdfsdk/pwl/cpwl_wnd.cpp
@@ -18,7 +18,6 @@
namespace {
constexpr float kDefaultFontSize = 9.0f;
-constexpr int kInvalidationInflate = 2;
} // namespace
@@ -302,11 +301,9 @@ void CPWL_Wnd::InvalidateRect(CFX_FloatRect* pRect) {
}
}
- FX_RECT rcWin = PWLtoWnd(rcRefresh);
- rcWin.left -= kInvalidationInflate;
- rcWin.top -= kInvalidationInflate;
- rcWin.right += kInvalidationInflate;
- rcWin.bottom += kInvalidationInflate;
+ CFX_FloatRect rcWin = PWLtoWnd(rcRefresh);
+ rcWin.Inflate(1, 1);
+ rcWin.Normalize();
if (CFX_SystemHandler* pSH = GetSystemHandler()) {
if (CPDFSDK_Widget* widget = static_cast<CPDFSDK_Widget*>(
@@ -737,11 +734,9 @@ CFX_Matrix CPWL_Wnd::GetWindowMatrix() const {
return mt;
}
-FX_RECT CPWL_Wnd::PWLtoWnd(const CFX_FloatRect& rect) const {
+CFX_FloatRect CPWL_Wnd::PWLtoWnd(const CFX_FloatRect& rect) const {
CFX_Matrix mt = GetWindowMatrix();
- CFX_FloatRect rcTemp = mt.TransformRect(rect);
- return FX_RECT((int32_t)(rcTemp.left + 0.5), (int32_t)(rcTemp.bottom + 0.5),
- (int32_t)(rcTemp.right + 0.5), (int32_t)(rcTemp.top + 0.5));
+ return mt.TransformRect(rect);
}
CFX_PointF CPWL_Wnd::ParentToChild(const CFX_PointF& point) const {
diff --git a/fpdfsdk/pwl/cpwl_wnd.h b/fpdfsdk/pwl/cpwl_wnd.h
index 3c6c2824e2..9c913f1c23 100644
--- a/fpdfsdk/pwl/cpwl_wnd.h
+++ b/fpdfsdk/pwl/cpwl_wnd.h
@@ -318,7 +318,7 @@ class CPWL_Wnd : public CPWL_TimerHandler, public CFX_Observable<CPWL_Wnd> {
void DrawChildAppearance(CFX_RenderDevice* pDevice,
const CFX_Matrix& mtUser2Device);
- FX_RECT PWLtoWnd(const CFX_FloatRect& rect) const;
+ CFX_FloatRect PWLtoWnd(const CFX_FloatRect& rect) const;
void AddChild(CPWL_Wnd* pWnd);
void RemoveChild(CPWL_Wnd* pWnd);