Commit f7cc5f1a authored by K. Moon's avatar K. Moon Committed by Commit Bot

Add missing functions to geometry_conversions.h

Adds functions for converting from gfx::Rect to pp::Rect, and from
gfx::Size to pp::Size.

Also makes a few extra improvements:
1. Adds unit tests.
2. Orders Point functions before Rect and Size, for consistency.

Bug: 1101101
Change-Id: I5e3b0a3e5361d799103c9771ac29a9c0b74df999
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2304931
Commit-Queue: K. Moon <kmoon@chromium.org>
Reviewed-by: default avatarLei Zhang <thestig@chromium.org>
Cr-Commit-Position: refs/heads/master@{#789694}
parent 953a8933
...@@ -207,6 +207,7 @@ if (enable_pdf) { ...@@ -207,6 +207,7 @@ if (enable_pdf) {
"pdfium/pdfium_print_unittest.cc", "pdfium/pdfium_print_unittest.cc",
"pdfium/pdfium_test_base.cc", "pdfium/pdfium_test_base.cc",
"pdfium/pdfium_test_base.h", "pdfium/pdfium_test_base.h",
"ppapi_migration/geometry_conversions_unittest.cc",
"range_set_unittest.cc", "range_set_unittest.cc",
] ]
...@@ -232,6 +233,7 @@ if (enable_pdf) { ...@@ -232,6 +233,7 @@ if (enable_pdf) {
"//testing/gmock", "//testing/gmock",
"//testing/gtest", "//testing/gtest",
"//third_party/pdfium", "//third_party/pdfium",
"//ui/gfx:test_support",
"//ui/gfx/geometry", "//ui/gfx/geometry",
"//ui/gfx/range", "//ui/gfx/range",
] ]
......
...@@ -13,21 +13,29 @@ ...@@ -13,21 +13,29 @@
namespace chrome_pdf { namespace chrome_pdf {
gfx::Point PointFromPPPoint(const PP_Point& pp_point) {
return gfx::Point(pp_point.x, pp_point.y);
}
PP_Point PPPointFromPoint(const gfx::Point& point) {
return PP_MakePoint(point.x(), point.y());
}
gfx::Rect RectFromPPRect(const PP_Rect& pp_rect) { gfx::Rect RectFromPPRect(const PP_Rect& pp_rect) {
return gfx::Rect(pp_rect.point.x, pp_rect.point.y, pp_rect.size.width, return gfx::Rect(pp_rect.point.x, pp_rect.point.y, pp_rect.size.width,
pp_rect.size.height); pp_rect.size.height);
} }
gfx::Size SizeFromPPSize(const PP_Size& pp_size) { PP_Rect PPRectFromRect(const gfx::Rect& rect) {
return gfx::Size(pp_size.width, pp_size.height); return PP_MakeRectFromXYWH(rect.x(), rect.y(), rect.width(), rect.height());
} }
gfx::Point PointFromPPPoint(const PP_Point& pp_point) { gfx::Size SizeFromPPSize(const PP_Size& pp_size) {
return gfx::Point(pp_point.x, pp_point.y); return gfx::Size(pp_size.width, pp_size.height);
} }
PP_Point PPPointFromPoint(const gfx::Point& point) { PP_Size PPSizeFromSize(const gfx::Size& size) {
return {point.x(), point.y()}; return PP_MakeSize(size.width(), size.height());
} }
} // namespace chrome_pdf } // namespace chrome_pdf
...@@ -17,11 +17,15 @@ class Size; ...@@ -17,11 +17,15 @@ class Size;
namespace chrome_pdf { namespace chrome_pdf {
gfx::Rect RectFromPPRect(const PP_Rect& pp_rect);
gfx::Size SizeFromPPSize(const PP_Size& pp_size);
gfx::Point PointFromPPPoint(const PP_Point& pp_point); gfx::Point PointFromPPPoint(const PP_Point& pp_point);
PP_Point PPPointFromPoint(const gfx::Point& point); PP_Point PPPointFromPoint(const gfx::Point& point);
gfx::Rect RectFromPPRect(const PP_Rect& pp_rect);
PP_Rect PPRectFromRect(const gfx::Rect& rect);
gfx::Size SizeFromPPSize(const PP_Size& pp_size);
PP_Size PPSizeFromSize(const gfx::Size& size);
} // namespace chrome_pdf } // namespace chrome_pdf
#endif // PDF_PPAPI_MIGRATION_GEOMETRY_CONVERSIONS_H_ #endif // PDF_PPAPI_MIGRATION_GEOMETRY_CONVERSIONS_H_
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "pdf/ppapi_migration/geometry_conversions.h"
#include "ppapi/c/pp_point.h"
#include "ppapi/c/pp_rect.h"
#include "ppapi/c/pp_size.h"
#include "ppapi/cpp/point.h"
#include "ppapi/cpp/rect.h"
#include "ppapi/cpp/size.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/gfx/geometry/point.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/geometry/size.h"
namespace chrome_pdf {
TEST(GeometryConversionsTest, PointFromPPPoint) {
gfx::Point point = PointFromPPPoint(pp::Point(-1, 2));
EXPECT_EQ(point, gfx::Point(-1, 2));
point = PointFromPPPoint(PP_MakePoint(2, -1));
EXPECT_EQ(point, gfx::Point(2, -1));
}
TEST(GeometryConversionsTest, PPPointFromPoint) {
pp::Point pp_cpp_point = PPPointFromPoint(gfx::Point(-1, 2));
EXPECT_EQ(pp_cpp_point.x(), -1);
EXPECT_EQ(pp_cpp_point.y(), 2);
PP_Point pp_c_point = PPPointFromPoint(gfx::Point(2, -1));
EXPECT_EQ(pp_c_point.x, 2);
EXPECT_EQ(pp_c_point.y, -1);
}
TEST(GeometryConversionsTest, RectFromPPRect) {
gfx::Rect rect = RectFromPPRect(pp::Rect(-1, 2, 3, 4));
EXPECT_EQ(rect, gfx::Rect(-1, 2, 3, 4));
rect = RectFromPPRect(PP_MakeRectFromXYWH(2, -1, 4, 3));
EXPECT_EQ(rect, gfx::Rect(2, -1, 4, 3));
}
TEST(GeometryConversionsTest, PPRectFromRect) {
pp::Rect pp_cpp_rect = PPRectFromRect(gfx::Rect(-1, 2, 3, 4));
EXPECT_EQ(pp_cpp_rect.x(), -1);
EXPECT_EQ(pp_cpp_rect.y(), 2);
EXPECT_EQ(pp_cpp_rect.width(), 3);
EXPECT_EQ(pp_cpp_rect.height(), 4);
PP_Rect pp_c_rect = PPRectFromRect(gfx::Rect(2, -1, 4, 3));
EXPECT_EQ(pp_c_rect.point.x, 2);
EXPECT_EQ(pp_c_rect.point.y, -1);
EXPECT_EQ(pp_c_rect.size.width, 4);
EXPECT_EQ(pp_c_rect.size.height, 3);
}
TEST(GeometryConversionsTest, SizeFromPPSize) {
gfx::Size size = SizeFromPPSize(pp::Size(3, 4));
EXPECT_EQ(size, gfx::Size(3, 4));
size = SizeFromPPSize(PP_MakeSize(4, 3));
EXPECT_EQ(size, gfx::Size(4, 3));
}
TEST(GeometryConversionsTest, PPSizeFromSize) {
pp::Size pp_cpp_size = PPSizeFromSize(gfx::Size(3, 4));
EXPECT_EQ(pp_cpp_size.width(), 3);
EXPECT_EQ(pp_cpp_size.height(), 4);
PP_Size pp_c_size = PPSizeFromSize(gfx::Size(4, 3));
EXPECT_EQ(pp_c_size.width, 4);
EXPECT_EQ(pp_c_size.height, 3);
}
} // namespace chrome_pdf
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment