summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrique Nakashima <hnakashima@chromium.org>2018-02-16 17:13:57 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-02-16 17:13:57 +0000
commitfcc9eb3a7c60fab1205ab5b6fb4fcccb1efb3892 (patch)
tree05c82900225b5bc77ca3d03d8aa7cb063cadbcc7
parent067a44fcad9196c6ad8cc3b2f86261b78ae54f48 (diff)
downloadpdfium-fcc9eb3a7c60fab1205ab5b6fb4fcccb1efb3892.tar.xz
Implement operator<< for CFX_Rect and CFX_RectF.
This is for debugging, so gated by #ifndef NDEBUG. Also make label the printed values to make them clear and differentiate top>bottom and bottom>top rect systems. Change-Id: I2d816b6b8b1be5fb5464630e771d200f2534917e Reviewed-on: https://pdfium-review.googlesource.com/26911 Reviewed-by: Ryan Harrison <rharrison@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
-rw-r--r--core/fxcrt/fx_coordinates.cpp6
-rw-r--r--core/fxcrt/fx_coordinates.h10
-rw-r--r--core/fxcrt/fx_coordinates_unittest.cpp37
3 files changed, 46 insertions, 7 deletions
diff --git a/core/fxcrt/fx_coordinates.cpp b/core/fxcrt/fx_coordinates.cpp
index 69fedb5522..d25a754d7a 100644
--- a/core/fxcrt/fx_coordinates.cpp
+++ b/core/fxcrt/fx_coordinates.cpp
@@ -201,11 +201,11 @@ FX_RECT CFX_FloatRect::ToRoundedFxRect() const {
#ifndef NDEBUG
std::ostream& operator<<(std::ostream& os, const CFX_FloatRect& rect) {
- os << "rect[" << rect.Width() << "x" << rect.Height() << " (" << rect.left
- << ", " << rect.bottom << ")]";
+ os << "rect[w " << rect.Width() << " x h " << rect.Height() << " (left "
+ << rect.left << ", bot " << rect.bottom << ")]";
return os;
}
-#endif
+#endif // NDEBUG
CFX_Matrix CFX_Matrix::GetInverse() const {
CFX_Matrix inverse;
diff --git a/core/fxcrt/fx_coordinates.h b/core/fxcrt/fx_coordinates.h
index 3d09652b13..2e8c1abca3 100644
--- a/core/fxcrt/fx_coordinates.h
+++ b/core/fxcrt/fx_coordinates.h
@@ -581,6 +581,16 @@ class CFX_RTemplate {
using CFX_Rect = CFX_RTemplate<int32_t>;
using CFX_RectF = CFX_RTemplate<float>;
+#ifndef NDEBUG
+template <class BaseType>
+std::ostream& operator<<(std::ostream& os,
+ const CFX_RTemplate<BaseType>& rect) {
+ os << "rect[w " << rect.Width() << " x h " << rect.Height() << " (left "
+ << rect.left << ", top " << rect.top << ")]";
+ return os;
+}
+#endif // NDEBUG
+
// The matrix is of the form:
// | a b 0 |
// | c d 0 |
diff --git a/core/fxcrt/fx_coordinates_unittest.cpp b/core/fxcrt/fx_coordinates_unittest.cpp
index 15ee661509..7c25d0da28 100644
--- a/core/fxcrt/fx_coordinates_unittest.cpp
+++ b/core/fxcrt/fx_coordinates_unittest.cpp
@@ -197,19 +197,48 @@ TEST(CFX_FloatRect, Print) {
std::ostringstream os;
CFX_FloatRect rect;
os << rect;
- EXPECT_STREQ("rect[0x0 (0, 0)]", os.str().c_str());
+ EXPECT_STREQ("rect[w 0 x h 0 (left 0, bot 0)]", os.str().c_str());
os.str("");
rect = CFX_FloatRect(10, 20, 14, 23);
os << rect;
- EXPECT_STREQ("rect[4x3 (10, 20)]", os.str().c_str());
+ EXPECT_STREQ("rect[w 4 x h 3 (left 10, bot 20)]", os.str().c_str());
os.str("");
rect = CFX_FloatRect(10.5, 20.5, 14.75, 23.75);
os << rect;
- EXPECT_STREQ("rect[4.25x3.25 (10.5, 20.5)]", os.str().c_str());
+ EXPECT_STREQ("rect[w 4.25 x h 3.25 (left 10.5, bot 20.5)]", os.str().c_str());
}
-#endif
+
+TEST(CFX_Rect, Print) {
+ std::ostringstream os;
+ CFX_Rect rect;
+ os << rect;
+ EXPECT_STREQ("rect[w 0 x h 0 (left 0, top 0)]", os.str().c_str());
+
+ os.str("");
+ rect = CFX_Rect(10, 20, 4, 3);
+ os << rect;
+ EXPECT_STREQ("rect[w 4 x h 3 (left 10, top 20)]", os.str().c_str());
+}
+
+TEST(CFX_RectF, Print) {
+ std::ostringstream os;
+ CFX_RectF rect;
+ os << rect;
+ EXPECT_STREQ("rect[w 0 x h 0 (left 0, top 0)]", os.str().c_str());
+
+ os.str("");
+ rect = CFX_RectF(10, 20, 4, 3);
+ os << rect;
+ EXPECT_STREQ("rect[w 4 x h 3 (left 10, top 20)]", os.str().c_str());
+
+ os.str("");
+ rect = CFX_RectF(10.5, 20.5, 4.25, 3.25);
+ os << rect;
+ EXPECT_STREQ("rect[w 4.25 x h 3.25 (left 10.5, top 20.5)]", os.str().c_str());
+}
+#endif // NDEBUG
TEST(CFX_Matrix, ReverseIdentity) {
CFX_Matrix m;