summaryrefslogtreecommitdiff
path: root/fpdfsdk/cfx_systemhandler.cpp
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/cfx_systemhandler.cpp
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/cfx_systemhandler.cpp')
-rw-r--r--fpdfsdk/cfx_systemhandler.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/fpdfsdk/cfx_systemhandler.cpp b/fpdfsdk/cfx_systemhandler.cpp
index 6281b1be91..c8b1ef4b04 100644
--- a/fpdfsdk/cfx_systemhandler.cpp
+++ b/fpdfsdk/cfx_systemhandler.cpp
@@ -40,7 +40,8 @@ CFX_SystemHandler::CFX_SystemHandler(CPDFSDK_FormFillEnvironment* pFormFillEnv)
CFX_SystemHandler::~CFX_SystemHandler() {}
-void CFX_SystemHandler::InvalidateRect(CPDFSDK_Widget* widget, FX_RECT rect) {
+void CFX_SystemHandler::InvalidateRect(CPDFSDK_Widget* widget,
+ const CFX_FloatRect& rect) {
CPDFSDK_PageView* pPageView = widget->GetPageView();
UnderlyingPageType* pPage = widget->GetUnderlyingPage();
if (!pPage || !pPageView)
@@ -51,14 +52,13 @@ void CFX_SystemHandler::InvalidateRect(CPDFSDK_Widget* widget, FX_RECT rect) {
CFX_Matrix device2page = page2device.GetInverse();
- CFX_PointF left_top = device2page.Transform(
- CFX_PointF(static_cast<float>(rect.left), static_cast<float>(rect.top)));
- CFX_PointF right_bottom = device2page.Transform(CFX_PointF(
- static_cast<float>(rect.right), static_cast<float>(rect.bottom)));
+ CFX_PointF left_top = device2page.Transform(CFX_PointF(rect.left, rect.top));
+ CFX_PointF right_bottom =
+ device2page.Transform(CFX_PointF(rect.right, rect.bottom));
CFX_FloatRect rcPDF(left_top.x, right_bottom.y, right_bottom.x, left_top.y);
rcPDF.Normalize();
- m_pFormFillEnv->Invalidate(pPage, rcPDF.ToFxRect());
+ m_pFormFillEnv->Invalidate(pPage, rcPDF.GetOuterRect());
}
void CFX_SystemHandler::OutputSelectedRect(CFFL_FormFiller* pFormFiller,