Use CFX_RectF::ToFloatRect() instead of explicit arithmetic. Also, tidy and back-fill a test for one of the existing constructors. Change-Id: Iff23fd8484dda054904038e1dd38f5b17bc2222c Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/53150 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/fx_coordinates.cpp b/core/fxcrt/fx_coordinates.cpp index eade580..11d07e2 100644 --- a/core/fxcrt/fx_coordinates.cpp +++ b/core/fxcrt/fx_coordinates.cpp
@@ -73,12 +73,9 @@ } } -CFX_FloatRect::CFX_FloatRect(const FX_RECT& rect) { - left = rect.left; - top = rect.bottom; - right = rect.right; - bottom = rect.top; -} +// Y-axis runs the opposite way in FX_RECT. +CFX_FloatRect::CFX_FloatRect(const FX_RECT& rect) + : left(rect.left), bottom(rect.top), right(rect.right), top(rect.bottom) {} // static CFX_FloatRect CFX_FloatRect::GetBBox(const CFX_PointF* pPoints, int nPoints) {
diff --git a/core/fxcrt/fx_coordinates_unittest.cpp b/core/fxcrt/fx_coordinates_unittest.cpp index 104bce3..14180d7 100644 --- a/core/fxcrt/fx_coordinates_unittest.cpp +++ b/core/fxcrt/fx_coordinates_unittest.cpp
@@ -8,6 +8,15 @@ #include "testing/gtest/include/gtest/gtest.h" +TEST(CFX_FloatRect, FromFXRect) { + FX_RECT downwards(10, 20, 30, 40); + CFX_FloatRect rect(downwards); + EXPECT_FLOAT_EQ(rect.left, 10.0f); + EXPECT_FLOAT_EQ(rect.bottom, 20.0f); + EXPECT_FLOAT_EQ(rect.right, 30.0f); + EXPECT_FLOAT_EQ(rect.top, 40.0f); +} + TEST(CFX_FloatRect, GetBBox) { CFX_FloatRect rect = CFX_FloatRect::GetBBox(nullptr, 0); EXPECT_FLOAT_EQ(0.0f, rect.left);
diff --git a/fpdfsdk/cpdfsdk_xfawidget.cpp b/fpdfsdk/cpdfsdk_xfawidget.cpp index ef6e127..a424d26 100644 --- a/fpdfsdk/cpdfsdk_xfawidget.cpp +++ b/fpdfsdk/cpdfsdk_xfawidget.cpp
@@ -31,7 +31,5 @@ } CFX_FloatRect CPDFSDK_XFAWidget::GetRect() const { - CFX_RectF rcBBox = GetXFAWidget()->GetLayoutItem()->GetRect(false); - return CFX_FloatRect(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width, - rcBBox.top + rcBBox.height); + return GetXFAWidget()->GetLayoutItem()->GetRect(false).ToFloatRect(); }
diff --git a/fpdfsdk/cpdfsdk_xfawidgethandler.cpp b/fpdfsdk/cpdfsdk_xfawidgethandler.cpp index deeff6e..3ed228e 100644 --- a/fpdfsdk/cpdfsdk_xfawidgethandler.cpp +++ b/fpdfsdk/cpdfsdk_xfawidgethandler.cpp
@@ -85,8 +85,7 @@ ? CXFA_FFWidget::kDrawFocus : CXFA_FFWidget::kDoNotDrawFocus); - CFX_FloatRect rcWidget(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width, - rcBBox.top + rcBBox.height); + CFX_FloatRect rcWidget = rcBBox.ToFloatRect(); rcWidget.Inflate(1.0f, 1.0f); return rcWidget; }
diff --git a/fpdfsdk/fpdf_formfill.cpp b/fpdfsdk/fpdf_formfill.cpp index 5be70cf..cf5e735 100644 --- a/fpdfsdk/fpdf_formfill.cpp +++ b/fpdfsdk/fpdf_formfill.cpp
@@ -280,9 +280,7 @@ if (pXFAAnnot->GetFormFieldType() == FormFieldType::kXFA) continue; - CFX_RectF rcBBox = pXFAAnnot->GetWidgetRect(); - CFX_FloatRect rcWidget(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width, - rcBBox.top + rcBBox.height); + CFX_FloatRect rcWidget = pXFAAnnot->GetWidgetRect().ToFloatRect(); rcWidget.Inflate(1.0f, 1.0f); if (rcWidget.Contains(CFX_PointF(static_cast<float>(page_x), static_cast<float>(page_y)))) {