From fc1d16f76f173b8437edc93dde8f9f82abb51298 Mon Sep 17 00:00:00 2001 From: tsepez Date: Fri, 2 Sep 2016 15:45:22 -0700 Subject: Make CPDF_Path have a CFX_Path rather than inheriting Review-Url: https://codereview.chromium.org/2305103002 --- core/fpdfapi/fpdf_page/include/cpdf_path.h | 58 ++++++++++++++++-------------- 1 file changed, 32 insertions(+), 26 deletions(-) (limited to 'core/fpdfapi/fpdf_page/include') diff --git a/core/fpdfapi/fpdf_page/include/cpdf_path.h b/core/fpdfapi/fpdf_page/include/cpdf_path.h index e0ffa8c1dd..a9b0a7fac0 100644 --- a/core/fpdfapi/fpdf_page/include/cpdf_path.h +++ b/core/fpdfapi/fpdf_page/include/cpdf_path.h @@ -7,38 +7,44 @@ #ifndef CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_PATH_H_ #define CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_PATH_H_ +#include "core/fxcrt/include/cfx_count_ref.h" #include "core/fxcrt/include/fx_system.h" #include "core/fxge/include/cfx_fxgedevice.h" #include "core/fxge/include/cfx_pathdata.h" #include "core/fxge/include/cfx_renderdevice.h" -class CPDF_Path : public CFX_CountRef { +class CPDF_Path { public: - int GetPointCount() const { return GetObject()->GetPointCount(); } - int GetFlag(int index) const { return GetObject()->GetFlag(index); } - FX_FLOAT GetPointX(int index) const { return GetObject()->GetPointX(index); } - FX_FLOAT GetPointY(int index) const { return GetObject()->GetPointY(index); } - FX_PATHPOINT* GetPoints() const { return GetObject()->GetPoints(); } - CFX_FloatRect GetBoundingBox() const { return GetObject()->GetBoundingBox(); } - CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, - FX_FLOAT miter_limit) const { - return GetObject()->GetBoundingBox(line_width, miter_limit); - } - - FX_BOOL IsRect() const { return GetObject()->IsRect(); } - void Transform(const CFX_Matrix* pMatrix) { - GetPrivateCopy()->Transform(pMatrix); - } - void Append(const CPDF_Path& other, const CFX_Matrix* pMatrix) { - GetPrivateCopy()->Append(other.GetObject(), pMatrix); - } - - void AppendRect(FX_FLOAT left, - FX_FLOAT bottom, - FX_FLOAT right, - FX_FLOAT top) { - GetPrivateCopy()->AppendRect(left, bottom, right, top); - } + CPDF_Path(); + CPDF_Path(const CPDF_Path& that); + ~CPDF_Path(); + + void Emplace() { m_Ref.Emplace(); } + operator bool() const { return !!m_Ref; } + + int GetPointCount() const; + void SetPointCount(int count); + const FX_PATHPOINT* GetPoints() const; + FX_PATHPOINT* GetMutablePoints(); + + int GetFlag(int index) const; + FX_FLOAT GetPointX(int index) const; + FX_FLOAT GetPointY(int index) const; + CFX_FloatRect GetBoundingBox() const; + CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, FX_FLOAT miter_limit) const; + + FX_BOOL IsRect() const; + void Transform(const CFX_Matrix* pMatrix); + + void Append(const CPDF_Path& other, const CFX_Matrix* pMatrix); + void Append(const CFX_PathData* pData, const CFX_Matrix* pMatrix); + void AppendRect(FX_FLOAT left, FX_FLOAT bottom, FX_FLOAT right, FX_FLOAT top); + + // TODO(tsepez): Remove when all access thru this class. + const CFX_PathData* GetObject() const { return m_Ref.GetObject(); } + + private: + CFX_CountRef m_Ref; }; #endif // CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_PATH_H_ -- cgit v1.2.3