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/fsdk_define.h" | 7 #include "../include/fsdk_define.h" |
8 #include "../include/fsdk_mgr.h" | 8 #include "../include/fsdk_mgr.h" |
9 #include "../include/formfiller/FFL_FormFiller.h" | 9 #include "../include/formfiller/FFL_FormFiller.h" |
10 #include "../include/fsdk_annothandler.h" | 10 #include "../include/fsdk_annothandler.h" |
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 | 281 |
282 FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnSetFocus(CPDFSDK_Annot* pAnnot,
FX_DWORD nFlag) | 282 FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnSetFocus(CPDFSDK_Annot* pAnnot,
FX_DWORD nFlag) |
283 { | 283 { |
284 ASSERT(pAnnot != NULL); | 284 ASSERT(pAnnot != NULL); |
285 | 285 |
286 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) | 286 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) |
287 { | 287 { |
288 if (pAnnotHandler->OnSetFocus(pAnnot, nFlag)) | 288 if (pAnnotHandler->OnSetFocus(pAnnot, nFlag)) |
289 { | 289 { |
290 CPDFSDK_PageView* pPage = pAnnot->GetPageView(); | 290 CPDFSDK_PageView* pPage = pAnnot->GetPageView(); |
291 ASSERT(pPage != NULL); | |
292 | |
293 pPage->GetSDKDocument(); | 291 pPage->GetSDKDocument(); |
294 // pDocument->SetTopmostAnnot(pAnnot); | |
295 | |
296 return TRUE; | 292 return TRUE; |
297 } | 293 } |
298 else | |
299 { | |
300 return FALSE; | |
301 } | |
302 } | 294 } |
303 | |
304 return FALSE; | 295 return FALSE; |
305 } | 296 } |
306 | 297 |
307 FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKillFocus(CPDFSDK_Annot* pAnnot
, FX_DWORD nFlag) | 298 FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnKillFocus(CPDFSDK_Annot* pAnnot
, FX_DWORD nFlag) |
308 { | 299 { |
309 ASSERT(pAnnot != NULL); | 300 ASSERT(pAnnot); |
310 | |
311 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) | 301 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) |
312 { | 302 return pAnnotHandler->OnKillFocus(pAnnot, nFlag); |
313 if (pAnnotHandler->OnKillFocus(pAnnot, nFlag)) | |
314 { | |
315 return TRUE; | |
316 } | |
317 else | |
318 return FALSE; | |
319 } | |
320 | 303 |
321 return FALSE; | 304 return FALSE; |
322 } | 305 } |
323 | 306 |
324 CPDF_Rect CPDFSDK_AnnotHandlerMgr::Annot_OnGetViewBBox(CPDFSDK_PageView *pPage
View, CPDFSDK_Annot* pAnnot) | 307 CPDF_Rect CPDFSDK_AnnotHandlerMgr::Annot_OnGetViewBBox(CPDFSDK_PageView *pPage
View, CPDFSDK_Annot* pAnnot) |
325 { | 308 { |
326 ASSERT(pAnnot); | 309 ASSERT(pAnnot); |
327 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) | 310 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) |
328 { | |
329 return pAnnotHandler->GetViewBBox(pPageView, pAnnot); | 311 return pAnnotHandler->GetViewBBox(pPageView, pAnnot); |
330 } | 312 |
331 return pAnnot->GetRect(); | 313 return pAnnot->GetRect(); |
332 } | 314 } |
333 | 315 |
334 FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnHitTest(CPDFSDK_PageView *pPageView, CP
DFSDK_Annot* pAnnot, const CPDF_Point& point) | 316 FX_BOOL CPDFSDK_AnnotHandlerMgr::Annot_OnHitTest(CPDFSDK_PageView *pPageView, CP
DFSDK_Annot* pAnnot, const CPDF_Point& point) |
335 { | 317 { |
336 ASSERT(pAnnot); | 318 ASSERT(pAnnot); |
337 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) | 319 if (IPDFSDK_AnnotHandler* pAnnotHandler = GetAnnotHandler(pAnnot)) |
338 { | 320 { |
339 if(pAnnotHandler->CanAnswer(pAnnot)) | 321 if (pAnnotHandler->CanAnswer(pAnnot)) |
340 return pAnnotHandler->HitTest(pPageView, pAnnot, point); | 322 return pAnnotHandler->HitTest(pPageView, pAnnot, point); |
341 } | 323 } |
342 return FALSE; | 324 return FALSE; |
343 } | 325 } |
344 | 326 |
345 CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::GetNextAnnot(CPDFSDK_Annot* pSDKAnnot,F
X_BOOL bNext) | 327 CPDFSDK_Annot* CPDFSDK_AnnotHandlerMgr::GetNextAnnot(CPDFSDK_Annot* pSDKAnnot,F
X_BOOL bNext) |
346 { | 328 { |
347 CBA_AnnotIterator ai(pSDKAnnot->GetPageView(), "Widget", ""); | 329 CBA_AnnotIterator ai(pSDKAnnot->GetPageView(), "Widget", ""); |
348 return bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot); | 330 return bNext ? ai.GetNextAnnot(pSDKAnnot) : ai.GetPrevAnnot(pSDKAnnot); |
349 } | 331 } |
350 | 332 |
351 FX_BOOL CPDFSDK_BFAnnotHandler::CanAnswer(CPDFSDK_Annot* pAnnot) | 333 FX_BOOL CPDFSDK_BFAnnotHandler::CanAnswer(CPDFSDK_Annot* pAnnot) |
352 { | 334 { |
353 ASSERT(pAnnot); | |
354 ASSERT(pAnnot->GetType() == "Widget"); | 335 ASSERT(pAnnot->GetType() == "Widget"); |
355 CFX_ByteString sSubType = pAnnot->GetSubType(); | 336 if (pAnnot->GetSubType() == BFFT_SIGNATURE) |
| 337 return FALSE; |
356 | 338 |
357 if (sSubType == BFFT_SIGNATURE) | 339 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
358 { | 340 if (!pWidget->IsVisible()) |
359 } | 341 return FALSE; |
360 else | |
361 { | |
362 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | |
363 if (!pWidget->IsVisible()) return FALSE; | |
364 | 342 |
365 int nFieldFlags = pWidget->GetFieldFlags(); | 343 int nFieldFlags = pWidget->GetFieldFlags(); |
366 if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) return FAL
SE; | 344 if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) |
367 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) | 345 return FALSE; |
368 return TRUE; | |
369 else | |
370 { | |
371 CPDF_Page* pPage = pWidget->GetPDFPage(); | |
372 ASSERT(pPage != NULL); | |
373 | 346 |
374 CPDF_Document* pDocument = pPage->m_pDocument; | 347 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) |
375 ASSERT(pDocument != NULL); | 348 return TRUE; |
376 | 349 |
377 FX_DWORD dwPermissions = pDocument->GetUserPermissions(); | 350 CPDF_Page* pPage = pWidget->GetPDFPage(); |
378 return (dwPermissions&FPDFPERM_FILL_FORM) || | 351 CPDF_Document* pDocument = pPage->m_pDocument; |
379 (dwPermissions&FPDFPERM_ANNOT_FORM) || | 352 FX_DWORD dwPermissions = pDocument->GetUserPermissions(); |
380 (dwPermissions&FPDFPERM_ANNOT_FORM); | 353 return (dwPermissions & FPDFPERM_FILL_FORM) || |
381 } | 354 (dwPermissions & FPDFPERM_ANNOT_FORM); |
382 } | |
383 | |
384 return FALSE; | |
385 } | 355 } |
386 | 356 |
387 CPDFSDK_Annot* CPDFSDK_BFAnnotHandler::NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_Page
View* pPage) | 357 CPDFSDK_Annot* CPDFSDK_BFAnnotHandler::NewAnnot(CPDF_Annot* pAnnot, CPDFSDK_Page
View* pPage) |
388 { | 358 { |
389 CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument(); | 359 CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument(); |
390 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pSDKDoc->GetInterForm(); | 360 CPDFSDK_InterForm* pInterForm = (CPDFSDK_InterForm*)pSDKDoc->GetInterForm(); |
391 CPDF_FormControl* pCtrl = CPDFSDK_Widget::GetFormControl(pInterForm->GetInte
rForm(), pAnnot->GetAnnotDict()); | 361 CPDF_FormControl* pCtrl = CPDFSDK_Widget::GetFormControl(pInterForm->GetInte
rForm(), pAnnot->GetAnnotDict()); |
392 if (!pCtrl) | 362 if (!pCtrl) |
393 return nullptr; | 363 return nullptr; |
394 | 364 |
(...skipping 471 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
866 arrayList[j + 1] = arrayList[j]; | 836 arrayList[j + 1] = arrayList[j]; |
867 } while (--j >= 0 && pCompare(pTemp, (CPDFSDK_Annot*)arrayList[j]) <
0); | 837 } while (--j >= 0 && pCompare(pTemp, (CPDFSDK_Annot*)arrayList[j]) <
0); |
868 | 838 |
869 arrayList[j+1] = pTemp; | 839 arrayList[j+1] = pTemp; |
870 } | 840 } |
871 } | 841 } |
872 } | 842 } |
873 | 843 |
874 int LyOrderCompare(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) | 844 int LyOrderCompare(CPDFSDK_Annot* p1, CPDFSDK_Annot* p2) |
875 { | 845 { |
876 if(p1->GetLayoutOrder() < p2->GetLayoutOrder()) | 846 if (p1->GetLayoutOrder() < p2->GetLayoutOrder()) |
877 return -1; | 847 return -1; |
878 else if (p1->GetLayoutOrder() == p2->GetLayoutOrder()) | 848 if (p1->GetLayoutOrder() > p2->GetLayoutOrder()) |
879 return 0; | |
880 else | |
881 return 1; | 849 return 1; |
| 850 return 0; |
882 } | 851 } |
883 | 852 |
884 FX_BOOL CPDFSDK_AnnotIterator::InitIteratorAnnotList(CPDFSDK_PageView* pPageView
,CFX_PtrArray * pAnnotList) | 853 FX_BOOL CPDFSDK_AnnotIterator::InitIteratorAnnotList(CPDFSDK_PageView* pPageView
,CFX_PtrArray * pAnnotList) |
885 { | 854 { |
886 ASSERT(pPageView); | 855 ASSERT(pPageView); |
887 | 856 |
888 if(pAnnotList==NULL){ | 857 if(pAnnotList==NULL){ |
889 pAnnotList=pPageView->GetAnnotList(); | 858 pAnnotList=pPageView->GetAnnotList(); |
890 } | 859 } |
891 | 860 |
(...skipping 22 matching lines...) Expand all Loading... |
914 { | 883 { |
915 m_pIteratorAnnotList.RemoveAt(i); | 884 m_pIteratorAnnotList.RemoveAt(i); |
916 m_pIteratorAnnotList.InsertAt(0, pReaderAnnot); | 885 m_pIteratorAnnotList.InsertAt(0, pReaderAnnot); |
917 break; | 886 break; |
918 } | 887 } |
919 } | 888 } |
920 } | 889 } |
921 | 890 |
922 return TRUE; | 891 return TRUE; |
923 } | 892 } |
OLD | NEW |