// 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 #include "core/fxge/cfx_pathdata.h" #include "core/fxge/cfx_renderdevice.h" class CFDE_Path { public: bool StartFigure(); bool CloseFigure(); void AddBezier(const std::vector& points); void AddBeziers(const std::vector& points); void AddCurve(const std::vector& points, bool bClosed, FX_FLOAT fTension = 0.5f); void AddEllipse(const CFX_RectF& rect); void AddLines(const std::vector& points); void AddLine(const CFX_PointF& pt1, const CFX_PointF& pt2); void AddPath(const CFDE_Path* pSrc, bool bConnect); void AddPolygon(const std::vector& points); void AddRectangle(const CFX_RectF& rect); FX_PATHPOINT* AddPoints(int32_t iCount); CFX_RectF GetBBox() const; CFX_RectF GetBBox(FX_FLOAT fLineWidth, FX_FLOAT fMiterLimit) const; 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(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); } FX_PATHPOINT* GetLastPoint() const; void GetCurveTangents(const std::vector& points, std::vector* tangents, bool bClosed, FX_FLOAT fTension) const; CFX_PathData m_Path; }; #endif // XFA_FDE_CFDE_PATH_H_