| // Copyright 2014 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef XFA_FDE_CFDE_PATH_H_ |
| #define XFA_FDE_CFDE_PATH_H_ |
| |
| #include "core/fxge/include/fx_ge.h" |
| #include "xfa/fgas/crt/fgas_memory.h" |
| |
| class CFDE_Path : public CFX_Target { |
| public: |
| FX_BOOL StartFigure(); |
| FX_BOOL CloseFigure(); |
| |
| void AddBezier(const CFX_PointsF& points); |
| void AddBeziers(const CFX_PointsF& points); |
| void AddCurve(const CFX_PointsF& points, |
| FX_BOOL bClosed, |
| FX_FLOAT fTension = 0.5f); |
| void AddEllipse(const CFX_RectF& rect); |
| void AddLines(const CFX_PointsF& points); |
| void AddLine(const CFX_PointF& pt1, const CFX_PointF& pt2); |
| void AddPath(const CFDE_Path* pSrc, FX_BOOL bConnect); |
| void AddPolygon(const CFX_PointsF& points); |
| void AddRectangle(const CFX_RectF& rect); |
| void GetBBox(CFX_RectF& bbox) const; |
| void GetBBox(CFX_RectF& bbox, |
| FX_FLOAT fLineWidth, |
| FX_FLOAT fMiterLimit) const; |
| FX_PATHPOINT* AddPoints(int32_t iCount); |
| FX_PATHPOINT* GetLastPoint(int32_t iCount = 1) const; |
| FX_BOOL FigureClosed() const; |
| void MoveTo(FX_FLOAT fx, FX_FLOAT fy); |
| void LineTo(FX_FLOAT fx, FX_FLOAT fy); |
| void BezierTo(const CFX_PointF& p1, |
| const CFX_PointF& p2, |
| const CFX_PointF& p3); |
| void ArcTo(FX_BOOL bStart, |
| const CFX_RectF& rect, |
| FX_FLOAT startAngle, |
| FX_FLOAT endAngle); |
| void MoveTo(const CFX_PointF& p0) { MoveTo(p0.x, p0.y); } |
| void LineTo(const CFX_PointF& p1) { LineTo(p1.x, p1.y); } |
| void GetCurveTangents(const CFX_PointsF& points, |
| CFX_PointsF& tangents, |
| FX_BOOL bClosed, |
| FX_FLOAT fTension) const; |
| CFX_PathData m_Path; |
| }; |
| |
| #endif // XFA_FDE_CFDE_PATH_H_ |