OLD | NEW |
1 // Copyright 2014 PDFium Authors. All rights reserved. | 1 // Copyright 2014 PDFium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com | 5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
6 | 6 |
7 #ifndef _FFL_FORMFILLER_H_ | 7 #ifndef _FFL_FORMFILLER_H_ |
8 #define _FFL_FORMFILLER_H_ | 8 #define _FFL_FORMFILLER_H_ |
9 | 9 |
10 #include "FFL_IFormFiller.h" | 10 #include "FFL_IFormFiller.h" |
11 #include "FFL_CBA_Fontmap.h" | 11 #include "FFL_CBA_Fontmap.h" |
12 | 12 |
13 class CPDFSDK_Annot; | 13 class CPDFSDK_Annot; |
14 class CFFL_FormFiller; | 14 class CFFL_FormFiller; |
15 class CFFL_Notify; | 15 class CFFL_Notify; |
16 class CPDFDoc_Environment; | 16 class CPDFDoc_Environment; |
17 class CPDFSDK_PageView; | 17 class CPDFSDK_PageView; |
18 class CPDFSDK_Document; | 18 class CPDFSDK_Document; |
19 class CPDFSDK_Widget; | 19 class CPDFSDK_Widget; |
20 | 20 |
21 | 21 #define CFFL_PageView2PDFWindow CFX_MapPtrTemplate<CPDFSDK_PageView*, CPWL_Wnd*> |
22 #define CFFL_PageView2PDFWindow»» CFX_MapPtrTemplate<CPDFSDK_PageView*, CP
WL_Wnd*> | 22 |
23 | 23 struct FFL_KeyStrokeData { |
24 struct FFL_KeyStrokeData | 24 CFX_WideString swValue; |
25 { | 25 FX_BOOL bFull; |
26 » CFX_WideString» » swValue; | 26 int nSelStart; |
27 » FX_BOOL»» » » bFull; | 27 int nSelEnd; |
28 » int» » » » » nSelStart; | |
29 » int» » » » » nSelEnd; | |
30 }; | 28 }; |
31 | 29 |
32 | 30 class CFFL_FormFiller : /*public IBA_AnnotFiller,*/ public IPWL_Provider, |
33 | 31 public CPWL_TimerHandler { |
34 class CFFL_FormFiller : /*public IBA_AnnotFiller,*/ public IPWL_Provider, public
CPWL_TimerHandler | 32 public: |
35 { | 33 CFFL_FormFiller(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot); |
36 public: | 34 virtual ~CFFL_FormFiller(); |
37 CFFL_FormFiller(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pAnnot); | 35 |
38 virtual ~CFFL_FormFiller(); | 36 virtual FX_RECT GetViewBBox(CPDFSDK_PageView* pPageView, |
39 | 37 CPDFSDK_Annot* pAnnot); |
40 virtual FX_RECT GetViewBBox(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot); | 38 virtual void OnDraw(CPDFSDK_PageView* pPageView, |
41 virtual void OnDraw(CPDFSDK_PageView *pPageVi
ew, /*HDC hDC,*/ CPDFSDK_Annot* pAnnot, | 39 /*HDC hDC,*/ CPDFSDK_Annot* pAnnot, |
42 CFX_Rend
erDevice* pDevice, CPDF_Matrix* pUser2Device, | 40 CFX_RenderDevice* pDevice, |
43 /*const
CRect& rcWindow, */FX_DWORD dwFlags); | 41 CPDF_Matrix* pUser2Device, |
44 virtual void OnDrawDeactive(CPDFSDK_PageView
*pPageView, /*HDC hDC,*/ CPDFSDK_Annot* pAnnot, | 42 /*const CRect& rcWindow, */ FX_DWORD dwFlags); |
45 CFX_RenderDevice
* pDevice, CPDF_Matrix* pUser2Device, | 43 virtual void OnDrawDeactive(CPDFSDK_PageView* pPageView, |
46 /*const CRect& r
cWindow, */FX_DWORD dwFlags); | 44 /*HDC hDC,*/ CPDFSDK_Annot* pAnnot, |
47 | 45 CFX_RenderDevice* pDevice, |
48 virtual void OnCreate(CPDFSDK_Annot* pAnnot); | 46 CPDF_Matrix* pUser2Device, |
49 virtual void OnLoad(CPDFSDK_Annot* pAnnot); | 47 /*const CRect& rcWindow, */ FX_DWORD dwFlags); |
50 virtual void OnDelete(CPDFSDK_Annot* pAnnot); | 48 |
51 | 49 virtual void OnCreate(CPDFSDK_Annot* pAnnot); |
52 virtual void OnMouseEnter(CPDFSDK_PageView *p
PageView, CPDFSDK_Annot* pAnnot); | 50 virtual void OnLoad(CPDFSDK_Annot* pAnnot); |
53 virtual void OnMouseExit(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot); | 51 virtual void OnDelete(CPDFSDK_Annot* pAnnot); |
54 | 52 |
55 virtual FX_BOOL OnLButtonDown(CPDFSDK_PageView *
pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 53 virtual void OnMouseEnter(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot); |
56 virtual FX_BOOL OnLButtonUp(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 54 virtual void OnMouseExit(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot); |
57 virtual FX_BOOL OnLButtonDblClk(CPDFSDK_PageView
*pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 55 |
58 virtual FX_BOOL OnMouseMove(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 56 virtual FX_BOOL OnLButtonDown(CPDFSDK_PageView* pPageView, |
59 virtual FX_BOOL OnMouseWheel(CPDFSDK_PageView *p
PageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, short zDelta, const CPDF_Point&
point); | 57 CPDFSDK_Annot* pAnnot, |
60 virtual FX_BOOL OnRButtonDown(CPDFSDK_PageView *
pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 58 FX_UINT nFlags, |
61 virtual FX_BOOL OnRButtonUp(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 59 const CPDF_Point& point); |
62 virtual FX_BOOL OnRButtonDblClk(CPDFSDK_PageView
*pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 60 virtual FX_BOOL OnLButtonUp(CPDFSDK_PageView* pPageView, |
63 | 61 CPDFSDK_Annot* pAnnot, |
64 virtual FX_BOOL OnKeyDown(CPDFSDK_Annot* pAnnot,
FX_UINT nKeyCode, FX_UINT nFlags); | 62 FX_UINT nFlags, |
65 virtual FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX
_UINT nChar, FX_UINT nFlags); | 63 const CPDF_Point& point); |
66 | 64 virtual FX_BOOL OnLButtonDblClk(CPDFSDK_PageView* pPageView, |
67 virtual void OnDeSelected(CPDFSDK_Annot* pAnn
ot); | 65 CPDFSDK_Annot* pAnnot, |
68 virtual void OnSelected(CPDFSDK_Annot* pAnnot
); | 66 FX_UINT nFlags, |
69 | 67 const CPDF_Point& point); |
70 virtual FX_BOOL OnSetFocus(CPDFSDK_Annot* pAnnot
, FX_UINT nFlag); | 68 virtual FX_BOOL OnMouseMove(CPDFSDK_PageView* pPageView, |
71 virtual FX_BOOL OnKillFocus(CPDFSDK_Annot* pAnno
t, FX_UINT nFlag); | 69 CPDFSDK_Annot* pAnnot, |
72 | 70 FX_UINT nFlags, |
73 virtual FX_BOOL CanCopy(CPDFSDK_Document* pDocum
ent); | 71 const CPDF_Point& point); |
74 virtual FX_BOOL CanCut(CPDFSDK_Document* pDocume
nt); | 72 virtual FX_BOOL OnMouseWheel(CPDFSDK_PageView* pPageView, |
75 virtual FX_BOOL CanPaste(CPDFSDK_Document* pDocu
ment); | 73 CPDFSDK_Annot* pAnnot, |
76 | 74 FX_UINT nFlags, |
77 virtual void DoCopy(CPDFSDK_Document* pDocume
nt); | 75 short zDelta, |
78 virtual void DoCut(CPDFSDK_Document* pDocumen
t); | 76 const CPDF_Point& point); |
79 virtual void DoPaste(CPDFSDK_Document* pDocum
ent); | 77 virtual FX_BOOL OnRButtonDown(CPDFSDK_PageView* pPageView, |
80 | 78 CPDFSDK_Annot* pAnnot, |
81 public: //CPWL_TimerHandler | 79 FX_UINT nFlags, |
82 virtual void TimerProc(); | 80 const CPDF_Point& point); |
83 virtual IFX_SystemHandler* GetSystemHandler() const; | 81 virtual FX_BOOL OnRButtonUp(CPDFSDK_PageView* pPageView, |
84 | 82 CPDFSDK_Annot* pAnnot, |
85 public: | 83 FX_UINT nFlags, |
86 virtual CPDF_Matrix GetWindowMatrix(void* pAttachedD
ata); | 84 const CPDF_Point& point); |
87 virtual CFX_WideString LoadPopupMenuString(int nIndex); | 85 virtual FX_BOOL OnRButtonDblClk(CPDFSDK_PageView* pPageView, |
88 | 86 CPDFSDK_Annot* pAnnot, |
89 virtual void GetActionData(CPDFSDK_PageView*
pPageView, CPDF_AAction::AActionType type, | 87 FX_UINT nFlags, |
90 PDFSDK_F
ieldAction& fa); | 88 const CPDF_Point& point); |
91 virtual void SetActionData(CPDFSDK_PageView*
pPageView, CPDF_AAction::AActionType type, | 89 |
92 const PD
FSDK_FieldAction& fa); | 90 virtual FX_BOOL OnKeyDown(CPDFSDK_Annot* pAnnot, |
93 virtual FX_BOOL IsActionDataChanged(CPDF_AAction
::AActionType type, const PDFSDK_FieldAction& faOld, | 91 FX_UINT nKeyCode, |
94 const PD
FSDK_FieldAction& faNew); | 92 FX_UINT nFlags); |
95 | 93 virtual FX_BOOL OnChar(CPDFSDK_Annot* pAnnot, FX_UINT nChar, FX_UINT nFlags); |
96 virtual void SaveState(CPDFSDK_PageView* pPag
eView); | 94 |
97 virtual void RestoreState(CPDFSDK_PageView* p
PageView); | 95 virtual void OnDeSelected(CPDFSDK_Annot* pAnnot); |
98 | 96 virtual void OnSelected(CPDFSDK_Annot* pAnnot); |
99 virtual CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView*
pPageView, FX_BOOL bRestoreValue); | 97 |
100 | 98 virtual FX_BOOL OnSetFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag); |
101 virtual void OnKeyStroke(FX_BOOL bKeyDown); | 99 virtual FX_BOOL OnKillFocus(CPDFSDK_Annot* pAnnot, FX_UINT nFlag); |
102 | 100 |
103 CPDF_Matrix GetCurMatrix(); | 101 virtual FX_BOOL CanCopy(CPDFSDK_Document* pDocument); |
104 | 102 virtual FX_BOOL CanCut(CPDFSDK_Document* pDocument); |
105 CPDF_Rect FFLtoPWL(const CPDF_Rect
& rect); | 103 virtual FX_BOOL CanPaste(CPDFSDK_Document* pDocument); |
106 CPDF_Rect PWLtoFFL(const CPDF_Rect
& rect); | 104 |
107 CPDF_Point FFLtoPWL(const CPDF_Poin
t& point); | 105 virtual void DoCopy(CPDFSDK_Document* pDocument); |
108 CPDF_Point PWLtoFFL(const CPDF_Poin
t& point); | 106 virtual void DoCut(CPDFSDK_Document* pDocument); |
109 | 107 virtual void DoPaste(CPDFSDK_Document* pDocument); |
110 CPDF_Point WndtoPWL(CPDFSDK_PageVie
w* pPageView, const CPDF_Point& pt); | 108 |
111 CPDF_Rect FFLtoWnd(CPDFSDK_PageVie
w* pPageView, const CPDF_Rect& rect); | 109 public: // CPWL_TimerHandler |
112 | 110 virtual void TimerProc(); |
113 void SetWindowRect(CPDFSDK_Pa
geView* pPageView, const CPDF_Rect& rcWindow); | 111 virtual IFX_SystemHandler* GetSystemHandler() const; |
114 CPDF_Rect GetWindowRect(CPDFSDK_Pa
geView* pPageView); | 112 |
115 | 113 public: |
116 static void FFL_FreeData(void* pData
); | 114 virtual CPDF_Matrix GetWindowMatrix(void* pAttachedData); |
117 | 115 virtual CFX_WideString LoadPopupMenuString(int nIndex); |
118 FX_BOOL CommitData(CPDFSDK_PageV
iew* pPageView, FX_UINT nFlag); | 116 |
119 virtual FX_BOOL IsDataChanged(CPDFSDK_PageView*
pPageView); | 117 virtual void GetActionData(CPDFSDK_PageView* pPageView, |
120 virtual void SaveData(CPDFSDK_PageView* pPage
View); | 118 CPDF_AAction::AActionType type, |
121 | 119 PDFSDK_FieldAction& fa); |
122 virtual void GetKeyStrokeData(CPDFSDK_PageVie
w* pPageView, FFL_KeyStrokeData& data); | 120 virtual void SetActionData(CPDFSDK_PageView* pPageView, |
123 | 121 CPDF_AAction::AActionType type, |
124 public: | 122 const PDFSDK_FieldAction& fa); |
125 CPWL_Wnd* GetPDFWindow(CPDFSDK_Pag
eView* pPageView, FX_BOOL bNew); | 123 virtual FX_BOOL IsActionDataChanged(CPDF_AAction::AActionType type, |
126 void DestroyPDFWindow(CPDFSDK
_PageView* pPageView); | 124 const PDFSDK_FieldAction& faOld, |
127 void EscapeFiller(CPDFSDK_Pag
eView* pPageView, FX_BOOL bDestroyPDFWindow); | 125 const PDFSDK_FieldAction& faNew); |
128 | 126 |
129 virtual PWL_CREATEPARAM GetCreateParam(); | 127 virtual void SaveState(CPDFSDK_PageView* pPageView); |
130 virtual CPWL_Wnd* NewPDFWindow(const PWL_CREATEPAR
AM& cp, CPDFSDK_PageView* pPageView) = 0; | 128 virtual void RestoreState(CPDFSDK_PageView* pPageView); |
131 virtual CPDF_Rect GetFocusBox(CPDFSDK_PageView* pP
ageView); | 129 |
132 | 130 virtual CPWL_Wnd* ResetPDFWindow(CPDFSDK_PageView* pPageView, |
133 public: | 131 FX_BOOL bRestoreValue); |
134 FX_BOOL IsValid() const; | 132 |
135 CPDF_Rect GetPDFWindowRect() const
; | 133 virtual void OnKeyStroke(FX_BOOL bKeyDown); |
136 | 134 |
137 CPDFSDK_PageView* GetCurPageView(); | 135 CPDF_Matrix GetCurMatrix(); |
138 void SetChangeMark(); | 136 |
139 | 137 CPDF_Rect FFLtoPWL(const CPDF_Rect& rect); |
140 virtual void InvalidateRect(double left, doub
le top, double right, double bottom); | 138 CPDF_Rect PWLtoFFL(const CPDF_Rect& rect); |
141 CPDFDoc_Environment* GetApp(){return m_pApp;} | 139 CPDF_Point FFLtoPWL(const CPDF_Point& point); |
142 CPDFSDK_Annot* GetSDKAnnot() {return m_pAnnot;}
| 140 CPDF_Point PWLtoFFL(const CPDF_Point& point); |
143 protected: | 141 |
144 CPDFDoc_Environment* m_pApp; | 142 CPDF_Point WndtoPWL(CPDFSDK_PageView* pPageView, const CPDF_Point& pt); |
145 CPDFSDK_Widget* m_pWidget; | 143 CPDF_Rect FFLtoWnd(CPDFSDK_PageView* pPageView, const CPDF_Rect& rect); |
146 CPDFSDK_Annot* m_pAnnot; | 144 |
147 | 145 void SetWindowRect(CPDFSDK_PageView* pPageView, const CPDF_Rect& rcWindow); |
148 FX_BOOL m_bValid; | 146 CPDF_Rect GetWindowRect(CPDFSDK_PageView* pPageView); |
149 CFFL_PageView2PDFWindow m_Maps; | 147 |
150 CPDF_Point m_ptOldPos; | 148 static void FFL_FreeData(void* pData); |
| 149 |
| 150 FX_BOOL CommitData(CPDFSDK_PageView* pPageView, FX_UINT nFlag); |
| 151 virtual FX_BOOL IsDataChanged(CPDFSDK_PageView* pPageView); |
| 152 virtual void SaveData(CPDFSDK_PageView* pPageView); |
| 153 |
| 154 virtual void GetKeyStrokeData(CPDFSDK_PageView* pPageView, |
| 155 FFL_KeyStrokeData& data); |
| 156 |
| 157 public: |
| 158 CPWL_Wnd* GetPDFWindow(CPDFSDK_PageView* pPageView, FX_BOOL bNew); |
| 159 void DestroyPDFWindow(CPDFSDK_PageView* pPageView); |
| 160 void EscapeFiller(CPDFSDK_PageView* pPageView, FX_BOOL bDestroyPDFWindow); |
| 161 |
| 162 virtual PWL_CREATEPARAM GetCreateParam(); |
| 163 virtual CPWL_Wnd* NewPDFWindow(const PWL_CREATEPARAM& cp, |
| 164 CPDFSDK_PageView* pPageView) = 0; |
| 165 virtual CPDF_Rect GetFocusBox(CPDFSDK_PageView* pPageView); |
| 166 |
| 167 public: |
| 168 FX_BOOL IsValid() const; |
| 169 CPDF_Rect GetPDFWindowRect() const; |
| 170 |
| 171 CPDFSDK_PageView* GetCurPageView(); |
| 172 void SetChangeMark(); |
| 173 |
| 174 virtual void InvalidateRect(double left, |
| 175 double top, |
| 176 double right, |
| 177 double bottom); |
| 178 CPDFDoc_Environment* GetApp() { return m_pApp; } |
| 179 CPDFSDK_Annot* GetSDKAnnot() { return m_pAnnot; } |
| 180 |
| 181 protected: |
| 182 CPDFDoc_Environment* m_pApp; |
| 183 CPDFSDK_Widget* m_pWidget; |
| 184 CPDFSDK_Annot* m_pAnnot; |
| 185 |
| 186 FX_BOOL m_bValid; |
| 187 CFFL_PageView2PDFWindow m_Maps; |
| 188 CPDF_Point m_ptOldPos; |
151 }; | 189 }; |
152 | 190 |
153 class CFFL_Button : public CFFL_FormFiller | 191 class CFFL_Button : public CFFL_FormFiller { |
154 { | 192 public: |
155 public: | 193 CFFL_Button(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget); |
156 » CFFL_Button(CPDFDoc_Environment* pApp, CPDFSDK_Annot* pWidget); | 194 virtual ~CFFL_Button(); |
157 » virtual ~CFFL_Button(); | 195 |
158 | 196 virtual void OnMouseEnter(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot); |
159 » virtual void» » » » OnMouseEnter(CPDFSDK_PageView *p
PageView, CPDFSDK_Annot* pAnnot); | 197 virtual void OnMouseExit(CPDFSDK_PageView* pPageView, CPDFSDK_Annot* pAnnot); |
160 » virtual void» » » » OnMouseExit(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot); | 198 virtual FX_BOOL OnLButtonDown(CPDFSDK_PageView* pPageView, |
161 » virtual FX_BOOL»» » » OnLButtonDown(CPDFSDK_PageView *
pPageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 199 CPDFSDK_Annot* pAnnot, |
162 » virtual FX_BOOL»» » » OnLButtonUp(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 200 FX_UINT nFlags, |
163 » virtual FX_BOOL»» » » OnMouseMove(CPDFSDK_PageView *pP
ageView, CPDFSDK_Annot* pAnnot, FX_UINT nFlags, const CPDF_Point& point); | 201 const CPDF_Point& point); |
164 » virtual void» » » » OnDraw(CPDFSDK_PageView *pPageVi
ew/*, HDC hDC*/, CPDFSDK_Annot* pAnnot, | 202 virtual FX_BOOL OnLButtonUp(CPDFSDK_PageView* pPageView, |
165 » » » » » » » » CFX_RenderDevice
* pDevice, CPDF_Matrix* pUser2Device, | 203 CPDFSDK_Annot* pAnnot, |
166 » » » » » » » » /*const CRect& r
cWindow,*/ FX_DWORD dwFlags); | 204 FX_UINT nFlags, |
167 | 205 const CPDF_Point& point); |
168 » virtual»void» » » » OnDrawDeactive(CPDFSDK_PageView
*pPageView, /*HDC hDC,*/ CPDFSDK_Annot* pAnnot, | 206 virtual FX_BOOL OnMouseMove(CPDFSDK_PageView* pPageView, |
169 » » » » » » » » CFX_RenderDevice
* pDevice, CPDF_Matrix* pUser2Device, | 207 CPDFSDK_Annot* pAnnot, |
170 » » » » » » » » /*const CRect& r
cWindow, */FX_DWORD dwFlags); | 208 FX_UINT nFlags, |
171 protected: | 209 const CPDF_Point& point); |
172 » FX_BOOL»» » » » » m_bMouseIn; | 210 virtual void OnDraw(CPDFSDK_PageView* pPageView /*, HDC hDC*/, |
173 » FX_BOOL»» » » » » m_bMouseDown; | 211 CPDFSDK_Annot* pAnnot, |
| 212 CFX_RenderDevice* pDevice, |
| 213 CPDF_Matrix* pUser2Device, |
| 214 /*const CRect& rcWindow,*/ FX_DWORD dwFlags); |
| 215 |
| 216 virtual void OnDrawDeactive(CPDFSDK_PageView* pPageView, |
| 217 /*HDC hDC,*/ CPDFSDK_Annot* pAnnot, |
| 218 CFX_RenderDevice* pDevice, |
| 219 CPDF_Matrix* pUser2Device, |
| 220 /*const CRect& rcWindow, */ FX_DWORD dwFlags); |
| 221 |
| 222 protected: |
| 223 FX_BOOL m_bMouseIn; |
| 224 FX_BOOL m_bMouseDown; |
174 }; | 225 }; |
175 | 226 |
176 //#define CFFL_IM_BOX» » » » CFX_ArrayTemplate<CBA_EditInput*
> | 227 //#define CFFL_IM_BOX CFX_ArrayTemplate<CBA_EditInput*> |
177 | 228 |
178 #endif | 229 #endif |
OLD | NEW |