Merge to XFA: Use stdint.h types throughout PDFium.
[pdfium.git] / xfa / src / fdp / include / fde_psr.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4 \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _FDE_PARSER\r
8 #define _FDE_PARSER\r
9 enum FDE_VISUALOBJTYPE {\r
10     FDE_VISUALOBJ_Canvas        =  0x00,\r
11     FDE_VISUALOBJ_Text          =  0x01 ,\r
12     FDE_VISUALOBJ_Image         =  0x02 ,\r
13     FDE_VISUALOBJ_Path          =  0x04 ,\r
14     FDE_VISUALOBJ_Widget        =  0x08 ,\r
15 };\r
16 typedef struct _FDE_HVISUALOBJ {\r
17     FX_LPVOID pData;\r
18 } const * FDE_HVISUALOBJ;\r
19 class IFDE_VisualSet\r
20 {\r
21 public:\r
22     virtual FDE_VISUALOBJTYPE   GetType() = 0;\r
23     virtual FX_BOOL             GetBBox(FDE_HVISUALOBJ hVisualObj, CFX_RectF &bbox) = 0;\r
24     virtual FX_BOOL             GetMatrix(FDE_HVISUALOBJ hVisualObj, CFX_Matrix &matrix) = 0;\r
25     virtual FX_BOOL             GetRect(FDE_HVISUALOBJ hVisualObj, CFX_RectF &rt) = 0;\r
26     virtual FX_BOOL             GetClip(FDE_HVISUALOBJ hVisualObj, CFX_RectF &rt) = 0;\r
27 };\r
28 class IFDE_CanvasSet : public IFDE_VisualSet\r
29 {\r
30 public:\r
31     virtual FX_POSITION                 GetFirstPosition(FDE_HVISUALOBJ hCanvas) = 0;\r
32     virtual FDE_HVISUALOBJ              GetNext(FDE_HVISUALOBJ hCanvas, FX_POSITION &pos, IFDE_VisualSet *&pVisualSet) = 0;\r
33     virtual FDE_HVISUALOBJ              GetParentCanvas(FDE_HVISUALOBJ hCanvas, IFDE_VisualSet *&pVisualSet) = 0;\r
34 };\r
35 class IFDE_TextSet : public IFDE_VisualSet\r
36 {\r
37 public:\r
38     virtual int32_t                     GetString(FDE_HVISUALOBJ hText, CFX_WideString &wsText) = 0;\r
39     virtual IFX_Font*                   GetFont(FDE_HVISUALOBJ hText) = 0;\r
40     virtual FX_FLOAT                    GetFontSize(FDE_HVISUALOBJ hText) = 0;\r
41     virtual FX_ARGB                             GetFontColor(FDE_HVISUALOBJ hText) = 0;\r
42     virtual int32_t                     GetDisplayPos(FDE_HVISUALOBJ hText, FXTEXT_CHARPOS *pCharPos, FX_BOOL bCharCode = FALSE, CFX_WideString *pWSForms = NULL) = 0;\r
43     virtual int32_t                     GetCharRects(FDE_HVISUALOBJ hText, CFX_RectFArray &rtArray) = 0;\r
44 };\r
45 class IFDE_ImageSet : public IFDE_VisualSet\r
46 {\r
47 public:\r
48     virtual IFDE_Image*                                 GetImage(FDE_HVISUALOBJ hImage) = 0;\r
49     virtual FX_POSITION                                 GetFirstFilterPosition(FDE_HVISUALOBJ hImage) = 0;\r
50     virtual FDE_LPCIMAGEFILTERPARAMS    GetNextFilter(FDE_HVISUALOBJ hImage, FX_POSITION &pos) = 0;\r
51 };\r
52 #define FDE_FILLMODE_Alternate          1\r
53 #define FDE_FILLMODE_Winding            2\r
54 #define FDE_PATHRENDER_Stroke           1\r
55 #define FDE_PATHRENDER_Fill                     2\r
56 #define FDE_PATHRENDER_FillStroke       3\r
57 class IFDE_PathSet : public IFDE_VisualSet\r
58 {\r
59 public:\r
60     virtual IFDE_Path*          GetPath(FDE_HVISUALOBJ hPath) = 0;\r
61     virtual int32_t             GetFillMode(FDE_HVISUALOBJ hPath) = 0;\r
62     virtual int32_t             GetRenderMode(FDE_HVISUALOBJ hPath) = 0;\r
63     virtual IFDE_Pen*           GetPen(FDE_HVISUALOBJ hPath) = 0;\r
64     virtual FX_FLOAT            GetPenWidth(FDE_HVISUALOBJ hPath) = 0;\r
65     virtual IFDE_Brush*         GetBrush(FDE_HVISUALOBJ hPath) = 0;\r
66 };\r
67 enum FDE_WIDGETOBJ {\r
68     FDE_WIDGETOBJ_Unknown               =       0x0000,\r
69     FDE_WIDGETOBJ_Anchor                =       0x0100,\r
70     FDE_WIDGETOBJ_NamedDest             =       0x0200,\r
71     FDE_WIDGETOBJ_HyperLink             =       0x0400,\r
72 };\r
73 #define FDE_WIDGETPARAM_Uri             1\r
74 #define FDE_WIDGETPARAM_Rects   2\r
75 class IFDE_WidgetSet : public IFDE_VisualSet\r
76 {\r
77 public:\r
78     virtual FDE_WIDGETOBJ       GetWidgetType(FDE_HVISUALOBJ hWidget) = 0;\r
79     virtual FX_FLOAT            GetFloat(FDE_HVISUALOBJ hWidget, int32_t iParameter, FX_FLOAT fDefVal = 0.0f) = 0;\r
80     virtual int32_t             GetInteger(FDE_HVISUALOBJ hWidget, int32_t iParameter, int32_t iDefVal = 0) = 0;\r
81     virtual FX_BOOL                     GetString(FDE_HVISUALOBJ hWidget, int32_t iParameter, CFX_WideString &wsValue) = 0;\r
82     virtual FX_BOOL                     GetRects(FDE_HVISUALOBJ hWidget, int32_t iParameter, CFX_RectFArray &rects) = 0;\r
83 };\r
84 class IFDE_VisualSetIterator\r
85 {\r
86 public:\r
87     static IFDE_VisualSetIterator*      Create();\r
88     virtual void                                        Release() = 0;\r
89     virtual FX_BOOL                                     AttachCanvas(IFDE_CanvasSet *pCanvas) = 0;\r
90     virtual FX_BOOL                                     FilterObjects(FX_DWORD dwObjects = 0xFFFFFFFF) = 0;\r
91     virtual void                                        Reset() = 0;\r
92     virtual FDE_HVISUALOBJ                      GetNext(IFDE_VisualSet *&pVisualSet, FDE_HVISUALOBJ *phCanvasObj = NULL, IFDE_CanvasSet **ppCanvasSet = NULL) = 0;\r
93 };\r
94 #endif\r