summaryrefslogtreecommitdiff
path: root/xfa/src/fdp/src/fde/fde_geobject.h
blob: 3b1b22901d2f3c9ee26ed2b6ee1280cb26126f10 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
// 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 _FDE_GRAPHOBJS_IMP
#define _FDE_GRAPHOBJS_IMP
#ifndef _FDEPLUS
#include "../../../foxitlib.h"
class CFDE_GEFontMgr;
class CFDE_Path : public IFDE_Path, public CFX_Target
{
public:
    virtual void			Release()
    {
        FDE_Delete this;
    }

    virtual FX_BOOL			StartFigure();
    virtual FX_BOOL			CloseFigure();

    virtual void			AddBezier(const CFX_PointsF &points);
    virtual void			AddBeziers(const CFX_PointsF &points);
    virtual void			AddCurve(const CFX_PointsF &points, FX_BOOL bClosed, FX_FLOAT fTension = 0.5f);
    virtual void			AddEllipse(const CFX_RectF &rect);
    virtual void			AddLines(const CFX_PointsF &points);
    virtual void			AddLine(const CFX_PointF &pt1, const CFX_PointF &pt2);
    virtual	void			AddPath(const IFDE_Path *pSrc, FX_BOOL bConnect);
    virtual void			AddPolygon(const CFX_PointsF &points);
    virtual void			AddRectangle(const CFX_RectF &rect);
    virtual void			GetBBox(CFX_RectF &bbox) const;
    virtual 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
#endif