Replace XFA_HWIDGET with IXFA_Widget*
[pdfium.git] / fpdfsdk / include / fsdk_annothandler.h
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4  
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6
7 #ifndef FPDFSDK_INCLUDE_FSDK_ANNOTHANDLER_H_
8 #define FPDFSDK_INCLUDE_FSDK_ANNOTHANDLER_H_
9
10 #include "../../core/include/fxcrt/fx_basic.h"
11
12 #define FSDK_XFAWIDGET_TYPENAME "XFAWidget"
13
14 class CFFL_IFormFiller;
15 class CFX_RenderDevice;
16 class CPDFDoc_Environment;
17 class CPDFSDK_Annot;
18 class CPDFSDK_PageView;
19 class CPDF_Annot;
20 class CPDF_Matrix;
21 class CPDF_Point;
22 class CPDF_Rect;
23
24 class IPDFSDK_AnnotHandler
25 {
26
27 public:
28         virtual ~IPDFSDK_AnnotHandler() {};
29
30         virtual CFX_ByteString          GetType() = 0;
31
32         virtual CFX_ByteString          GetName() = 0;
33
34         virtual FX_BOOL                         CanAnswer(CPDFSDK_Annot* pAnnot) = 0;
35         
36
37         virtual CPDFSDK_Annot*          NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage) = 0;
38
39         virtual CPDFSDK_Annot*          NewAnnot(IXFA_Widget* hWidget, CPDFSDK_PageView* pPage) = 0;
40
41         virtual void                            ReleaseAnnot(CPDFSDK_Annot* pAnnot) = 0;
42
43         virtual void                            DeleteAnnot(CPDFSDK_Annot* pAnnot) = 0;
44         
45
46         virtual CPDF_Rect                               GetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot) = 0;
47         
48         virtual FX_BOOL                         HitTest(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, const CPDF_Point& point) = 0;
49         
50
51         virtual void                            OnDraw(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, 
52                 CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
53                 FX_DWORD dwFlags) = 0;
54         
55         virtual void                            OnDrawSleep(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, 
56                 CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
57                 const CPDF_Rect& rcWindow, FX_DWORD dwFlags) = 0;
58         
59
60         
61
62         virtual void                            OnCreate(CPDFSDK_Annot* pAnnot) = 0;
63
64         virtual void                            OnLoad(CPDFSDK_Annot* pAnnot) = 0;
65
66         virtual void                            OnDelete(CPDFSDK_Annot* pAnnot) = 0;
67
68         virtual void                            OnRelease(CPDFSDK_Annot* pAnnot) = 0;
69         
70
71         virtual void                            OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag) = 0;
72         virtual void                            OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag) = 0;
73         
74
75         virtual FX_BOOL                         OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) = 0;
76         virtual FX_BOOL                         OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) = 0;
77         virtual FX_BOOL                         OnLButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) = 0;
78         virtual FX_BOOL                         OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) = 0;
79         virtual FX_BOOL                         OnMouseWheel(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, short zDelta, const CPDF_Point& point) = 0;
80         virtual FX_BOOL                         OnRButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) = 0;
81         virtual FX_BOOL                         OnRButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) = 0;
82         virtual FX_BOOL                         OnRButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) = 0;
83 //by wjm.
84         virtual FX_BOOL                         OnChar(CPDFSDK_Annot* pAnnot, FX_DWORD nChar, FX_DWORD nFlags) = 0;
85         virtual FX_BOOL                         OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) = 0;
86         virtual FX_BOOL                         OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag) =0 ;
87
88         virtual void                            OnDeSelected(CPDFSDK_Annot* pAnnot) = 0;
89         virtual void                            OnSelected(CPDFSDK_Annot* pAnnot) = 0;
90
91         virtual FX_BOOL                         OnSetFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag) = 0;
92         virtual FX_BOOL                         OnKillFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag) = 0;
93         virtual FX_BOOL                         OnXFAChangedFocus(CPDFSDK_Annot* pOldAnnot, CPDFSDK_Annot* pNewAnnot) = 0;
94
95 };
96
97
98 class CPDFSDK_BFAnnotHandler:public IPDFSDK_AnnotHandler
99 {
100 public:
101         CPDFSDK_BFAnnotHandler(CPDFDoc_Environment* pApp) : m_pApp(pApp), m_pFormFiller(NULL) {}
102         virtual ~CPDFSDK_BFAnnotHandler() {}
103 public:
104
105         virtual CFX_ByteString          GetType()  {return CFX_ByteString("Widget");}
106
107         virtual CFX_ByteString          GetName()  {return CFX_ByteString("WidgetHandler");}
108         
109         virtual FX_BOOL                         CanAnswer(CPDFSDK_Annot* pAnnot);
110
111         virtual CPDFSDK_Annot*          NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage);
112
113         virtual CPDFSDK_Annot*          NewAnnot(IXFA_Widget* hWidget, CPDFSDK_PageView* pPage);
114
115         virtual void                            ReleaseAnnot(CPDFSDK_Annot* pAnnot)  ;
116
117         virtual void                            DeleteAnnot(CPDFSDK_Annot* pAnnot) {}
118         
119
120         virtual CPDF_Rect                               GetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot) ;
121         
122         virtual FX_BOOL                         HitTest(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, const CPDF_Point& point);
123         
124
125         virtual void                            OnDraw(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, 
126                 CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
127                  FX_DWORD dwFlags) ;
128         
129         virtual void                            OnDrawSleep(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, 
130                 CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
131                 const CPDF_Rect& rcWindow, FX_DWORD dwFlags) {}
132         
133
134         virtual void                            OnCreate(CPDFSDK_Annot* pAnnot) ;
135
136         virtual void                            OnLoad(CPDFSDK_Annot* pAnnot) ;
137
138         virtual void                            OnDelete(CPDFSDK_Annot* pAnnot) {}
139
140         virtual void                            OnRelease(CPDFSDK_Annot* pAnnot) {}
141         
142
143         virtual void                            OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag) ;
144         virtual void                            OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag) ;
145         
146
147         virtual FX_BOOL                         OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
148         virtual FX_BOOL                         OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
149         virtual FX_BOOL                         OnLButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
150         virtual FX_BOOL                         OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
151         virtual FX_BOOL                         OnMouseWheel(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, short zDelta, const CPDF_Point& point) ;
152         virtual FX_BOOL                         OnRButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
153         virtual FX_BOOL                         OnRButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
154         virtual FX_BOOL                         OnRButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) {return FALSE;}
155         
156 //by wjm.
157         virtual FX_BOOL                         OnChar(CPDFSDK_Annot* pAnnot, FX_DWORD nChar, FX_DWORD nFlags);
158         virtual FX_BOOL                         OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag);
159         virtual FX_BOOL                         OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag);
160
161         virtual void                            OnDeSelected(CPDFSDK_Annot* pAnnot) {}
162         virtual void                            OnSelected(CPDFSDK_Annot* pAnnot) {}
163
164         virtual FX_BOOL                         OnSetFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag);
165         virtual FX_BOOL                         OnKillFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag);
166         virtual FX_BOOL                         OnXFAChangedFocus(CPDFSDK_Annot* pOldAnnot, CPDFSDK_Annot* pNewAnnot){ return TRUE; }
167
168         void                                            SetFormFiller(CFFL_IFormFiller* pFiller){m_pFormFiller = pFiller;}
169         CFFL_IFormFiller*                       GetFormFiller() {return m_pFormFiller;}
170 private:
171
172         CPDFDoc_Environment*            m_pApp;
173         CFFL_IFormFiller*                       m_pFormFiller;
174 };
175
176 class CPDFSDK_XFAAnnotHandler : public IPDFSDK_AnnotHandler
177 {
178 public:
179         CPDFSDK_XFAAnnotHandler(CPDFDoc_Environment* pApp);
180         ~CPDFSDK_XFAAnnotHandler(){}
181
182 public:
183         virtual CFX_ByteString          GetType() { return FSDK_XFAWIDGET_TYPENAME; }
184
185         virtual CFX_ByteString          GetName() { return "XFAWidgetHandler"; }
186
187         virtual FX_BOOL                         CanAnswer(CPDFSDK_Annot* pAnnot);
188
189
190         virtual CPDFSDK_Annot*          NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_PageView* pPage) { return NULL; }
191
192         virtual CPDFSDK_Annot*          NewAnnot(IXFA_Widget* pAnnot, CPDFSDK_PageView* pPage);
193
194         virtual void                            ReleaseAnnot(CPDFSDK_Annot* pAnnot);
195
196         virtual void                            DeleteAnnot(CPDFSDK_Annot* pAnnot) {}
197
198
199         virtual CPDF_Rect                               GetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot);
200
201         virtual FX_BOOL                         HitTest(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, const CPDF_Point& point);
202
203
204         virtual void                            OnDraw(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, 
205                 CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
206                 FX_DWORD dwFlags);
207
208         virtual void                            OnDrawSleep(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, 
209                 CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,
210                 const CPDF_Rect& rcWindow, FX_DWORD dwFlags) {}
211
212
213
214
215         virtual void                            OnCreate(CPDFSDK_Annot* pAnnot) {}
216
217         virtual void                            OnLoad(CPDFSDK_Annot* pAnnot) {}
218
219         virtual void                            OnDelete(CPDFSDK_Annot* pAnnot) {}
220
221         virtual void                            OnRelease(CPDFSDK_Annot* pAnnot) {}
222
223
224         virtual void                            OnMouseEnter(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag);
225         virtual void                            OnMouseExit(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlag);
226
227
228         virtual FX_BOOL                         OnLButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
229         virtual FX_BOOL                         OnLButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
230         virtual FX_BOOL                         OnLButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
231         virtual FX_BOOL                         OnMouseMove(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
232         virtual FX_BOOL                         OnMouseWheel(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, short zDelta, const CPDF_Point& point) ;
233         virtual FX_BOOL                         OnRButtonDown(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
234         virtual FX_BOOL                         OnRButtonUp(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
235         virtual FX_BOOL                         OnRButtonDblClk(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point) ;
236         //by wjm.
237         virtual FX_BOOL                         OnChar(CPDFSDK_Annot* pAnnot, FX_DWORD nChar, FX_DWORD nFlags);
238         virtual FX_BOOL                         OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag);
239         virtual FX_BOOL                         OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag);
240
241         virtual void                            OnDeSelected(CPDFSDK_Annot* pAnnot) {}
242         virtual void                            OnSelected(CPDFSDK_Annot* pAnnot) {}
243
244         virtual FX_BOOL                         OnSetFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag);
245         virtual FX_BOOL                         OnKillFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag) ;
246         virtual FX_BOOL                         OnXFAChangedFocus(CPDFSDK_Annot* pOldAnnot, CPDFSDK_Annot* pNewAnnot);
247
248 private:
249         IXFA_WidgetHandler*                     GetXFAWidgetHandler(CPDFSDK_Annot* pAnnot);
250         FX_DWORD                                        GetFWLFlags(FX_DWORD dwFlag);
251
252 private:
253         CPDFDoc_Environment*            m_pApp;
254 };
255
256 #define CBA_AnnotHandlerArray CFX_ArrayTemplate<IPDFSDK_AnnotHandler*>
257 class CPDFSDK_AnnotHandlerMgr
258 {
259 public:
260         // Destroy the handler
261         CPDFSDK_AnnotHandlerMgr(CPDFDoc_Environment* pApp);
262         virtual ~CPDFSDK_AnnotHandlerMgr() ;
263
264 public:
265         void                                            RegisterAnnotHandler(IPDFSDK_AnnotHandler* pAnnotHandler);
266         void                                            UnRegisterAnnotHandler(IPDFSDK_AnnotHandler* pAnnotHandler);
267
268         virtual CPDFSDK_Annot*          NewAnnot(CPDF_Annot * pAnnot, CPDFSDK_PageView *pPageView);
269         virtual CPDFSDK_Annot*          NewAnnot(IXFA_Widget* pAnnot, CPDFSDK_PageView* pPageView);
270         virtual void                            ReleaseAnnot(CPDFSDK_Annot * pAnnot);
271         
272         virtual void                            Annot_OnCreate(CPDFSDK_Annot* pAnnot);
273         virtual void                            Annot_OnLoad(CPDFSDK_Annot* pAnnot);
274 public:
275         IPDFSDK_AnnotHandler*           GetAnnotHandler(CPDFSDK_Annot* pAnnot) const;
276         virtual void                            Annot_OnDraw(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot,
277                 CFX_RenderDevice* pDevice, CPDF_Matrix* pUser2Device,FX_DWORD dwFlags);
278
279         virtual void                            Annot_OnMouseEnter(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags);
280         virtual void                            Annot_OnMouseExit(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags);
281
282         virtual FX_BOOL                         Annot_OnLButtonDown(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
283         virtual FX_BOOL                         Annot_OnLButtonUp(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
284         virtual FX_BOOL                         Annot_OnLButtonDblClk(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
285         
286         virtual FX_BOOL                         Annot_OnMouseMove(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
287         virtual FX_BOOL                         Annot_OnMouseWheel(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, short zDelta, const CPDF_Point& point);
288         virtual FX_BOOL                         Annot_OnRButtonDown(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
289         virtual FX_BOOL                         Annot_OnRButtonUp(CPDFSDK_PageView * pPageView, CPDFSDK_Annot* pAnnot, FX_DWORD nFlags, const CPDF_Point& point);
290
291
292         virtual FX_BOOL                         Annot_OnChar(CPDFSDK_Annot* pAnnot, FX_DWORD nChar, FX_DWORD nFlags);
293         virtual FX_BOOL                         Annot_OnKeyDown(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag);
294         virtual FX_BOOL                         Annot_OnKeyUp(CPDFSDK_Annot* pAnnot, int nKeyCode, int nFlag);
295
296         virtual FX_BOOL                         Annot_OnSetFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag);
297         virtual FX_BOOL                         Annot_OnKillFocus(CPDFSDK_Annot* pAnnot, FX_DWORD nFlag);
298         virtual FX_BOOL                         Annot_OnChangeFocus(CPDFSDK_Annot* pSetAnnot,CPDFSDK_Annot* pKillAnnot);
299
300         virtual CPDF_Rect                       Annot_OnGetViewBBox(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot);
301         virtual FX_BOOL                         Annot_OnHitTest(CPDFSDK_PageView *pPageView, CPDFSDK_Annot* pAnnot, const CPDF_Point& point);
302
303 private:
304         IPDFSDK_AnnotHandler*                   GetAnnotHandler(const CFX_ByteString& sType) const;
305         CPDFSDK_Annot*                          GetNextAnnot(CPDFSDK_Annot* pSDKAnnot,FX_BOOL bNext);
306 private:
307         CBA_AnnotHandlerArray           m_Handlers;
308         CFX_MapByteStringToPtr          m_mapType2Handler;
309         CPDFDoc_Environment*            m_pApp;
310 };
311
312 //#define CBF_Page2Accessible    CFX_MapPtrTemplate<CPDFSDK_PageView*, IAccessible*>
313
314 typedef int (*AI_COMPARE) (CPDFSDK_Annot* p1, CPDFSDK_Annot* p2);
315
316 class CPDFSDK_AnnotIterator
317 {
318 public:
319     CPDFSDK_AnnotIterator(CPDFSDK_PageView * pPageView, FX_BOOL bReverse,
320                 FX_BOOL bIgnoreTopmost=FALSE,FX_BOOL bCircle=FALSE,CFX_PtrArray* pList=NULL);
321     virtual ~CPDFSDK_AnnotIterator() { }
322
323         virtual CPDFSDK_Annot*  Next (const CPDFSDK_Annot* pCurrent) ;
324         virtual CPDFSDK_Annot*  Prev (const CPDFSDK_Annot* pCurrent) ;  
325         virtual CPDFSDK_Annot*  Next(int& index ) ;
326         virtual CPDFSDK_Annot*  Prev(int& index ) ;
327         virtual int             Count(){return m_pIteratorAnnotList.GetSize();}
328
329         virtual FX_BOOL         InitIteratorAnnotList(CPDFSDK_PageView * pPageView,CFX_PtrArray* pList=NULL);
330
331         void                                    InsertSort(CFX_PtrArray &arrayList, AI_COMPARE pCompare);
332
333 protected:
334         CPDFSDK_Annot*  NextAnnot (const CPDFSDK_Annot* pCurrent) ;
335         CPDFSDK_Annot*  PrevAnnot (const CPDFSDK_Annot* pCurrent) ;
336         CPDFSDK_Annot*  NextAnnot(int& index ) ;
337         CPDFSDK_Annot*  PrevAnnot(int& index ) ;
338
339         CFX_PtrArray         m_pIteratorAnnotList;
340         FX_BOOL                      m_bReverse;
341         FX_BOOL              m_bIgnoreTopmost;
342         FX_BOOL              m_bCircle;
343 };
344
345 #endif  // FPDFSDK_INCLUDE_FSDK_ANNOTHANDLER_H_