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 #include "../include/fpdfview.h" | 7 #include "../include/fpdfview.h" |
8 #include "../include/fpdfformfill.h" | 8 #include "../include/fpdfformfill.h" |
9 #include "../include/fsdk_define.h" | 9 #include "../include/fsdk_define.h" |
10 #include "../include/fsdk_mgr.h" | 10 #include "../include/fsdk_mgr.h" |
11 | 11 |
12 | |
13 #include "../include/javascript/IJavaScript.h" | 12 #include "../include/javascript/IJavaScript.h" |
14 | 13 |
15 | 14 DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, |
16 DLLEXPORT int STDCALL FPDPage_HasFormFieldAtPoint(FPDF_FORMHANDLE hHandle, FPDF_
PAGE page,double page_x, double page_y) | 15 FPDF_PAGE page, |
17 { | 16 double page_x, |
18 if(!page || !hHandle) | 17 double page_y) { |
19 return -1; | 18 if (!page || !hHandle) |
20 CPDF_Page * pPage = (CPDF_Page*) page; | 19 return -1; |
21 | 20 CPDF_Page* pPage = (CPDF_Page*)page; |
22 CPDF_InterForm * pInterForm = NULL; | 21 |
23 pInterForm = new CPDF_InterForm(pPage->m_pDocument,FALSE); | 22 CPDF_InterForm* pInterForm = NULL; |
24 if (!pInterForm) | 23 pInterForm = new CPDF_InterForm(pPage->m_pDocument, FALSE); |
25 return -1; | 24 if (!pInterForm) |
26 CPDF_FormControl* pFormCtrl = pInterForm->GetControlAtPoint(pPage, (FX_F
LOAT)page_x, (FX_FLOAT)page_y); | 25 return -1; |
27 if(!pFormCtrl) | 26 CPDF_FormControl* pFormCtrl = |
28 { | 27 pInterForm->GetControlAtPoint(pPage, (FX_FLOAT)page_x, (FX_FLOAT)page_y); |
29 delete pInterForm; | 28 if (!pFormCtrl) { |
30 return -1; | 29 delete pInterForm; |
31 } | 30 return -1; |
32 CPDF_FormField* pFormField = pFormCtrl->GetField(); | 31 } |
33 if(!pFormField) | 32 CPDF_FormField* pFormField = pFormCtrl->GetField(); |
34 { | 33 if (!pFormField) { |
35 delete pInterForm; | 34 delete pInterForm; |
36 return -1; | 35 return -1; |
37 } | 36 } |
38 | 37 |
39 int nType = pFormField->GetFieldType(); | 38 int nType = pFormField->GetFieldType(); |
40 delete pInterForm; | 39 delete pInterForm; |
41 return nType; | 40 return nType; |
42 } | 41 } |
43 | 42 |
44 DLLEXPORT FPDF_FORMHANDLE STDCALL FPDFDOC_InitFormFillEnviroument(FPDF_DOCUMENT
document, FPDF_FORMFILLINFO* formInfo) | 43 DLLEXPORT FPDF_FORMHANDLE STDCALL |
45 { | 44 FPDFDOC_InitFormFillEnviroument(FPDF_DOCUMENT document, |
46 if(!document || !formInfo || formInfo->version!=1) | 45 FPDF_FORMFILLINFO* formInfo) { |
47 return NULL; | 46 if (!document || !formInfo || formInfo->version != 1) |
48 CPDF_Document * pDocument = (CPDF_Document*) document; | 47 return NULL; |
49 CPDFDoc_Environment * pEnv = NULL; | 48 CPDF_Document* pDocument = (CPDF_Document*)document; |
50 pEnv = new CPDFDoc_Environment(pDocument); | 49 CPDFDoc_Environment* pEnv = NULL; |
51 if (!pEnv) | 50 pEnv = new CPDFDoc_Environment(pDocument); |
52 return NULL; | 51 if (!pEnv) |
53 pEnv->RegAppHandle(formInfo); | 52 return NULL; |
54 | 53 pEnv->RegAppHandle(formInfo); |
55 if(pEnv->GetPDFDocument()) | 54 |
56 { | 55 if (pEnv->GetPDFDocument()) { |
57 CPDFSDK_Document* pSDKDoc = new CPDFSDK_Document(pEnv->GetPDFDoc
ument(), pEnv); | 56 CPDFSDK_Document* pSDKDoc = |
58 if(pSDKDoc) | 57 new CPDFSDK_Document(pEnv->GetPDFDocument(), pEnv); |
59 pEnv->SetCurrentDoc(pSDKDoc); | 58 if (pSDKDoc) |
60 } | 59 pEnv->SetCurrentDoc(pSDKDoc); |
61 return pEnv; | 60 } |
62 } | 61 return pEnv; |
63 | 62 } |
64 DLLEXPORT void STDCALL FPDFDOC_ExitFormFillEnviroument(FPDF_FORMHANDLE hHandle) | 63 |
65 { | 64 DLLEXPORT void STDCALL |
66 if(!hHandle) | 65 FPDFDOC_ExitFormFillEnviroument(FPDF_FORMHANDLE hHandle) { |
67 return; | 66 if (!hHandle) |
68 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 67 return; |
69 if(pSDKDoc) | 68 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
70 { | 69 if (pSDKDoc) { |
71 ((CPDFDoc_Environment*)hHandle)->SetCurrentDoc(NULL); | 70 ((CPDFDoc_Environment*)hHandle)->SetCurrentDoc(NULL); |
72 delete pSDKDoc; | 71 delete pSDKDoc; |
73 } | 72 } |
74 delete (CPDFDoc_Environment*)hHandle; | 73 delete (CPDFDoc_Environment*)hHandle; |
75 hHandle = NULL; | 74 hHandle = NULL; |
76 } | 75 } |
77 | 76 |
78 DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, FPDF_PAGE
page, int modifier, double page_x, double page_y) | 77 DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, |
79 { | 78 FPDF_PAGE page, |
80 if (!hHandle || !page) | 79 int modifier, |
81 return FALSE; | 80 double page_x, |
82 // CPDF_Page * pPage = (CPDF_Page*) page; | 81 double page_y) { |
83 // CPDF_Document * pDoc = pPage->m_pDocument; | 82 if (!hHandle || !page) |
84 // CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; | 83 return FALSE; |
85 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDo
c(); | 84 // CPDF_Page * pPage = (CPDF_Page*) page; |
86 if(!pFXDoc) | 85 // CPDF_Document * pDoc = pPage->m_pDocument; |
87 return FALSE; | 86 // CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; |
88 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); | 87 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
89 if(!pPageView) | 88 if (!pFXDoc) |
90 return FALSE; | 89 return FALSE; |
91 | 90 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); |
92 // double page_x = 0; | 91 if (!pPageView) |
93 // double page_y = 0; | 92 return FALSE; |
94 // pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); | 93 |
95 CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 94 // double page_x = 0; |
96 return pPageView->OnMouseMove(pt, modifier); | 95 // double page_y = 0; |
97 } | 96 // pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); |
98 | 97 CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
99 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle, FPDF_PAG
E page, int modifier, double page_x, double page_y) | 98 return pPageView->OnMouseMove(pt, modifier); |
100 { | 99 } |
101 if (!hHandle || !page) | 100 |
102 return FALSE; | 101 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle, |
103 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDo
c(); | 102 FPDF_PAGE page, |
104 if(!pFXDoc) | 103 int modifier, |
105 return FALSE; | 104 double page_x, |
106 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); | 105 double page_y) { |
107 if(!pPageView) | 106 if (!hHandle || !page) |
108 return FALSE; | 107 return FALSE; |
109 // double page_x = 0; | 108 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
110 // double page_y = 0; | 109 if (!pFXDoc) |
111 // pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); | 110 return FALSE; |
112 CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 111 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); |
113 return pPageView->OnLButtonDown(pt, modifier); | 112 if (!pPageView) |
114 } | 113 return FALSE; |
115 | 114 // double page_x = 0; |
116 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle, FPDF_PAGE
page, int modifier, double page_x, double page_y) | 115 // double page_y = 0; |
117 { | 116 // pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); |
118 if (!hHandle || !page) | 117 CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
119 return FALSE; | 118 return pPageView->OnLButtonDown(pt, modifier); |
120 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDo
c(); | 119 } |
121 if(!pFXDoc) | 120 |
122 return FALSE; | 121 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle, |
123 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); | 122 FPDF_PAGE page, |
124 if(!pPageView) | 123 int modifier, |
125 return FALSE; | 124 double page_x, |
126 // double page_x = 0; | 125 double page_y) { |
127 // double page_y = 0; | 126 if (!hHandle || !page) |
128 // pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); | 127 return FALSE; |
129 CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 128 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
130 return pPageView->OnLButtonUp(pt, modifier); | 129 if (!pFXDoc) |
131 } | 130 return FALSE; |
132 | 131 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); |
133 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle, FPDF_PAGE pa
ge, int nKeyCode, int modifier) | 132 if (!pPageView) |
134 { | 133 return FALSE; |
135 if (!hHandle || !page) | 134 // double page_x = 0; |
136 return FALSE; | 135 // double page_y = 0; |
137 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDo
c(); | 136 // pEnv->FFI_DeviceToPage(page, point_x, point_y, &page_x, &page_y); |
138 if(!pFXDoc) | 137 CPDF_Point pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
139 return FALSE; | 138 return pPageView->OnLButtonUp(pt, modifier); |
140 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); | 139 } |
141 if(!pPageView) | 140 |
142 return FALSE; | 141 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle, |
143 | 142 FPDF_PAGE page, |
144 | 143 int nKeyCode, |
145 return pPageView->OnKeyDown(nKeyCode, modifier); | 144 int modifier) { |
146 } | 145 if (!hHandle || !page) |
147 | 146 return FALSE; |
148 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(FPDF_FORMHANDLE hHandle, FPDF_PAGE page
, int nKeyCode, int modifier) | 147 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
149 { | 148 if (!pFXDoc) |
150 if (!hHandle || !page) | 149 return FALSE; |
151 return FALSE; | 150 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); |
152 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDo
c(); | 151 if (!pPageView) |
153 if(!pFXDoc) | 152 return FALSE; |
154 return FALSE; | 153 |
155 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); | 154 return pPageView->OnKeyDown(nKeyCode, modifier); |
156 if(!pPageView) | 155 } |
157 return FALSE; | 156 |
158 | 157 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(FPDF_FORMHANDLE hHandle, |
159 | 158 FPDF_PAGE page, |
160 return pPageView->OnKeyUp(nKeyCode, modifier); | 159 int nKeyCode, |
161 } | 160 int modifier) { |
162 | 161 if (!hHandle || !page) |
163 | 162 return FALSE; |
164 DLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(FPDF_FORMHANDLE hHandle, FPDF_PAGE page,
int nChar, int modifier) | 163 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
165 { | 164 if (!pFXDoc) |
166 if (!hHandle || !page) | 165 return FALSE; |
167 return FALSE; | 166 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); |
168 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDo
c(); | 167 if (!pPageView) |
169 if(!pFXDoc) | 168 return FALSE; |
170 return FALSE; | 169 |
171 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); | 170 return pPageView->OnKeyUp(nKeyCode, modifier); |
172 if(!pPageView) | 171 } |
173 return FALSE; | 172 |
174 return pPageView->OnChar(nChar, modifier); | 173 DLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(FPDF_FORMHANDLE hHandle, |
175 | 174 FPDF_PAGE page, |
176 } | 175 int nChar, |
177 | 176 int modifier) { |
178 DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) | 177 if (!hHandle || !page) |
179 { | 178 return FALSE; |
180 if(!hHandle) | 179 CPDFSDK_Document* pFXDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
181 return FALSE; | 180 if (!pFXDoc) |
182 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 181 return FALSE; |
183 if(!pSDKDoc) | 182 CPDFSDK_PageView* pPageView = pFXDoc->GetPageView((CPDF_Page*)page); |
184 return FALSE; | 183 if (!pPageView) |
185 //Kill the current focus. | 184 return FALSE; |
186 return pSDKDoc->KillFocusAnnot(0); | 185 return pPageView->OnChar(nChar, modifier); |
187 } | 186 } |
188 | 187 |
189 DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, FPDF_BITMAP bitmap,
FPDF_PAGE page, int start_x, int start_y, | 188 DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) { |
190
int size_x, int size_y, int rotate, int flags) | 189 if (!hHandle) |
191 { | 190 return FALSE; |
192 if (!hHandle || !page) | 191 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
193 return ; | 192 if (!pSDKDoc) |
194 CPDF_Page* pPage = (CPDF_Page*)page; | 193 return FALSE; |
195 | 194 // Kill the current focus. |
196 CPDF_RenderOptions options; | 195 return pSDKDoc->KillFocusAnnot(0); |
197 if (flags & FPDF_LCD_TEXT) | 196 } |
198 options.m_Flags |= RENDER_CLEARTYPE; | 197 |
199 else | 198 DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, |
200 options.m_Flags &= ~RENDER_CLEARTYPE; | 199 FPDF_BITMAP bitmap, |
201 | 200 FPDF_PAGE page, |
202 //Grayscale output | 201 int start_x, |
203 if (flags & FPDF_GRAYSCALE) | 202 int start_y, |
204 { | 203 int size_x, |
205 options.m_ColorMode = RENDER_COLOR_GRAY; | 204 int size_y, |
206 options.m_ForeColor = 0; | 205 int rotate, |
207 options.m_BackColor = 0xffffff; | 206 int flags) { |
208 } | 207 if (!hHandle || !page) |
209 | 208 return; |
210 options.m_AddFlags = flags >> 8; | 209 CPDF_Page* pPage = (CPDF_Page*)page; |
211 | 210 |
212 options.m_pOCContext = FX_NEW CPDF_OCContext(pPage->m_pDocument); | 211 CPDF_RenderOptions options; |
213 | 212 if (flags & FPDF_LCD_TEXT) |
214 //FXMT_CSLOCK_OBJ(&pPage->m_PageLock); | 213 options.m_Flags |= RENDER_CLEARTYPE; |
215 | 214 else |
216 CFX_AffineMatrix matrix; | 215 options.m_Flags &= ~RENDER_CLEARTYPE; |
217 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate
); | 216 |
218 | 217 // Grayscale output |
219 FX_RECT clip; | 218 if (flags & FPDF_GRAYSCALE) { |
220 clip.left = start_x; | 219 options.m_ColorMode = RENDER_COLOR_GRAY; |
221 clip.right = start_x + size_x; | 220 options.m_ForeColor = 0; |
222 clip.top = start_y; | 221 options.m_BackColor = 0xffffff; |
223 clip.bottom = start_y + size_y; | 222 } |
| 223 |
| 224 options.m_AddFlags = flags >> 8; |
| 225 |
| 226 options.m_pOCContext = FX_NEW CPDF_OCContext(pPage->m_pDocument); |
| 227 |
| 228 // FXMT_CSLOCK_OBJ(&pPage->m_PageLock); |
| 229 |
| 230 CFX_AffineMatrix matrix; |
| 231 pPage->GetDisplayMatrix(matrix, start_x, start_y, size_x, size_y, rotate); |
| 232 |
| 233 FX_RECT clip; |
| 234 clip.left = start_x; |
| 235 clip.right = start_x + size_x; |
| 236 clip.top = start_y; |
| 237 clip.bottom = start_y + size_y; |
224 | 238 |
225 #ifdef _SKIA_SUPPORT_ | 239 #ifdef _SKIA_SUPPORT_ |
226 » CFX_SkiaDevice* pDevice = FX_NEW CFX_SkiaDevice; | 240 CFX_SkiaDevice* pDevice = FX_NEW CFX_SkiaDevice; |
227 #else | 241 #else |
228 » CFX_FxgeDevice* pDevice = NULL; | 242 CFX_FxgeDevice* pDevice = NULL; |
229 » pDevice = FX_NEW CFX_FxgeDevice; | 243 pDevice = FX_NEW CFX_FxgeDevice; |
230 #endif | 244 #endif |
231 | 245 |
232 if (!pDevice) | 246 if (!pDevice) |
233 return; | 247 return; |
234 pDevice->Attach((CFX_DIBitmap*)bitmap); | 248 pDevice->Attach((CFX_DIBitmap*)bitmap); |
235 pDevice->SaveState(); | 249 pDevice->SaveState(); |
236 pDevice->SetClip_Rect(&clip); | 250 pDevice->SetClip_Rect(&clip); |
237 | 251 |
238 | 252 CPDF_RenderContext* pContext = NULL; |
239 CPDF_RenderContext* pContext = NULL; | 253 pContext = FX_NEW CPDF_RenderContext; |
240 pContext = FX_NEW CPDF_RenderContext; | 254 if (!pContext) { |
241 if (!pContext) | 255 delete pDevice; |
242 { | 256 pDevice = NULL; |
243 delete pDevice; | 257 return; |
244 pDevice = NULL; | 258 } |
245 return; | 259 |
246 } | 260 // CPDF_Document* pDoc = pPage->m_pDocument; |
247 | 261 CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; |
248 | 262 CPDFSDK_Document* pFXDoc = pEnv->GetCurrentDoc(); |
249 // CPDF_Document* pDoc = pPage->m_pDocument; | 263 if (!pFXDoc) { |
250 CPDFDoc_Environment* pEnv = (CPDFDoc_Environment*)hHandle; | 264 delete pContext; |
251 CPDFSDK_Document* pFXDoc = pEnv->GetCurrentDoc(); | 265 delete pDevice; |
252 if(!pFXDoc) | 266 pContext = NULL; |
253 { | 267 pDevice = NULL; |
254 delete pContext; | 268 return; |
255 delete pDevice; | 269 } |
256 pContext = NULL; | 270 if (CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage)) { |
257 pDevice = NULL; | 271 pPageView->PageView_OnDraw(pDevice, &matrix, &options); |
258 return; | 272 } |
259 } | 273 pDevice->RestoreState(); |
260 if(CPDFSDK_PageView* pPageView = pFXDoc->GetPageView(pPage)) | 274 |
261 { | 275 if (options.m_pOCContext) { |
262 pPageView->PageView_OnDraw(pDevice, &matrix, &options); | 276 delete options.m_pOCContext; |
263 } | 277 options.m_pOCContext = NULL; |
264 pDevice->RestoreState(); | 278 } |
265 | 279 if (pContext) { |
266 if(options.m_pOCContext) | 280 delete pContext; |
267 { | 281 pContext = NULL; |
268 delete options.m_pOCContext; | 282 } |
269 options.m_pOCContext = NULL; | 283 if (pDevice) { |
270 } | 284 delete pDevice; |
271 if(pContext) | 285 pDevice = NULL; |
272 { | 286 } |
273 delete pContext; | 287 } |
274 pContext = NULL; | 288 |
275 } | 289 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle, |
276 if(pDevice) | 290 int fieldType, |
277 { | 291 unsigned long color) { |
278 delete pDevice; | 292 if (!hHandle) |
279 pDevice = NULL; | 293 return; |
280 } | 294 // CPDFDoc_Environment* pEnv = (CPDFDoc_Environment* )hHandle; |
281 | 295 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
282 } | 296 if (pSDKDoc) { |
283 | 297 if (CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) { |
284 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle,
int fieldType, unsigned long color) | 298 pInterForm->SetHighlightColor(color, fieldType); |
285 { | 299 } |
286 if (!hHandle) | 300 } |
287 return; | 301 } |
288 // CPDFDoc_Environment* pEnv = (CPDFDoc_Environment* )hHandle; | 302 |
289 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 303 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightAlpha(FPDF_FORMHANDLE hHandle, |
290 if(pSDKDoc) | 304 unsigned char alpha) { |
291 { | 305 if (!hHandle) |
292 if(CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) | 306 return; |
293 { | 307 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
294 pInterForm->SetHighlightColor(color, fieldType); | 308 if (pSDKDoc) { |
295 } | 309 if (CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) |
296 | 310 pInterForm->SetHighlightAlpha(alpha); |
297 } | 311 } |
298 | 312 } |
299 } | 313 |
300 | 314 DLLEXPORT void STDCALL FPDF_RemoveFormFieldHighlight(FPDF_FORMHANDLE hHandle) { |
301 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightAlpha(FPDF_FORMHANDLE hHandle,
unsigned char alpha) | 315 if (!hHandle) |
302 { | 316 return; |
303 if (!hHandle) | 317 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
304 return; | 318 if (pSDKDoc) { |
305 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 319 if (CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) |
306 if(pSDKDoc) | 320 pInterForm->RemoveAllHighLight(); |
307 { | 321 } |
308 if(CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) | 322 } |
309 pInterForm->SetHighlightAlpha(alpha); | 323 |
310 } | 324 DLLEXPORT void STDCALL |
311 } | 325 FORM_OnAfterLoadPage(FPDF_PAGE page, FPDF_FORMHANDLE hHandle) { |
312 | 326 if (!hHandle || !page) |
313 DLLEXPORT void STDCALL FPDF_RemoveFormFieldHighlight(FPDF_FORMHANDLE hHandle) | 327 return; |
314 { | 328 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
315 if (!hHandle) | 329 if (!pSDKDoc) |
316 return; | 330 return; |
317 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 331 CPDF_Page* pPage = (CPDF_Page*)page; |
318 if(pSDKDoc) | 332 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, TRUE); |
319 { | 333 if (pPageView) { |
320 if(CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm()) | 334 pPageView->SetValid(TRUE); |
321 pInterForm->RemoveAllHighLight(); | 335 } |
322 } | 336 } |
323 } | 337 |
324 | 338 DLLEXPORT void STDCALL |
325 DLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page, FPDF_FORMHANDLE hHan
dle) | 339 FORM_OnBeforeClosePage(FPDF_PAGE page, FPDF_FORMHANDLE hHandle) { |
326 { | 340 if (!hHandle || !page) |
327 if(!hHandle || !page) | 341 return; |
328 return; | 342 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
329 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 343 CPDF_Page* pPage = (CPDF_Page*)page; |
330 if(!pSDKDoc) | 344 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); |
331 return; | 345 if (pPageView) { |
332 CPDF_Page* pPage = (CPDF_Page*)page; | 346 pPageView->SetValid(FALSE); |
333 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, TRUE); | 347 // ReMovePageView() takes care of the delete for us. |
334 if(pPageView) | 348 pSDKDoc->ReMovePageView(pPage); |
335 { | 349 } |
336 pPageView->SetValid(TRUE); | 350 } |
337 } | 351 DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) { |
338 } | 352 if (!hHandle) |
339 | 353 return; |
340 DLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page, FPDF_FORMHANDLE hH
andle) | 354 if (CPDFSDK_Document* pSDKDoc = |
341 { | 355 ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc()) { |
342 if(!hHandle || !page) | 356 pSDKDoc->InitPageView(); |
343 return; | 357 if (((CPDFDoc_Environment*)hHandle)->IsJSInitiated()) |
344 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 358 pSDKDoc->ProcJavascriptFun(); |
345 CPDF_Page* pPage = (CPDF_Page*)page; | 359 } |
346 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); | 360 } |
347 if(pPageView) | 361 |
348 { | 362 DLLEXPORT void STDCALL FORM_DoDocumentOpenAction(FPDF_FORMHANDLE hHandle) { |
349 pPageView->SetValid(FALSE); | 363 if (!hHandle) |
350 // ReMovePageView() takes care of the delete for us. | 364 return; |
351 pSDKDoc->ReMovePageView(pPage); | 365 if (CPDFSDK_Document* pSDKDoc = |
352 } | 366 ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc()) { |
353 } | 367 if (((CPDFDoc_Environment*)hHandle)->IsJSInitiated()) |
354 DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) | 368 pSDKDoc->ProcOpenAction(); |
355 { | 369 } |
356 if(!hHandle) | 370 } |
357 return; | 371 DLLEXPORT void STDCALL |
358 if( CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurr
entDoc()) | 372 FORM_DoDocumentAAction(FPDF_FORMHANDLE hHandle, int aaType) { |
359 { | 373 if (!hHandle) |
360 pSDKDoc->InitPageView(); | 374 return; |
361 if(((CPDFDoc_Environment*)hHandle)->IsJSInitiated()) | 375 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
362 pSDKDoc->ProcJavascriptFun(); | 376 if (pSDKDoc) { |
363 } | 377 CPDF_Document* pDoc = pSDKDoc->GetDocument(); |
364 } | 378 CPDF_Dictionary* pDic = pDoc->GetRoot(); |
365 | 379 if (!pDic) |
366 DLLEXPORT void STDCALL FORM_DoDocumentOpenAction(FPDF_FORMHANDLE hHandle) | 380 return; |
367 { | 381 CPDF_AAction aa = pDic->GetDict(FX_BSTRC("AA")); |
368 if(!hHandle) | 382 |
369 return; | 383 if (aa.ActionExist((CPDF_AAction::AActionType)aaType)) { |
370 if( CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurr
entDoc()) | 384 CPDF_Action action = aa.GetAction((CPDF_AAction::AActionType)aaType); |
371 { | 385 CPDFSDK_ActionHandler* pActionHandler = |
372 if(((CPDFDoc_Environment*)hHandle)->IsJSInitiated()) | 386 ((CPDFDoc_Environment*)hHandle)->GetActionHander(); |
373 pSDKDoc->ProcOpenAction(); | 387 ASSERT(pActionHandler != NULL); |
374 } | 388 pActionHandler->DoAction_Document( |
375 } | 389 action, (CPDF_AAction::AActionType)aaType, pSDKDoc); |
376 DLLEXPORT void STDCALL FORM_DoDocumentAAction(FPDF_FORMHANDLE hHandle, int aaTyp
e) | 390 } |
377 { | 391 } |
378 if(!hHandle) | 392 } |
379 return; | 393 DLLEXPORT void STDCALL |
380 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 394 FORM_DoPageAAction(FPDF_PAGE page, FPDF_FORMHANDLE hHandle, int aaType) { |
381 if(pSDKDoc) | 395 if (!hHandle || !page) |
382 { | 396 return; |
383 CPDF_Document* pDoc = pSDKDoc->GetDocument(); | 397 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentDoc(); |
384 CPDF_Dictionary* pDic = pDoc->GetRoot(); | 398 CPDF_Page* pPage = (CPDF_Page*)page; |
385 if (!pDic) | 399 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); |
386 return; | 400 if (pPageView) { |
387 CPDF_AAction aa = pDic->GetDict(FX_BSTRC("AA")); | 401 CPDFDoc_Environment* pEnv = pSDKDoc->GetEnv(); |
388 | 402 ASSERT(pEnv != NULL); |
389 if(aa.ActionExist((CPDF_AAction::AActionType)aaType)) | 403 |
390 { | 404 CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander(); |
391 CPDF_Action action = aa.GetAction((CPDF_AAction::AAction
Type)aaType); | 405 ASSERT(pActionHandler != NULL); |
392 CPDFSDK_ActionHandler *pActionHandler = ((CPDFDoc_Enviro
nment*)hHandle)->GetActionHander(); | 406 |
393 ASSERT(pActionHandler != NULL); | 407 CPDF_Dictionary* pPageDict = pPage->m_pFormDict; |
394 pActionHandler->DoAction_Document(action, (CPDF_AAction:
:AActionType)aaType, pSDKDoc); | 408 ASSERT(pPageDict != NULL); |
395 } | 409 |
396 } | 410 CPDF_AAction aa = pPageDict->GetDict(FX_BSTRC("AA")); |
397 } | 411 |
398 DLLEXPORT void STDCALL FORM_DoPageAAction(FPDF_PAGE page, FPDF_FORMHANDLE hHandl
e, int aaType) | 412 FX_BOOL bExistOAAction = FALSE; |
399 { | 413 FX_BOOL bExistCAAction = FALSE; |
400 if(!hHandle || !page) | 414 if (FPDFPAGE_AACTION_OPEN == aaType) { |
401 return; | 415 bExistOAAction = aa.ActionExist(CPDF_AAction::OpenPage); |
402 CPDFSDK_Document* pSDKDoc = ((CPDFDoc_Environment*)hHandle)->GetCurrentD
oc(); | 416 if (bExistOAAction) { |
403 CPDF_Page* pPage = (CPDF_Page*)page; | 417 CPDF_Action action = aa.GetAction(CPDF_AAction::OpenPage); |
404 CPDFSDK_PageView* pPageView = pSDKDoc->GetPageView(pPage, FALSE); | 418 pActionHandler->DoAction_Page(action, CPDF_AAction::OpenPage, pSDKDoc); |
405 if(pPageView) | 419 } |
406 { | 420 } else { |
407 CPDFDoc_Environment *pEnv = pSDKDoc->GetEnv(); | 421 bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage); |
408 ASSERT(pEnv != NULL); | 422 if (bExistCAAction) { |
409 | 423 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); |
410 CPDFSDK_ActionHandler *pActionHandler = pEnv->GetActionHander(); | 424 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, pSDKDoc); |
411 ASSERT(pActionHandler != NULL); | 425 } |
412 | 426 } |
413 CPDF_Dictionary *pPageDict = pPage->m_pFormDict; | 427 } |
414 ASSERT(pPageDict != NULL); | 428 } |
415 | |
416 CPDF_AAction aa = pPageDict->GetDict(FX_BSTRC("AA")); | |
417 | |
418 FX_BOOL bExistOAAction = FALSE; | |
419 FX_BOOL bExistCAAction = FALSE; | |
420 if (FPDFPAGE_AACTION_OPEN == aaType) | |
421 { | |
422 bExistOAAction = aa.ActionExist(CPDF_AAction::OpenPage); | |
423 if (bExistOAAction) | |
424 { | |
425 CPDF_Action action = aa.GetAction(CPDF_AAction::
OpenPage); | |
426 pActionHandler->DoAction_Page(action, CPDF_AActi
on::OpenPage, pSDKDoc); | |
427 } | |
428 } | |
429 else | |
430 { | |
431 bExistCAAction = aa.ActionExist(CPDF_AAction::ClosePage)
; | |
432 if (bExistCAAction) | |
433 { | |
434 CPDF_Action action = aa.GetAction(CPDF_AAction::
ClosePage); | |
435 pActionHandler->DoAction_Page(action, CPDF_AActi
on::ClosePage, pSDKDoc); | |
436 } | |
437 } | |
438 } | |
439 } | |
440 | |
441 | |
OLD | NEW |