Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2701)

Unified Diff: core/fpdfapi/fpdf_page/include/cpdf_clippath.h

Issue 2301263003: Make CPDF_ClipPath have a CPDF_ClipPathData rather than inheriting (Closed)
Patch Set: safe bool while we're at it Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp ('k') | core/fxcrt/include/cfx_count_ref.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: core/fpdfapi/fpdf_page/include/cpdf_clippath.h
diff --git a/core/fpdfapi/fpdf_page/include/cpdf_clippath.h b/core/fpdfapi/fpdf_page/include/cpdf_clippath.h
index 1daacf55d07d751336edcdc9a9b034bb47c52a16..6b3cca0d41d9ef34a2543f2aecd5d3af360cbfbd 100644
--- a/core/fpdfapi/fpdf_page/include/cpdf_clippath.h
+++ b/core/fpdfapi/fpdf_page/include/cpdf_clippath.h
@@ -7,16 +7,33 @@
#ifndef CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_CLIPPATH_H_
#define CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_CLIPPATH_H_
-#include "core/fpdfapi/fpdf_page/cpdf_clippathdata.h"
+#include <memory>
+#include <utility>
+#include <vector>
+
#include "core/fpdfapi/fpdf_page/include/cpdf_path.h"
+#include "core/fxcrt/include/cfx_count_ref.h"
#include "core/fxcrt/include/fx_basic.h"
#include "core/fxcrt/include/fx_coordinates.h"
-#include "core/fxcrt/include/fx_system.h"
+class CPDF_Path;
class CPDF_TextObject;
-class CPDF_ClipPath : public CFX_CountRef<CPDF_ClipPathData> {
+class CPDF_ClipPath {
public:
+ CPDF_ClipPath();
+ CPDF_ClipPath(const CPDF_ClipPath& that);
+ ~CPDF_ClipPath();
+
+ void Emplace() { m_Ref.Emplace(); }
+ void SetNull() { m_Ref.SetNull(); }
+
+ explicit operator bool() const { return !!m_Ref; }
+ bool operator==(const CPDF_ClipPath& that) const {
+ return m_Ref == that.m_Ref;
+ }
+ bool operator!=(const CPDF_ClipPath& that) const { return !(*this == that); }
+
uint32_t GetPathCount() const;
CPDF_Path GetPath(size_t i) const;
uint8_t GetClipType(size_t i) const;
@@ -26,6 +43,21 @@ class CPDF_ClipPath : public CFX_CountRef<CPDF_ClipPathData> {
void AppendPath(CPDF_Path path, uint8_t type, bool bAutoMerge);
void AppendTexts(std::vector<std::unique_ptr<CPDF_TextObject>>* pTexts);
void Transform(const CFX_Matrix& matrix);
+
+ private:
+ class PathData {
+ public:
+ using PathAndTypeData = std::pair<CPDF_Path, uint8_t>;
+
+ PathData();
+ PathData(const PathData& that);
+ ~PathData();
+
+ std::vector<PathAndTypeData> m_PathAndTypeList;
+ std::vector<std::unique_ptr<CPDF_TextObject>> m_TextList;
+ };
+
+ CFX_CountRef<PathData> m_Ref;
};
#endif // CORE_FPDFAPI_FPDF_PAGE_INCLUDE_CPDF_CLIPPATH_H_
« no previous file with comments | « core/fpdfapi/fpdf_page/cpdf_shadingobject.cpp ('k') | core/fxcrt/include/cfx_count_ref.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698