summaryrefslogtreecommitdiff
path: root/xfa/src/fdp/include/fde_psr.h
blob: 64070e6648497628349783c5cabbbdaca49b8b38 (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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// 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_PARSER
#define _FDE_PARSER
enum FDE_VISUALOBJTYPE {
    FDE_VISUALOBJ_Canvas	=  0x00,
    FDE_VISUALOBJ_Text		=  0x01	,
    FDE_VISUALOBJ_Image		=  0x02	,
    FDE_VISUALOBJ_Path		=  0x04	,
    FDE_VISUALOBJ_Widget	=  0x08	,
};
typedef struct _FDE_HVISUALOBJ {
    FX_LPVOID pData;
} const * FDE_HVISUALOBJ;
class IFDE_VisualSet
{
public:
    virtual FDE_VISUALOBJTYPE	GetType() = 0;
    virtual FX_BOOL		GetBBox(FDE_HVISUALOBJ hVisualObj, CFX_RectF &bbox) = 0;
    virtual FX_BOOL		GetMatrix(FDE_HVISUALOBJ hVisualObj, CFX_Matrix &matrix) = 0;
    virtual FX_BOOL		GetRect(FDE_HVISUALOBJ hVisualObj, CFX_RectF &rt) = 0;
    virtual FX_BOOL		GetClip(FDE_HVISUALOBJ hVisualObj, CFX_RectF &rt) = 0;
};
class IFDE_CanvasSet : public IFDE_VisualSet
{
public:
    virtual FX_POSITION			GetFirstPosition(FDE_HVISUALOBJ hCanvas) = 0;
    virtual FDE_HVISUALOBJ		GetNext(FDE_HVISUALOBJ hCanvas, FX_POSITION &pos, IFDE_VisualSet *&pVisualSet) = 0;
    virtual FDE_HVISUALOBJ		GetParentCanvas(FDE_HVISUALOBJ hCanvas, IFDE_VisualSet *&pVisualSet) = 0;
};
class IFDE_TextSet : public IFDE_VisualSet
{
public:
    virtual FX_INT32			GetString(FDE_HVISUALOBJ hText, CFX_WideString &wsText) = 0;
    virtual IFX_Font*			GetFont(FDE_HVISUALOBJ hText) = 0;
    virtual FX_FLOAT			GetFontSize(FDE_HVISUALOBJ hText) = 0;
    virtual FX_ARGB				GetFontColor(FDE_HVISUALOBJ hText) = 0;
    virtual FX_INT32			GetDisplayPos(FDE_HVISUALOBJ hText, FXTEXT_CHARPOS *pCharPos, FX_BOOL bCharCode = FALSE, CFX_WideString *pWSForms = NULL) = 0;
    virtual FX_INT32			GetCharRects(FDE_HVISUALOBJ hText, CFX_RectFArray &rtArray) = 0;
};
class IFDE_ImageSet : public IFDE_VisualSet
{
public:
    virtual IFDE_Image*					GetImage(FDE_HVISUALOBJ hImage) = 0;
    virtual FX_POSITION					GetFirstFilterPosition(FDE_HVISUALOBJ hImage) = 0;
    virtual FDE_LPCIMAGEFILTERPARAMS	GetNextFilter(FDE_HVISUALOBJ hImage, FX_POSITION &pos) = 0;
};
#define FDE_FILLMODE_Alternate		1
#define FDE_FILLMODE_Winding		2
#define FDE_PATHRENDER_Stroke		1
#define FDE_PATHRENDER_Fill			2
#define FDE_PATHRENDER_FillStroke	3
class IFDE_PathSet : public IFDE_VisualSet
{
public:
    virtual IFDE_Path*		GetPath(FDE_HVISUALOBJ hPath) = 0;
    virtual FX_INT32		GetFillMode(FDE_HVISUALOBJ hPath) = 0;
    virtual FX_INT32		GetRenderMode(FDE_HVISUALOBJ hPath) = 0;
    virtual IFDE_Pen*		GetPen(FDE_HVISUALOBJ hPath) = 0;
    virtual FX_FLOAT		GetPenWidth(FDE_HVISUALOBJ hPath) = 0;
    virtual IFDE_Brush*		GetBrush(FDE_HVISUALOBJ hPath) = 0;
};
enum FDE_WIDGETOBJ {
    FDE_WIDGETOBJ_Unknown		=	0x0000,
    FDE_WIDGETOBJ_Anchor		=	0x0100,
    FDE_WIDGETOBJ_NamedDest		=	0x0200,
    FDE_WIDGETOBJ_HyperLink		=	0x0400,
};
#define FDE_WIDGETPARAM_Uri		1
#define FDE_WIDGETPARAM_Rects	2
class IFDE_WidgetSet : public IFDE_VisualSet
{
public:
    virtual FDE_WIDGETOBJ	GetWidgetType(FDE_HVISUALOBJ hWidget) = 0;
    virtual FX_FLOAT		GetFloat(FDE_HVISUALOBJ hWidget, FX_INT32 iParameter, FX_FLOAT fDefVal = 0.0f) = 0;
    virtual FX_INT32		GetInteger(FDE_HVISUALOBJ hWidget, FX_INT32 iParameter, FX_INT32 iDefVal = 0) = 0;
    virtual FX_BOOL			GetString(FDE_HVISUALOBJ hWidget, FX_INT32 iParameter, CFX_WideString &wsValue) = 0;
    virtual FX_BOOL			GetRects(FDE_HVISUALOBJ hWidget, FX_INT32 iParameter, CFX_RectFArray &rects) = 0;
};
class IFDE_VisualSetIterator
{
public:
    static IFDE_VisualSetIterator*	Create();
    virtual void					Release() = 0;
    virtual FX_BOOL					AttachCanvas(IFDE_CanvasSet *pCanvas) = 0;
    virtual FX_BOOL					FilterObjects(FX_DWORD dwObjects = 0xFFFFFFFF) = 0;
    virtual void					Reset() = 0;
    virtual FDE_HVISUALOBJ			GetNext(IFDE_VisualSet *&pVisualSet, FDE_HVISUALOBJ *phCanvasObj = NULL, IFDE_CanvasSet **ppCanvasSet = NULL) = 0;
};
#endif