Cleanup CFX_PathData.

This CL replaces the array of path points with a vector. Cleaning up the usage
as required.

Change-Id: Ifa386a2c847005fef68af748ebe99c4e08961238
Reviewed-on: https://pdfium-review.googlesource.com/2710
Reviewed-by: Nicolás Peña <npm@chromium.org>
Reviewed-by: Tom Sepez <tsepez@chromium.org>
Commit-Queue: dsinclair <dsinclair@chromium.org>
diff --git a/core/fxge/cfx_pathdata.h b/core/fxge/cfx_pathdata.h
index 46fdfeb..7d5e6e2 100644
--- a/core/fxge/cfx_pathdata.h
+++ b/core/fxge/cfx_pathdata.h
@@ -7,6 +7,8 @@
 #ifndef CORE_FXGE_CFX_PATHDATA_H_
 #define CORE_FXGE_CFX_PATHDATA_H_
 
+#include <vector>
+
 #include "core/fxcrt/fx_coordinates.h"
 #include "core/fxcrt/fx_system.h"
 #include "core/fxge/cfx_renderdevice.h"
@@ -28,41 +30,37 @@
   CFX_PathData(const CFX_PathData& src);
   ~CFX_PathData();
 
-  int GetPointCount() const { return m_PointCount; }
-  FXPT_TYPE GetType(int index) const { return m_pPoints[index].m_Type; }
-  bool IsClosingFigure(int index) const {
-    return m_pPoints[index].m_CloseFigure;
-  }
-  FX_FLOAT GetPointX(int index) const { return m_pPoints[index].m_PointX; }
-  FX_FLOAT GetPointY(int index) const { return m_pPoints[index].m_PointY; }
-  FX_PATHPOINT* GetPoints() const { return m_pPoints; }
+  void Clear();
 
-  void SetPointCount(int nPoints);
-  void AllocPointCount(int nPoints);
-  void AddPointCount(int addPoints);
+  FXPT_TYPE GetType(int index) const { return m_Points[index].m_Type; }
+  bool IsClosingFigure(int index) const {
+    return m_Points[index].m_CloseFigure;
+  }
+
+  FX_FLOAT GetPointX(int index) const { return m_Points[index].m_PointX; }
+  FX_FLOAT GetPointY(int index) const { return m_Points[index].m_PointY; }
+  const std::vector<FX_PATHPOINT>& GetPoints() const { return m_Points; }
+  std::vector<FX_PATHPOINT>& GetPoints() { return m_Points; }
+
   CFX_FloatRect GetBoundingBox() const;
   CFX_FloatRect GetBoundingBox(FX_FLOAT line_width, FX_FLOAT miter_limit) const;
+
   void Transform(const CFX_Matrix* pMatrix);
   bool IsRect() const;
-  bool GetZeroAreaPath(CFX_PathData& NewPath,
+  bool GetZeroAreaPath(CFX_PathData* NewPath,
                        CFX_Matrix* pMatrix,
                        bool& bThin,
                        bool bAdjust) const;
   bool IsRect(const CFX_Matrix* pMatrix, CFX_FloatRect* rect) const;
+
+  void Append(const CFX_PathData& data);
   void Append(const CFX_PathData* pSrc, const CFX_Matrix* pMatrix);
   void AppendRect(FX_FLOAT left, FX_FLOAT bottom, FX_FLOAT right, FX_FLOAT top);
-  void SetPoint(int index,
-                FX_FLOAT x,
-                FX_FLOAT y,
-                FXPT_TYPE type,
-                bool closeFigure);
-  void TrimPoints(int nPoints);
-  void Copy(const CFX_PathData& src);
+  void AppendPoint(FX_FLOAT x, FX_FLOAT y, FXPT_TYPE type, bool closeFigure);
+  void ClosePath();
 
  private:
-  int m_PointCount;
-  int m_AllocCount;
-  FX_PATHPOINT* m_pPoints;
+  std::vector<FX_PATHPOINT> m_Points;
 };
 
 #endif  // CORE_FXGE_CFX_PATHDATA_H_