1ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Copyright 2014 PDFium Authors. All rights reserved.
2ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Use of this source code is governed by a BSD-style license that can be
3ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// found in the LICENSE file.
4ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
5ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
7ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FPDF_DOC_H_
8ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define _FPDF_DOC_H_
9ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FPDF_PARSER_
10ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../fpdfapi/fpdf_parser.h"
11ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
12ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#ifndef _FPDF_RENDER_
13ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#include "../fpdfapi/fpdf_render.h"
14ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
15ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Action;
16ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Annot;
17ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_AnnotList;
18ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Bookmark;
19ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_BookmarkTree;
20ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Dest;
21ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Link;
22ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_LinkList;
23ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Metadata;
24ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_NameTree;
25ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_NumberTree;
26ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_TextObject;
27ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ViewerPreferences;
28ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Page;
29ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_RenderOptions;
30ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CXML_Element;
31ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_OCContext;
32ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_DocJSActions;
33ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ActionFields;
34ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_AAction;
35ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FileSpec;
36ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_IconFit;
37ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_DefaultAppearance;
38ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_InterForm;
39ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FormField;
40ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FormNotify;
41ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FormControl;
42ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_LWinParam;
43ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CFieldTree;
44ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ApSettings;
45ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_NameTree : public CFX_Object
46ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
47ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
48ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
49ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_NameTree(CPDF_Dictionary* pRoot)
50ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
51ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pRoot = pRoot;
52ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
53ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
54ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_NameTree(CPDF_Document* pDoc, FX_BSTR category);
55ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
56ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Object*		LookupValue(int nIndex, CFX_ByteString& csName) const;
57ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
58ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Object*		LookupValue(const CFX_ByteString& csName) const;
59ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
60ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Array*			LookupNamedDest(CPDF_Document* pDoc, FX_BSTR sName);
61ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
62ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					GetIndex(const CFX_ByteString& csName) const;
63ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
64ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					GetCount() const;
65ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
66ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
67ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	GetRoot() const
68ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
69ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pRoot;
70ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
71ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
72ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
73ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
74ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		m_pRoot;
75ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
76ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_BookmarkTree : public CFX_Object
77ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
78ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
79ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
80ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_BookmarkTree(CPDF_Document* pDoc)
81ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
82ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDocument = pDoc;
83ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
84ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
85ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
86ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
87ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
88ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Bookmark		GetFirstChild(CPDF_Bookmark parent);
89ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
90ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Bookmark		GetNextSibling(CPDF_Bookmark bookmark);
91ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
92ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
93ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		GetDocument() const
94ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
95ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDocument;
96ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
97ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
98ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
99ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		m_pDocument;
100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFBOOKMARK_ITALIC			1
102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFBOOKMARK_BOLD			2
103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Bookmark : public CFX_Object
104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Bookmark(CPDF_Dictionary* pDict = NULL)
108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Dictionary*() const
113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD			GetColorRef();
120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD			GetFontStyle();
122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString		GetTitle();
124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dest			GetDest(CPDF_Document* pDocument);
129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action			GetAction();
131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	m_pDict;
134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_XYZ					1
136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_FITPAGE				2
137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_FITHORZ				3
138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_FITVERT				4
139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_FITRECT				5
140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_FITBBOX				6
141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_FITBHORZ			7
142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFZOOM_FITBVERT			8
144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Dest : public CFX_Object
145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dest(CPDF_Object* pObj = NULL)
149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pObj = pObj;
151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Object* () const
154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pObj;
156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetRemoteName();
159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					GetPageIndex(CPDF_Document* pDoc);
161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD			GetPageObjNum();
163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					GetZoomMode();
165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_FLOAT			GetParam(int index);
167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Object*		m_pObj;
170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_OCContext : public CFX_Object, public IPDF_OCContext
172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    enum UsageType {
176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        View = 0,
177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Design,
178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Print,
179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Export
180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    };
181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_OCContext(CPDF_Document *pDoc, UsageType eUsageType = View);
183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual ~CPDF_OCContext();
185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*	GetDocument() const
187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDocument;
189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UsageType		GetUsageType() const
192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_eUsageType;
194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			CheckOCGVisible(const CPDF_Dictionary *pOCGDict);
197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void			ResetOCContext();
199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			LoadOCGStateFromConfig(FX_BSTR csConfig, const CPDF_Dictionary *pOCGDict, FX_BOOL &bValidConfig) const;
202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			LoadOCGState(const CPDF_Dictionary *pOCGDict) const;
204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			GetOCGVisible(const CPDF_Dictionary *pOCGDict);
206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			GetOCGVE(CPDF_Array *pExpression, FX_BOOL bFromConfig, int nLevel = 0);
208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			LoadOCMDState(const CPDF_Dictionary *pOCMDDict, FX_BOOL bFromConfig);
210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document		*m_pDocument;
212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    UsageType			m_eUsageType;
214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_MapPtrTemplate<const CPDF_Dictionary*, void*>	m_OCGStates;
216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_LWinParam : public CFX_Object
218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_LWinParam(CPDF_Dictionary* pDict)
222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Dictionary* () const
227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_ByteString	GetFileName()
232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetString("F");
234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_ByteString	GetDefaultDirectory()
238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetString("D");
240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_ByteString	GetOperation()
244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetString("O");
246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_ByteString	GetParameter()
250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetString("P");
252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		m_pDict;
255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ActionFields : public CFX_Object
257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_ActionFields(const CPDF_Action* pAction)
261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pAction = (CPDF_Action*)pAction;
263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Action*() const
266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pAction;
268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				GetFieldsCount() const;
271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					GetAllFields(CFX_PtrArray& fieldObjects) const;
273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Object*			GetField(FX_DWORD iIndex) const;
275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action*			m_pAction;
277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFNAMED_NEXTPAGE		1
280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFNAMED_PREVPAGE		2
281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFNAMED_FIRSTPAGE		3
282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFNAMED_LASTPAGE		4
283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define PDFJS_MAXLENGTH			64
284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Action : public CFX_Object
285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action(CPDF_Dictionary* pDict = NULL)
289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
292ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Dictionary* () const
294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    enum ActionType {
299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Unknown = 0,
300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GoTo,
301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GoToR,
302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GoToE,
303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Launch,
304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Thread,
305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        URI,
306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Sound,
307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Movie,
308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Hide,
309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Named,
310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        SubmitForm,
311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ResetForm,
312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ImportData,
313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        JavaScript,
314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        SetOCGState,
315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Rendition,
316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Trans,
317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GoTo3DView
318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    };
319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetTypeName() const
321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetString("S");
323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ActionType			GetType() const;
326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dest			GetDest(CPDF_Document* pDoc) const;
330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString		GetFilePath() const;
336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				GetNewWindow() const
341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetBoolean("NewWindow");
343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_LWinParam		GetWinParam() const;
349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetURI(CPDF_Document* pDoc) const;
354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				GetMouseMap() const
359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetBoolean("IsMap");
361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_ActionFields	GetWidgets() const
367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return this;
369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				GetHideStatus() const
375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetBoolean("H", TRUE);
377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetNamedAction() const
383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetString("N");
385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD			GetFlags() const
391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetInteger("Flags");
393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString		GetJavaScript() const;
399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	GetAnnot() const;
404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_INT32			GetOperationType() const;
409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Stream*		GetSoundStream() const
414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetStream("Sound");
416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_FLOAT			GetVolume() const
419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetNumber("Volume");
421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				IsSynchronous() const
424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetBoolean("Synchronous");
426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				IsRepeat() const
429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetBoolean("Repeat");
431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				IsMixPlay() const
434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict->GetBoolean("Mix");
436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD			GetSubActionsCount() const;
442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action			GetSubAction(FX_DWORD iIndex) const;
444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	m_pDict;
447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_AAction : public CFX_Object
449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_AAction(CPDF_Dictionary* pDict = NULL)
453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Dictionary*()	const
458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    enum AActionType {
463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        CursorEnter = 0,
464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        CursorExit,
465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ButtonDown,
466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ButtonUp,
467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GetFocus,
468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        LoseFocus,
469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        PageOpen,
470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        PageClose,
471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        PageVisible,
472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        PageInvisible,
473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        OpenPage,
474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ClosePage,
475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        KeyStroke,
476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Format,
477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Validate,
478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Calculate,
479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        CloseDocument,
480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        SaveDocument,
481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        DocumentSaved,
482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        PrintDocument,
483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        DocumentPrinted
484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    };
485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				ActionExist(AActionType eType) const;
487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action			GetAction(AActionType eType) const;
489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_POSITION			GetStartPos() const;
491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action			GetNextAction(FX_POSITION& pos, AActionType& eType) const;
493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	m_pDict;
495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_DocJSActions : public CFX_Object
497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_DocJSActions(CPDF_Document* pDoc);
500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					CountJSActions() const;
503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action			GetJSAction(int index, CFX_ByteString& csName) const;
505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action			GetJSAction(const CFX_ByteString& csName) const;
507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					FindJSAction(const CFX_ByteString& csName) const;
509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		GetDocument() const
512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDocument;
514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		m_pDocument;
519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FileSpec : public CFX_Object
521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FileSpec();
525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FileSpec(CPDF_Object *pObj)
527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pObj = pObj;
529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Object*() const
532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pObj;
534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			IsURL() const;
537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL			GetFileName(CFX_WideString &wsFileName) const;
539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Stream*	GetFileStream() const;
541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void			SetFileName(FX_WSTR wsFileName, FX_BOOL bURL = FALSE);
543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Object		*m_pObj;
546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_LinkList : public CFX_Object
548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_LinkList(CPDF_Document* pDoc)
552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDocument = pDoc;
554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ~CPDF_LinkList();
557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Link			GetLinkAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y);
559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					CountLinks(CPDF_Page* pPage);
561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Link			GetLink(CPDF_Page* pPage, int index);
563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		GetDocument() const
565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDocument;
567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		m_pDocument;
571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_MapPtrToPtr		m_PageMap;
573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_PtrArray*		GetPageLinks(CPDF_Page* pPage);
575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				LoadPageLinks(CPDF_Page* pPage, CFX_PtrArray* pList);
577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Link : public CFX_Object
579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Link(CPDF_Dictionary* pDict = NULL)
583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Dictionary*() const
588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_FloatRect		GetRect();
593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dest			GetDest(CPDF_Document* pDoc);
597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action			GetAction();
599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	m_pDict;
602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_INVISIBLE			1
604ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_HIDDEN			2
605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_PRINT				4
606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_NOZOOM			8
607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_NOROTATE			0x10
608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_NOVIEW			0x20
609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_READONLY			0x40
610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_LOCKED			0x80
611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define ANNOTFLAG_TOGGLENOVIEW		0x100
612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Annot : public CFX_PrivateData, public CFX_Object
613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Annot(CPDF_Dictionary* pDict);
617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ~CPDF_Annot();
619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	m_pAnnotDict;
621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetSubType() const;
623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD			GetFlags() const
625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pAnnotDict->GetInteger("F");
627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				GetRect(CFX_FloatRect& rect) const;
630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    enum AppearanceMode	{
632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Normal,
633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Rollover,
634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Down
635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    };
636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				DrawAppearance(const CPDF_Page* pPage, CFX_RenderDevice* pDevice, const CFX_AffineMatrix* pUser2Device,
638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                       AppearanceMode mode, const CPDF_RenderOptions* pOptions);
639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				DrawInContext(const CPDF_Page* pPage, const CPDF_RenderContext* pContext,
641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      const CFX_AffineMatrix* pUser2Device, AppearanceMode mode);
642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				ClearCachedAP();
644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				DrawBorder(CFX_RenderDevice* pDevice, const CFX_AffineMatrix* pUser2Device,
647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                   const CPDF_RenderOptions* pOptions);
648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_PageObject*	GetBorder(FX_BOOL bPrint, const CPDF_RenderOptions* pOptions);
650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					CountIRTNotes();
654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Annot*			GetIRTNote(int index);
656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Form*			GetAPForm(const CPDF_Page* pPage, AppearanceMode mode);
659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprivate:
660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_MapPtrToPtr		m_APMap;
662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class		CPDF_AnnotList;
664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_AnnotList*		m_pList;
666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Reference*		NewAnnotRef();
668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_AnnotList : public CFX_Object
670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_AnnotList(CPDF_Page* pPage);
674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ~CPDF_AnnotList();
676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void	GetAnnotMatrix(const CPDF_Dictionary* pAnnotDict, const CFX_Matrix* pUser2Device, CFX_Matrix &matrix) const;
678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void	GetAnnotRect(const CPDF_Dictionary* pAnnotDict, const CFX_Matrix* pUser2Device, CPDF_Rect &rtAnnot) const;
680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				DisplayAnnots(const CPDF_Page* pPage, CFX_RenderDevice* pDevice,
682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      CFX_AffineMatrix* pMatrix, FX_BOOL bShowWidget,
683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      CPDF_RenderOptions* pOptions);
684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				DisplayAnnots(const CPDF_Page* pPage, CPDF_RenderContext* pContext,
686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix, FX_BOOL bShowWidget,
687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      CPDF_RenderOptions* pOptions)
688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, bShowWidget ? 3 : 1, pOptions, NULL);
690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				DisplayAnnots(const CPDF_Page* pPage, CPDF_RenderContext* pContext,
693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix, FX_BOOL bShowWidget,
694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      CPDF_RenderOptions* pOptions, FX_RECT *pClipRect)
695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        DisplayAnnots(pPage, NULL, pContext, bPrinting, pMatrix, bShowWidget ? 3 : 1, pOptions, pClipRect);
697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				DisplayAnnots(const CPDF_Page* pPage, CFX_RenderDevice* pDevice, CPDF_RenderContext* pContext,
700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix, FX_DWORD dwAnnotFlags,
701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                      CPDF_RenderOptions* pOptions, FX_RECT* pClipRect);
702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Annot*			GetAt(int index)
706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return (CPDF_Annot*)m_AnnotList.GetAt(index);
708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					Count()
711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_AnnotList.GetSize();
713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int					GetIndex(CPDF_Annot* pAnnot);
716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		GetDocument() const
719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDocument;
721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_PtrArray		m_AnnotList;
725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*	m_pPageDict;
727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*		m_pDocument;
729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_PtrArray		m_Borders;
731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				DisplayPass(const CPDF_Page* pPage, CFX_RenderDevice* pDevice,
733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                    CPDF_RenderContext* pContext, FX_BOOL bPrinting, CFX_AffineMatrix* pMatrix,
734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                    FX_BOOL bWidget, CPDF_RenderOptions* pOptions, FX_RECT* clip_rect);
735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class		CPDF_Annot;
736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define COLORTYPE_TRANSPARENT	0
738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define COLORTYPE_GRAY			1
739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define COLORTYPE_RGB			2
740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define COLORTYPE_CMYK			3
741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_DefaultAppearance : public CFX_Object
742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_DefaultAppearance(const CFX_ByteString& csDA = "")
746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_csDA = csDA;
748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_DefaultAppearance(const CPDF_DefaultAppearance& cDA)
751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA;
753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CFX_ByteString() const
757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_csDA;
759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    const CPDF_DefaultAppearance& operator =(const CFX_ByteString& csDA)
762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_csDA = csDA;
764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return *this;
765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    const CPDF_DefaultAppearance& operator =(const CPDF_DefaultAppearance& cDA)
768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_csDA = (CFX_ByteString)(CPDF_DefaultAppearance&)cDA;
770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return *this;
771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				HasFont();
776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetFontString();
778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				GetFont(CFX_ByteString& csFontNameTag, FX_FLOAT& fFontSize);
780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				HasColor(FX_BOOL bStrokingOperation = FALSE);
785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetColorString(FX_BOOL bStrokingOperation = FALSE);
787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				GetColor(int& iColorType, FX_FLOAT fc[4], FX_BOOL bStrokingOperation = FALSE);
789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				GetColor(FX_ARGB& color, int& iColorType, FX_BOOL bStrokingOperation = FALSE);
791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
793ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
794ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
795ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL				HasTextMatrix();
796ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
797ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		GetTextMatrixString();
798ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
799ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_AffineMatrix	GetTextMatrix();
800ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
801ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
802ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
803ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString		m_csDA;
804ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
805ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_UNKNOWN			0
806ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_PUSHBUTTON		1
807ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_CHECKBOX			2
808ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_RADIOBUTTON		3
809ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_COMBOBOX			4
810ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_LISTBOX			5
811ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_TEXTFIELD			6
812ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FIELDTYPE_SIGNATURE			7
813ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_InterForm : public CFX_PrivateData, public CFX_Object
814ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
815ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
816ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
817ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bUpdateAP);
818ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
819ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ~CPDF_InterForm();
820ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
821ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
822ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
823ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static void				EnableUpdateAP(FX_BOOL bUpdateAP);
824ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
825ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static FX_BOOL			UpdatingAPEnabled();
826ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
827ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
828ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CFX_ByteString	GenerateNewResourceName(const CPDF_Dictionary* pResDict, FX_LPCSTR csType, int iMinLen = 2, FX_LPCSTR csPrefix = "");
829ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
830ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
831ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
832ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CPDF_Font*		AddSystemDefaultFont(const CPDF_Document* pDocument);
833ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
834ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CPDF_Font*		AddSystemFont(const CPDF_Document* pDocument, CFX_ByteString csFontName, FX_BYTE iCharSet = 1);
835ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
836ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CPDF_Font*		AddSystemFont(const CPDF_Document* pDocument, CFX_WideString csFontName, FX_BYTE iCharSet = 1);
837ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
838ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CPDF_Font*		AddStandardFont(const CPDF_Document* pDocument, CFX_ByteString csFontName);
839ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
840ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CFX_ByteString	GetNativeFont(FX_BYTE iCharSet, FX_LPVOID pLogFont = NULL);
841ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
842ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CFX_ByteString	GetNativeFont(FX_LPVOID pLogFont = NULL);
843ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
844ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static FX_BYTE			GetNativeCharSet();
845ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
846ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CPDF_Font*		AddNativeFont(FX_BYTE iCharSet, const CPDF_Document* pDocument);
847ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
848ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static CPDF_Font*		AddNativeFont(const CPDF_Document* pDocument);
849ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
850ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
851ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
852ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
853ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ValidateFieldName(CFX_WideString& csNewFieldName, int iType);
854ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
855ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ValidateFieldName(const CPDF_FormField* pField, CFX_WideString& csNewFieldName);
856ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
857ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ValidateFieldName(const CPDF_FormControl* pControl, CFX_WideString& csNewFieldName);
858ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
859ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
860ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
861ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
862ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				CountFields(const CFX_WideString &csFieldName = L"");
863ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
864ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField*			GetField(FX_DWORD index, const CFX_WideString &csFieldName = L"");
865ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
866ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					GetAllFieldNames(CFX_WideStringArray& allFieldNames);
867ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
868ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsValidFormField(const void* pField);
869ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
870ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField*			GetFieldByDict(CPDF_Dictionary* pFieldDict) const;
871ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
872ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
873ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
874ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
875ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				CountControls(CFX_WideString csFieldName = L"");
876ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
877ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormControl*		GetControl(FX_DWORD index, CFX_WideString csFieldName = L"");
878ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
879ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsValidFormControl(const void* pControl);
880ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
881ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CountPageControls(CPDF_Page* pPage) const;
882ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
883ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormControl*		GetPageControl(CPDF_Page* pPage, int index) const;
884ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
885ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
886ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormControl*		GetControlAtPoint(CPDF_Page* pPage, FX_FLOAT pdf_x, FX_FLOAT pdf_y) const;
887ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
888ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormControl*		GetControlByDict(CPDF_Dictionary* pWidgetDict) const;
889ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
890ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
891ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
892ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
893ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				CountInternalFields(const CFX_WideString& csFieldName = L"") const;
894ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
895ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		GetInternalField(FX_DWORD index, const CFX_WideString& csFieldName = L"") const;
896ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
897ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
898ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
899ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
900ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
901ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*			GetDocument() const
902ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
903ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDocument;
904ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
905ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
906ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		GetFormDict() const
907ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
908ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pFormDict;
909ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
910ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
911ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
912ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
913ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
914ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					NeedConstructAP();
915ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
916ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					NeedConstructAP(FX_BOOL bNeedAP);
917ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
918ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
919ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
920ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
921ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CountFieldsInCalculationOrder();
922ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
923ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField*			GetFieldInCalculationOrder(int index);
924ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
925ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						FindFieldInCalculationOrder(const CPDF_FormField* pField);
926ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
927ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
928ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
929ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
930ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				CountFormFonts();
931ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
932ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetFormFont(FX_DWORD index, CFX_ByteString& csNameTag);
933ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
934ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetFormFont(CFX_ByteString csNameTag);
935ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
936ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetFormFont(CFX_ByteString csFontName, CFX_ByteString& csNameTag);
937ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
938ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetNativeFormFont(FX_BYTE iCharSet, CFX_ByteString& csNameTag);
939ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
940ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetNativeFormFont(CFX_ByteString& csNameTag);
941ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
942ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					FindFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag);
943ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
944ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					FindFormFont(CFX_ByteString csFontName, CPDF_Font*& pFont, CFX_ByteString& csNameTag);
945ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
946ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_BOOL			FindFormFont(CFX_WideString csFontName, CPDF_Font*& pFont, CFX_ByteString& csNameTag)
947ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
948ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return FindFormFont(PDF_EncodeText(csFontName), pFont, csNameTag);
949ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
950ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
951ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
952ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
953ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
954ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
955ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					AddFormFont(const CPDF_Font* pFont, CFX_ByteString& csNameTag);
956ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
957ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				AddNativeFormFont(FX_BYTE iCharSet, CFX_ByteString& csNameTag);
958ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
959ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				AddNativeFormFont(CFX_ByteString& csNameTag);
960ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
961ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					RemoveFormFont(const CPDF_Font* pFont);
962ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
963ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					RemoveFormFont(CFX_ByteString csNameTag);
964ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
965ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
966ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
967ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
968ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_DefaultAppearance	GetDefaultAppearance();
969ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
970ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetDefaultFormFont();
971ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
972ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
973ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
974ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetFormAlignment();
975ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
976ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
977ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
978ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
979ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField*			CheckRequiredFields(const CFX_PtrArray *fields = NULL, FX_BOOL bIncludeOrExclude = TRUE) const;
980ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
981ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFDF_Document* 			ExportToFDF(FX_WSTR pdf_path, FX_BOOL bSimpleFileSpec = FALSE) const;
982ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
983ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFDF_Document*			ExportToFDF(FX_WSTR pdf_path, CFX_PtrArray& fields, FX_BOOL bIncludeOrExclude = TRUE, FX_BOOL bSimpleFileSpec = FALSE) const;
984ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
985ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ImportFromFDF(const CFDF_Document* pFDFDoc, FX_BOOL bNotify = FALSE);
986ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
987ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
988ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
989ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
990ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ResetForm(const CFX_PtrArray& fields, FX_BOOL bIncludeOrExclude = TRUE, FX_BOOL bNotify = FALSE);
991ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
992ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ResetForm(FX_BOOL bNotify = FALSE);
993ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
994ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					ReloadForm();
995ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
996ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormNotify*		GetFormNotify() const
997ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
998ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pFormNotify;
999ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1000ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1001ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					SetFormNotify(const CPDF_FormNotify* pNotify);
1002ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1003ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1004ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetPageWithWidget(int iCurPage, FX_BOOL bNext);
1005ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1006ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1007ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1008ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsUpdated()
1009ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1010ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_bUpdated;
1011ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1012ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1013ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					ClearUpdatedFlag()
1014ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1015ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_bUpdated = FALSE;
1016ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1017ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1018ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1019ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					HasXFAForm() const;
1020ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1021ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					FixPageFields(const CPDF_Page* pPage);
1022ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
1023ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1024ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    static FX_BOOL			m_bUpdateAP;
1025ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1026ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					LoadField(CPDF_Dictionary* pFieldDict, int nLevel = 0);
1027ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1028ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Object*			GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name);
1029ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1030ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField*			AddTerminalField(const CPDF_Dictionary* pFieldDict);
1031ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1032ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormControl*		AddControl(const CPDF_FormField* pField, const CPDF_Dictionary* pWidgetDict);
1033ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1034ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					FDF_ImportField(CPDF_Dictionary* pField, const CFX_WideString& parent_name, FX_BOOL bNotify = FALSE, int nLevel = 0);
1035ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1036ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ValidateFieldName(CFX_WideString& csNewFieldName, int iType, const CPDF_FormField* pExcludedField, const CPDF_FormControl* pExcludedControl);
1037ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1038ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CompareFieldName(const CFX_WideString& name1, const CFX_WideString& name2);
1039ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1040ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CompareFieldName(const CFX_ByteString& name1, const CFX_ByteString& name2);
1041ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1042ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*			m_pDocument;
1043ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1044ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					m_bGenerateAP;
1045ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1046ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		m_pFormDict;
1047ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1048ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_MapPtrToPtr			m_ControlMap;
1049ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1050ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFieldTree *m_pFieldTree;
1051ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1052ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString			m_bsEncoding;
1053ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1054ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormNotify*		m_pFormNotify;
1055ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1056ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					m_bUpdated;
1057ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class CPDF_FormControl;
1058ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class CPDF_FormField;
1059ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1060ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMFIELD_READONLY		0x01
1061ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMFIELD_REQUIRED		0x02
1062ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMFIELD_NOEXPORT		0x04
1063ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMRADIO_NOTOGGLEOFF	0x100
1064ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMRADIO_UNISON		0x200
1065ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMTEXT_MULTILINE		0x100
1066ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMTEXT_PASSWORD		0x200
1067ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMTEXT_NOSCROLL		0x400
1068ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMTEXT_COMB			0x800
1069ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMCOMBO_EDIT			0x100
1070ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define FORMLIST_MULTISELECT	0x100
1071ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FormField : public CFX_Object
1072ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1073ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1074ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1075ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    enum Type {
1076ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Unknown,
1077ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        PushButton,
1078ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        RadioButton,
1079ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        CheckBox,
1080ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Text,
1081ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        RichText,
1082ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        File,
1083ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ListBox,
1084ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        ComboBox,
1085ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Sign
1086ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    };
1087ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1088ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetFullName();
1089ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1090ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    Type					GetType()
1091ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1092ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_Type;
1093ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1094ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1095ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				GetFlags()
1096ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1097ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_Flags;
1098ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1099ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1100ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_InterForm*			GetInterForm() const
1101ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1102ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pForm;
1103ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1104ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1105ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		GetFieldDict() const
1106ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1107ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
1108ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1109ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1110ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					SetFieldDict(CPDF_Dictionary* pDict)
1111ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1112ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
1113ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1114ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1115ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ResetField(FX_BOOL bNotify = FALSE);
1116ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1117ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1118ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1119ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CountControls()
1120ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1121ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_ControlList.GetSize();
1122ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1123ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1124ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormControl*		GetControl(int index)
1125ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1126ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return (CPDF_FormControl*)m_ControlList.GetAt(index);
1127ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1128ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1129ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetControlIndex(const CPDF_FormControl* pControl);
1130ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1131ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1132ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1133ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1134ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetFieldType();
1135ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1136ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1137ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1138ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1139ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_AAction			GetAdditionalAction();
1140ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1141ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1142ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1143ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1144ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetAlternateName();
1145ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1146ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1147ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1148ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1149ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetMappingName();
1150ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1151ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1152ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1153ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1154ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				GetFieldFlags();
1155ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1156ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1157ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1158ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1159ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString			GetDefaultStyle();
1160ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1161ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1162ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1163ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1164ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetRichTextString();
1165ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1166ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1167ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1168ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetValue();
1169ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1170ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetDefaultValue();
1171ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1172ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					SetValue(const CFX_WideString& value, FX_BOOL bNotify = FALSE);
1173ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1174ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1175ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1176ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1177ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1178ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetMaxLen();
1179ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1180ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1181ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1182ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1183ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CountSelectedItems();
1184ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1185ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetSelectedIndex(int index);
1186ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1187ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ClearSelection(FX_BOOL bNotify = FALSE);
1188ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1189ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsItemSelected(int index);
1190ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1191ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify = FALSE);
1192ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1193ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsItemDefaultSelected(int index);
1194ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1195ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetDefaultSelectedItem();
1196ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1197ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1198ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1199ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1200ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CountOptions();
1201ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1202ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetOptionLabel(int index);
1203ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1204ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetOptionValue(int index);
1205ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1206ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						FindOption(CFX_WideString csOptLabel);
1207ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1208ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						FindOptionValue(FX_LPCWSTR csOptValue, int iStartIndex = 0);
1209ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1210ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1211ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1212ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1213ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					CheckControl(int iControlIndex, FX_BOOL bChecked, FX_BOOL bNotify = FALSE);
1214ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1215ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1216ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1217ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1218ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetTopVisibleIndex();
1219ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1220ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1221ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1222ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1223ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						CountSelectedOptions();
1224ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1225ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetSelectedOptionIndex(int index);
1226ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1227ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsOptionSelected(int iOptIndex);
1228ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1229ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					SelectOption(int iOptIndex, FX_BOOL bSelected, FX_BOOL bNotify = FALSE);
1230ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1231ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					ClearSelectedOptions(FX_BOOL bNotify = FALSE);
1232ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1233ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1234ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1235ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1236ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_FLOAT				GetFontSize()
1237ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1238ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_FontSize;
1239ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1240ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1241ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetFont()
1242ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1243ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pFont;
1244ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1245ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1246ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
1247ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1248ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict);
1249ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1250ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ~CPDF_FormField();
1251ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1252ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField::Type	m_Type;
1253ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1254ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_DWORD				m_Flags;
1255ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1256ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_InterForm*			m_pForm;
1257ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1258ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		m_pDict;
1259ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1260ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_PtrArray			m_ControlList;
1261ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class			CPDF_InterForm;
1262ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class			CPDF_FormControl;
1263ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1264ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1265ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1266ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetValue(FX_BOOL bDefault);
1267ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1268ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					SetValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify);
1269ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1270ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1271ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					SyncFieldFlags();
1272ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1273ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						FindListSel(CPDF_String* str);
1274ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1275ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetOptionText(int index, int sub_index);
1276ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1277ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					LoadDA();
1278ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1279ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					UpdateAP(CPDF_FormControl* pControl);
1280ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1281ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1282ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1283ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetCheckValue(FX_BOOL bDefault);
1284ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1285ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					SetCheckValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify);
1286ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1287ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1288ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_FLOAT				m_FontSize;
1289ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1290ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				m_pFont;
1291ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1292ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovCPDF_Object*	FPDF_GetFieldAttr(CPDF_Dictionary* pFieldDict, const FX_CHAR* name, int nLevel = 0);
1293ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_IconFit : public CFX_Object
1294ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1295ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1296ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1297ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_IconFit(CPDF_Dictionary* pDict = NULL)
1298ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1299ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
1300ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1301ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1302ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Dictionary*() const
1303ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1304ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
1305ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1306ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1307ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1308ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1309ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1310ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    enum ScaleMethod {
1311ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Always = 0,
1312ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Bigger,
1313ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Smaller,
1314ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Never
1315ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    };
1316ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1317ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ScaleMethod				GetScaleMethod();
1318ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1319ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1320ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1321ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1322ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsProportionalScale();
1323ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1324ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1325ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1326ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1327ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					GetIconPosition(FX_FLOAT& fLeft, FX_FLOAT& fBottom);
1328ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1329ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1330ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1331ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1332ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					GetFittingBounds();
1333ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1334ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1335ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		m_pDict;
1336ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1337ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1338ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TEXTPOS_CAPTION		0
1339ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TEXTPOS_ICON		1
1340ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TEXTPOS_BELOW		2
1341ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TEXTPOS_ABOVE		3
1342ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TEXTPOS_RIGHT		4
1343ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TEXTPOS_LEFT		5
1344ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#define TEXTPOS_OVERLAID	6
1345ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FormControl : public CFX_Object
1346ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1347ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1348ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1349ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField::Type	GetType()
1350ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1351ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pField->GetType();
1352ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1353ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1354ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_InterForm*			GetInterForm() const
1355ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1356ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pForm;
1357ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1358ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1359ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField*			GetField() const
1360ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1361ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pField;
1362ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1363ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1364ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		GetWidget() const
1365ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1366ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pWidgetDict;
1367ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1368ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1369ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_FloatRect			GetRect();
1370ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1371ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					DrawControl(CFX_RenderDevice* pDevice, CFX_AffineMatrix* pMatrix,
1372ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov                                        CPDF_Page* pPage, CPDF_Annot::AppearanceMode mode, const CPDF_RenderOptions* pOptions = NULL);
1373ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1374ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1375ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1376ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString			GetCheckedAPState();
1377ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1378ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetExportValue();
1379ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1380ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsChecked();
1381ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1382ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					IsDefaultChecked();
1383ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1384ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1385ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1386ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1387ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    enum HighlightingMode	{
1388ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        None = 0,
1389ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Invert,
1390ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Outline,
1391ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Push,
1392ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        Toggle
1393ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    };
1394ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1395ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    HighlightingMode		GetHighlightingMode();
1396ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1397ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1398ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1399ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1400ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					HasMKEntry(CFX_ByteString csEntry);
1401ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1402ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1403ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1404ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1405ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetRotation();
1406ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1407ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1408ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1409ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1410ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_ARGB			GetBorderColor(int& iColorType)
1411ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1412ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetColor(iColorType, "BC");
1413ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1414ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1415ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_FLOAT			GetOriginalBorderColor(int index)
1416ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1417ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetOriginalColor(index, "BC");
1418ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1419ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1420ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline void				GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4])
1421ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1422ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GetOriginalColor(iColorType, fc, "BC");
1423ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1424ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1425ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1426ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1427ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1428ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_ARGB			GetBackgroundColor(int& iColorType)
1429ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1430ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetColor(iColorType, "BG");
1431ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1432ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1433ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_FLOAT			GetOriginalBackgroundColor(int index)
1434ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1435ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetOriginalColor(index, "BG");
1436ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1437ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1438ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline void				GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4])
1439ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1440ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GetOriginalColor(iColorType, fc, "BG");
1441ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1442ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1443ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1444ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1445ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1446ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_WideString	GetNormalCaption()
1447ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1448ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetCaption("CA");
1449ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1450ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1451ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1452ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1453ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1454ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_WideString	GetRolloverCaption()
1455ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1456ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetCaption("RC");
1457ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1458ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1459ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1460ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1461ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1462ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_WideString	GetDownCaption()
1463ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1464ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetCaption("AC");
1465ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1466ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1467ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1468ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1469ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1470ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CPDF_Stream*		GetNormalIcon()
1471ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1472ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetIcon("I");
1473ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1474ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1475ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1476ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1477ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1478ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CPDF_Stream*		GetRolloverIcon()
1479ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1480ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetIcon("RI");
1481ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1482ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1483ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1484ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1485ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1486ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CPDF_Stream*		GetDownIcon()
1487ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1488ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetIcon("IX");
1489ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1490ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1491ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1492ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1493ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1494ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_IconFit			GetIconFit();
1495ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1496ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1497ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1498ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1499ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetTextPosition();
1500ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1501ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1502ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1503ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1504ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Action				GetAction();
1505ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1506ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1507ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1508ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1509ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_AAction			GetAdditionalAction();
1510ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1511ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1512ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1513ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1514ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_DefaultAppearance	GetDefaultAppearance();
1515ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1516ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Font*				GetDefaultControlFont();
1517ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1518ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1519ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1520ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1521ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetControlAlignment();
1522ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1523ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
1524ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1525ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormControl(CPDF_FormField* pField, CPDF_Dictionary* pWidgetDict);
1526ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1527ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_ByteString			GetOnStateName();
1528ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1529ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					SetOnStateName(const CFX_ByteString& csOn);
1530ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1531ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					CheckControl(FX_BOOL bChecked);
1532ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1533ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_ARGB					GetColor(int& iColorType, CFX_ByteString csEntry);
1534ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1535ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_FLOAT				GetOriginalColor(int index, CFX_ByteString csEntry);
1536ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1537ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					GetOriginalColor(int& iColorType, FX_FLOAT fc[4], CFX_ByteString csEntry);
1538ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1539ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetCaption(CFX_ByteString csEntry);
1540ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1541ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Stream*			GetIcon(CFX_ByteString csEntry);
1542ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1543ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_ApSettings			GetMK(FX_BOOL bCreate);
1544ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1545ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_InterForm*			m_pForm;
1546ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1547ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_FormField*			m_pField;
1548ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1549ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		m_pWidgetDict;
1550ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class			CPDF_InterForm;
1551ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class			CPDF_FormField;
1552ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1553ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_FormNotify : public CFX_Object
1554ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1555ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1556ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1557ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual ~CPDF_FormNotify() {}
1558ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1559ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		BeforeValueChange(const CPDF_FormField* pField, CFX_WideString& csValue)
1560ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1561ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1562ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1563ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1564ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		AfterValueChange(const CPDF_FormField* pField)
1565ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1566ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1567ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1568ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1569ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		BeforeSelectionChange(const CPDF_FormField* pField, CFX_WideString& csValue)
1570ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1571ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1572ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1573ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1574ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		AfterSelectionChange(const CPDF_FormField* pField)
1575ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1576ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1577ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1578ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1579ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		AfterCheckedStatusChange(const CPDF_FormField* pField, const CFX_ByteArray& statusArray)
1580ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1581ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1582ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1583ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1584ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		BeforeFormReset(const CPDF_InterForm* pForm)
1585ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1586ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1587ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1588ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1589ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		AfterFormReset(const CPDF_InterForm* pForm)
1590ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1591ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1592ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1593ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1594ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		BeforeFormImportData(const CPDF_InterForm* pForm)
1595ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1596ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1597ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1598ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1599ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    virtual int		AfterFormImportData(const CPDF_InterForm* pForm)
1600ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1601ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return 0;
1602ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1603ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1604ee451cb395940862dad63c85adfe8f2fd55e864cSvet GanovFX_BOOL		FPDF_GenerateAP(CPDF_Document* pDoc, CPDF_Dictionary* pAnnotDict);
1605ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_PageLabel : public CFX_Object
1606ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1607ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1608ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1609ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_PageLabel(CPDF_Document* pDocument)
1610ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1611ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDocument = pDocument;
1612ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1613ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1614ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1615ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString					GetLabel(int nPage) const;
1616ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1617ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_INT32						GetPageByLabel(FX_BSTR bsLabel) const;
1618ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1619ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1620ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_INT32						GetPageByLabel(FX_WSTR wsLabel) const;
1621ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1622ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
1623ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*					m_pDocument;
1624ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1625ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_Metadata
1626ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1627ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1628ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1629ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Metadata();
1630ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1631ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1632ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ~CPDF_Metadata();
1633ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1634ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void				LoadDoc(CPDF_Document *pDoc);
1635ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1636ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1637ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_INT32			GetString(FX_BSTR bsItem, CFX_WideString &wsStr);
1638ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1639ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CXML_Element*		GetRoot() const;
1640ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1641ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CXML_Element*		GetRDF() const;
1642ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1643ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
1644ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_LPVOID	m_pData;
1645ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1646ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ViewerPreferences
1647ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1648ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1649ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1650ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_ViewerPreferences(CPDF_Document *pDoc);
1651ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1652ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1653ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    ~CPDF_ViewerPreferences();
1654ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1655ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1656ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL IsDirectionR2L() const;
1657ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1658ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL PrintScaling() const;
1659ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1660ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1661ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
1662ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Document*	m_pDoc;
1663ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1664ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovclass CPDF_ApSettings : public CFX_Object
1665ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov{
1666ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovpublic:
1667ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1668ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_ApSettings(CPDF_Dictionary* pDict = NULL)
1669ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1670ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        m_pDict = pDict;
1671ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1672ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1673ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    operator CPDF_Dictionary* () const
1674ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1675ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return m_pDict;
1676ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1677ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1678ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_BOOL					HasMKEntry(FX_BSTR csEntry);
1679ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1680ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1681ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1682ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetRotation();
1683ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1684ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1685ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1686ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1687ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_ARGB			GetBorderColor(int& iColorType)
1688ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1689ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetColor(iColorType, FX_BSTRC("BC"));
1690ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1691ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1692ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_FLOAT			GetOriginalBorderColor(int index)
1693ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1694ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetOriginalColor(index, FX_BSTRC("BC"));
1695ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1696ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1697ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline void				GetOriginalBorderColor(int& iColorType, FX_FLOAT fc[4])
1698ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1699ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GetOriginalColor(iColorType, fc, FX_BSTRC("BC"));
1700ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1701ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1702ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1703ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1704ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1705ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_ARGB			GetBackgroundColor(int& iColorType)
1706ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1707ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetColor(iColorType, FX_BSTRC("BG"));
1708ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1709ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1710ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline FX_FLOAT			GetOriginalBackgroundColor(int index)
1711ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1712ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetOriginalColor(index, FX_BSTRC("BG"));
1713ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1714ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1715ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline void				GetOriginalBackgroundColor(int& iColorType, FX_FLOAT fc[4])
1716ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1717ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        GetOriginalColor(iColorType, fc, FX_BSTRC("BG"));
1718ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1719ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1720ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1721ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1722ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1723ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_WideString	GetNormalCaption()
1724ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1725ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetCaption(FX_BSTRC("CA"));
1726ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1727ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1728ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1729ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1730ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1731ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_WideString	GetRolloverCaption()
1732ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1733ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetCaption(FX_BSTRC("RC"));
1734ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1735ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1736ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1737ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1738ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1739ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CFX_WideString	GetDownCaption()
1740ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1741ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetCaption(FX_BSTRC("AC"));
1742ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1743ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1744ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1745ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1746ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1747ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CPDF_Stream*		GetNormalIcon()
1748ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1749ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetIcon(FX_BSTRC("I"));
1750ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1751ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1752ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1753ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1754ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1755ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CPDF_Stream*		GetRolloverIcon()
1756ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1757ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetIcon(FX_BSTRC("RI"));
1758ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1759ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1760ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1761ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1762ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1763ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    inline CPDF_Stream*		GetDownIcon()
1764ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    {
1765ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov        return GetIcon(FX_BSTRC("IX"));
1766ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    }
1767ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1768ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1769ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1770ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1771ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_IconFit			GetIconFit();
1772ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1773ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1774ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1775ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1776ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    int						GetTextPosition();
1777ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1778ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Dictionary*		m_pDict;
1779ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganovprotected:
1780ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1781ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_ARGB					GetColor(int& iColorType, FX_BSTR csEntry);
1782ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1783ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    FX_FLOAT				GetOriginalColor(int index, FX_BSTR csEntry);
1784ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1785ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    void					GetOriginalColor(int& iColorType, FX_FLOAT fc[4], FX_BSTR csEntry);
1786ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1787ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CFX_WideString			GetCaption(FX_BSTR csEntry);
1788ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov
1789ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    CPDF_Stream*			GetIcon(FX_BSTR csEntry);
1790ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov    friend class			CPDF_FormControl;
1791ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov};
1792ee451cb395940862dad63c85adfe8f2fd55e864cSvet Ganov#endif
1793