Make fx_coordinates.h types have constexpr constructors. -- Default some methods that are defaultable. Change-Id: I7ab61ec17a98367d63cc098734d11c0beed219b2 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/110910 Commit-Queue: Tom Sepez <tsepez@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
diff --git a/core/fxcrt/fx_coordinates.h b/core/fxcrt/fx_coordinates.h index d62818b..f6b2347 100644 --- a/core/fxcrt/fx_coordinates.h +++ b/core/fxcrt/fx_coordinates.h
@@ -18,17 +18,12 @@ template <class BaseType> class CFX_PTemplate { public: - CFX_PTemplate() : x(0), y(0) {} - CFX_PTemplate(BaseType new_x, BaseType new_y) : x(new_x), y(new_y) {} - CFX_PTemplate(const CFX_PTemplate& other) : x(other.x), y(other.y) {} + constexpr CFX_PTemplate() = default; + constexpr CFX_PTemplate(BaseType new_x, BaseType new_y) + : x(new_x), y(new_y) {} + CFX_PTemplate(const CFX_PTemplate& other) = default; + CFX_PTemplate& operator=(const CFX_PTemplate& other) = default; - CFX_PTemplate& operator=(const CFX_PTemplate& other) { - if (this != &other) { - x = other.x; - y = other.y; - } - return *this; - } bool operator==(const CFX_PTemplate& other) const { return x == other.x && y == other.y; } @@ -52,8 +47,8 @@ return CFX_PTemplate(x - other.x, y - other.y); } - BaseType x; - BaseType y; + BaseType x = 0; + BaseType y = 0; }; using CFX_Point16 = CFX_PTemplate<int16_t>; using CFX_Point = CFX_PTemplate<int32_t>; @@ -62,13 +57,11 @@ template <class BaseType> class CFX_STemplate { public: - CFX_STemplate() : width(0), height(0) {} - - CFX_STemplate(BaseType new_width, BaseType new_height) + constexpr CFX_STemplate() = default; + constexpr CFX_STemplate(BaseType new_width, BaseType new_height) : width(new_width), height(new_height) {} - - CFX_STemplate(const CFX_STemplate& other) - : width(other.width), height(other.height) {} + CFX_STemplate(const CFX_STemplate& other) = default; + CFX_STemplate& operator=(const CFX_STemplate& other) = default; template <typename OtherType> CFX_STemplate<OtherType> As() const { @@ -80,13 +73,6 @@ width = 0; height = 0; } - CFX_STemplate& operator=(const CFX_STemplate& other) { - if (this != &other) { - width = other.width; - height = other.height; - } - return *this; - } bool operator==(const CFX_STemplate& other) const { return width == other.width && height == other.height; } @@ -126,8 +112,8 @@ return CFX_STemplate(width / divisor, height / divisor); } - BaseType width; - BaseType height; + BaseType width = 0; + BaseType height = 0; }; using CFX_Size = CFX_STemplate<int32_t>; using CFX_SizeF = CFX_STemplate<float>; @@ -160,8 +146,11 @@ // LTRB rectangles (y-axis runs downwards). // Struct layout is compatible with win32 RECT. struct FX_RECT { - FX_RECT() = default; - FX_RECT(int l, int t, int r, int b) : left(l), top(t), right(r), bottom(b) {} + constexpr FX_RECT() = default; + constexpr FX_RECT(int l, int t, int r, int b) + : left(l), top(t), right(r), bottom(b) {} + FX_RECT(const FX_RECT& that) = default; + FX_RECT& operator=(const FX_RECT& that) = default; int Width() const { return right - left; } int Height() const { return bottom - top; } @@ -202,6 +191,8 @@ constexpr CFX_FloatRect() = default; constexpr CFX_FloatRect(float l, float b, float r, float t) : left(l), bottom(b), right(r), top(t) {} + CFX_FloatRect(const CFX_FloatRect& that) = default; + CFX_FloatRect& operator=(const CFX_FloatRect& that) = default; explicit CFX_FloatRect(const FX_RECT& rect); explicit CFX_FloatRect(const CFX_PointF& point); @@ -295,9 +286,15 @@ using PointType = CFX_PointF; using SizeType = CFX_SizeF; - CFX_RectF() = default; - CFX_RectF(float dst_left, float dst_top, float dst_width, float dst_height) + constexpr CFX_RectF() = default; + constexpr CFX_RectF(float dst_left, + float dst_top, + float dst_width, + float dst_height) : left(dst_left), top(dst_top), width(dst_width), height(dst_height) {} + CFX_RectF(const CFX_RectF& other) = default; + CFX_RectF& operator=(const CFX_RectF& other) = default; + CFX_RectF(float dst_left, float dst_top, const SizeType& dst_size) : left(dst_left), top(dst_top), @@ -313,11 +310,6 @@ width(static_cast<float>(that.Width())), height(static_cast<float>(that.Height())) {} - // NOLINTNEXTLINE(runtime/explicit) - CFX_RectF(const CFX_RectF& other) = default; - - CFX_RectF& operator=(const CFX_RectF& other) = default; - CFX_RectF& operator+=(const PointType& p) { left += p.x; top += p.y;