| 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 "public/fpdf_formfill.h" | 7 #include "public/fpdf_formfill.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| (...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 delete pFormFillEnv; | 283 delete pFormFillEnv; |
| 284 } | 284 } |
| 285 | 285 |
| 286 DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, | 286 DLLEXPORT FPDF_BOOL STDCALL FORM_OnMouseMove(FPDF_FORMHANDLE hHandle, |
| 287 FPDF_PAGE page, | 287 FPDF_PAGE page, |
| 288 int modifier, | 288 int modifier, |
| 289 double page_x, | 289 double page_x, |
| 290 double page_y) { | 290 double page_y) { |
| 291 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 291 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 292 if (!pPageView) | 292 if (!pPageView) |
| 293 return FALSE; | 293 return false; |
| 294 | 294 |
| 295 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 295 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
| 296 return pPageView->OnMouseMove(pt, modifier); | 296 return pPageView->OnMouseMove(pt, modifier); |
| 297 } | 297 } |
| 298 | 298 |
| 299 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle, | 299 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonDown(FPDF_FORMHANDLE hHandle, |
| 300 FPDF_PAGE page, | 300 FPDF_PAGE page, |
| 301 int modifier, | 301 int modifier, |
| 302 double page_x, | 302 double page_x, |
| 303 double page_y) { | 303 double page_y) { |
| 304 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 304 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 305 if (!pPageView) | 305 if (!pPageView) |
| 306 return FALSE; | 306 return false; |
| 307 | 307 |
| 308 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 308 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
| 309 return pPageView->OnLButtonDown(pt, modifier); | 309 return pPageView->OnLButtonDown(pt, modifier); |
| 310 } | 310 } |
| 311 | 311 |
| 312 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle, | 312 DLLEXPORT FPDF_BOOL STDCALL FORM_OnLButtonUp(FPDF_FORMHANDLE hHandle, |
| 313 FPDF_PAGE page, | 313 FPDF_PAGE page, |
| 314 int modifier, | 314 int modifier, |
| 315 double page_x, | 315 double page_x, |
| 316 double page_y) { | 316 double page_y) { |
| 317 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 317 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 318 if (!pPageView) | 318 if (!pPageView) |
| 319 return FALSE; | 319 return false; |
| 320 | 320 |
| 321 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 321 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
| 322 return pPageView->OnLButtonUp(pt, modifier); | 322 return pPageView->OnLButtonUp(pt, modifier); |
| 323 } | 323 } |
| 324 | 324 |
| 325 #ifdef PDF_ENABLE_XFA | 325 #ifdef PDF_ENABLE_XFA |
| 326 DLLEXPORT FPDF_BOOL STDCALL FORM_OnRButtonDown(FPDF_FORMHANDLE hHandle, | 326 DLLEXPORT FPDF_BOOL STDCALL FORM_OnRButtonDown(FPDF_FORMHANDLE hHandle, |
| 327 FPDF_PAGE page, | 327 FPDF_PAGE page, |
| 328 int modifier, | 328 int modifier, |
| 329 double page_x, | 329 double page_x, |
| 330 double page_y) { | 330 double page_y) { |
| 331 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 331 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 332 if (!pPageView) | 332 if (!pPageView) |
| 333 return FALSE; | 333 return false; |
| 334 | 334 |
| 335 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 335 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
| 336 return pPageView->OnRButtonDown(pt, modifier); | 336 return pPageView->OnRButtonDown(pt, modifier); |
| 337 } | 337 } |
| 338 | 338 |
| 339 DLLEXPORT FPDF_BOOL STDCALL FORM_OnRButtonUp(FPDF_FORMHANDLE hHandle, | 339 DLLEXPORT FPDF_BOOL STDCALL FORM_OnRButtonUp(FPDF_FORMHANDLE hHandle, |
| 340 FPDF_PAGE page, | 340 FPDF_PAGE page, |
| 341 int modifier, | 341 int modifier, |
| 342 double page_x, | 342 double page_x, |
| 343 double page_y) { | 343 double page_y) { |
| 344 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 344 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 345 if (!pPageView) | 345 if (!pPageView) |
| 346 return FALSE; | 346 return false; |
| 347 | 347 |
| 348 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); | 348 CFX_FloatPoint pt((FX_FLOAT)page_x, (FX_FLOAT)page_y); |
| 349 return pPageView->OnRButtonUp(pt, modifier); | 349 return pPageView->OnRButtonUp(pt, modifier); |
| 350 } | 350 } |
| 351 #endif // PDF_ENABLE_XFA | 351 #endif // PDF_ENABLE_XFA |
| 352 | 352 |
| 353 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle, | 353 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyDown(FPDF_FORMHANDLE hHandle, |
| 354 FPDF_PAGE page, | 354 FPDF_PAGE page, |
| 355 int nKeyCode, | 355 int nKeyCode, |
| 356 int modifier) { | 356 int modifier) { |
| 357 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 357 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 358 if (!pPageView) | 358 if (!pPageView) |
| 359 return FALSE; | 359 return false; |
| 360 | 360 |
| 361 return pPageView->OnKeyDown(nKeyCode, modifier); | 361 return pPageView->OnKeyDown(nKeyCode, modifier); |
| 362 } | 362 } |
| 363 | 363 |
| 364 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(FPDF_FORMHANDLE hHandle, | 364 DLLEXPORT FPDF_BOOL STDCALL FORM_OnKeyUp(FPDF_FORMHANDLE hHandle, |
| 365 FPDF_PAGE page, | 365 FPDF_PAGE page, |
| 366 int nKeyCode, | 366 int nKeyCode, |
| 367 int modifier) { | 367 int modifier) { |
| 368 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 368 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 369 if (!pPageView) | 369 if (!pPageView) |
| 370 return FALSE; | 370 return false; |
| 371 | 371 |
| 372 return pPageView->OnKeyUp(nKeyCode, modifier); | 372 return pPageView->OnKeyUp(nKeyCode, modifier); |
| 373 } | 373 } |
| 374 | 374 |
| 375 DLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(FPDF_FORMHANDLE hHandle, | 375 DLLEXPORT FPDF_BOOL STDCALL FORM_OnChar(FPDF_FORMHANDLE hHandle, |
| 376 FPDF_PAGE page, | 376 FPDF_PAGE page, |
| 377 int nChar, | 377 int nChar, |
| 378 int modifier) { | 378 int modifier) { |
| 379 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); | 379 CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page); |
| 380 if (!pPageView) | 380 if (!pPageView) |
| 381 return FALSE; | 381 return false; |
| 382 | 382 |
| 383 return pPageView->OnChar(nChar, modifier); | 383 return pPageView->OnChar(nChar, modifier); |
| 384 } | 384 } |
| 385 | 385 |
| 386 DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) { | 386 DLLEXPORT FPDF_BOOL STDCALL FORM_ForceToKillFocus(FPDF_FORMHANDLE hHandle) { |
| 387 CPDFSDK_FormFillEnvironment* pFormFillEnv = | 387 CPDFSDK_FormFillEnvironment* pFormFillEnv = |
| 388 HandleToCPDFSDKEnvironment(hHandle); | 388 HandleToCPDFSDKEnvironment(hHandle); |
| 389 if (!pFormFillEnv) | 389 if (!pFormFillEnv) |
| 390 return FALSE; | 390 return false; |
| 391 return pFormFillEnv->KillFocusAnnot(0); | 391 return pFormFillEnv->KillFocusAnnot(0); |
| 392 } | 392 } |
| 393 | 393 |
| 394 DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, | 394 DLLEXPORT void STDCALL FPDF_FFLDraw(FPDF_FORMHANDLE hHandle, |
| 395 FPDF_BITMAP bitmap, | 395 FPDF_BITMAP bitmap, |
| 396 FPDF_PAGE page, | 396 FPDF_PAGE page, |
| 397 int start_x, | 397 int start_x, |
| 398 int start_y, | 398 int start_y, |
| 399 int size_x, | 399 int size_x, |
| 400 int size_y, | 400 int size_y, |
| (...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 587 std::vector<CFX_ByteString>* sSuggestWords = FromFPDFStringHandle(sHandle); | 587 std::vector<CFX_ByteString>* sSuggestWords = FromFPDFStringHandle(sHandle); |
| 588 return sSuggestWords ? pdfium::CollectionSize<int>(*sSuggestWords) : -1; | 588 return sSuggestWords ? pdfium::CollectionSize<int>(*sSuggestWords) : -1; |
| 589 } | 589 } |
| 590 | 590 |
| 591 DLLEXPORT FPDF_BOOL STDCALL | 591 DLLEXPORT FPDF_BOOL STDCALL |
| 592 FPDF_StringHandleGetStringByIndex(FPDF_STRINGHANDLE sHandle, | 592 FPDF_StringHandleGetStringByIndex(FPDF_STRINGHANDLE sHandle, |
| 593 int index, | 593 int index, |
| 594 FPDF_BYTESTRING bsText, | 594 FPDF_BYTESTRING bsText, |
| 595 FPDF_DWORD* size) { | 595 FPDF_DWORD* size) { |
| 596 if (!sHandle || !size) | 596 if (!sHandle || !size) |
| 597 return FALSE; | 597 return false; |
| 598 | 598 |
| 599 int count = FPDF_StringHandleCounts(sHandle); | 599 int count = FPDF_StringHandleCounts(sHandle); |
| 600 if (index < 0 || index >= count) | 600 if (index < 0 || index >= count) |
| 601 return FALSE; | 601 return false; |
| 602 | 602 |
| 603 std::vector<CFX_ByteString>* sSuggestWords = FromFPDFStringHandle(sHandle); | 603 std::vector<CFX_ByteString>* sSuggestWords = FromFPDFStringHandle(sHandle); |
| 604 uint32_t len = (*sSuggestWords)[index].GetLength(); | 604 uint32_t len = (*sSuggestWords)[index].GetLength(); |
| 605 if (!bsText) { | 605 if (!bsText) { |
| 606 *size = len; | 606 *size = len; |
| 607 return TRUE; | 607 return true; |
| 608 } | 608 } |
| 609 | 609 |
| 610 uint32_t real_size = len < *size ? len : *size; | 610 uint32_t real_size = len < *size ? len : *size; |
| 611 if (real_size > 0) | 611 if (real_size > 0) |
| 612 FXSYS_memcpy((void*)bsText, (*sSuggestWords)[index].c_str(), real_size); | 612 FXSYS_memcpy((void*)bsText, (*sSuggestWords)[index].c_str(), real_size); |
| 613 *size = real_size; | 613 *size = real_size; |
| 614 return TRUE; | 614 return true; |
| 615 } | 615 } |
| 616 | 616 |
| 617 DLLEXPORT void STDCALL | 617 DLLEXPORT void STDCALL |
| 618 FPDF_StringHandleRelease(FPDF_STRINGHANDLE stringHandle) { | 618 FPDF_StringHandleRelease(FPDF_STRINGHANDLE stringHandle) { |
| 619 delete FromFPDFStringHandle(stringHandle); | 619 delete FromFPDFStringHandle(stringHandle); |
| 620 } | 620 } |
| 621 | 621 |
| 622 DLLEXPORT FPDF_BOOL STDCALL | 622 DLLEXPORT FPDF_BOOL STDCALL |
| 623 FPDF_StringHandleAddString(FPDF_STRINGHANDLE stringHandle, | 623 FPDF_StringHandleAddString(FPDF_STRINGHANDLE stringHandle, |
| 624 FPDF_BYTESTRING bsText, | 624 FPDF_BYTESTRING bsText, |
| 625 FPDF_DWORD size) { | 625 FPDF_DWORD size) { |
| 626 if (!stringHandle || !bsText || size == 0) | 626 if (!stringHandle || !bsText || size == 0) |
| 627 return FALSE; | 627 return false; |
| 628 | 628 |
| 629 FromFPDFStringHandle(stringHandle)->push_back(CFX_ByteString(bsText, size)); | 629 FromFPDFStringHandle(stringHandle)->push_back(CFX_ByteString(bsText, size)); |
| 630 return TRUE; | 630 return true; |
| 631 } | 631 } |
| 632 #endif // PDF_ENABLE_XFA | 632 #endif // PDF_ENABLE_XFA |
| 633 | 633 |
| 634 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle, | 634 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightColor(FPDF_FORMHANDLE hHandle, |
| 635 int fieldType, | 635 int fieldType, |
| 636 unsigned long color) { | 636 unsigned long color) { |
| 637 if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle)) | 637 if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle)) |
| 638 pInterForm->SetHighlightColor(color, fieldType); | 638 pInterForm->SetHighlightColor(color, fieldType); |
| 639 } | 639 } |
| 640 | 640 |
| 641 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightAlpha(FPDF_FORMHANDLE hHandle, | 641 DLLEXPORT void STDCALL FPDF_SetFormFieldHighlightAlpha(FPDF_FORMHANDLE hHandle, |
| 642 unsigned char alpha) { | 642 unsigned char alpha) { |
| 643 if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle)) | 643 if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle)) |
| 644 pInterForm->SetHighlightAlpha(alpha); | 644 pInterForm->SetHighlightAlpha(alpha); |
| 645 } | 645 } |
| 646 | 646 |
| 647 DLLEXPORT void STDCALL FPDF_RemoveFormFieldHighlight(FPDF_FORMHANDLE hHandle) { | 647 DLLEXPORT void STDCALL FPDF_RemoveFormFieldHighlight(FPDF_FORMHANDLE hHandle) { |
| 648 if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle)) | 648 if (CPDFSDK_InterForm* pInterForm = FormHandleToInterForm(hHandle)) |
| 649 pInterForm->RemoveAllHighLight(); | 649 pInterForm->RemoveAllHighLight(); |
| 650 } | 650 } |
| 651 | 651 |
| 652 DLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page, | 652 DLLEXPORT void STDCALL FORM_OnAfterLoadPage(FPDF_PAGE page, |
| 653 FPDF_FORMHANDLE hHandle) { | 653 FPDF_FORMHANDLE hHandle) { |
| 654 if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page)) | 654 if (CPDFSDK_PageView* pPageView = FormHandleToPageView(hHandle, page)) |
| 655 pPageView->SetValid(TRUE); | 655 pPageView->SetValid(true); |
| 656 } | 656 } |
| 657 | 657 |
| 658 DLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page, | 658 DLLEXPORT void STDCALL FORM_OnBeforeClosePage(FPDF_PAGE page, |
| 659 FPDF_FORMHANDLE hHandle) { | 659 FPDF_FORMHANDLE hHandle) { |
| 660 if (!hHandle) | 660 if (!hHandle) |
| 661 return; | 661 return; |
| 662 | 662 |
| 663 CPDFSDK_FormFillEnvironment* pFormFillEnv = | 663 CPDFSDK_FormFillEnvironment* pFormFillEnv = |
| 664 HandleToCPDFSDKEnvironment(hHandle); | 664 HandleToCPDFSDKEnvironment(hHandle); |
| 665 if (!pFormFillEnv) | 665 if (!pFormFillEnv) |
| 666 return; | 666 return; |
| 667 | 667 |
| 668 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); | 668 UnderlyingPageType* pPage = UnderlyingFromFPDFPage(page); |
| 669 if (!pPage) | 669 if (!pPage) |
| 670 return; | 670 return; |
| 671 | 671 |
| 672 CPDFSDK_PageView* pPageView = pFormFillEnv->GetPageView(pPage, false); | 672 CPDFSDK_PageView* pPageView = pFormFillEnv->GetPageView(pPage, false); |
| 673 if (pPageView) { | 673 if (pPageView) { |
| 674 pPageView->SetValid(FALSE); | 674 pPageView->SetValid(false); |
| 675 // RemovePageView() takes care of the delete for us. | 675 // RemovePageView() takes care of the delete for us. |
| 676 pFormFillEnv->RemovePageView(pPage); | 676 pFormFillEnv->RemovePageView(pPage); |
| 677 } | 677 } |
| 678 } | 678 } |
| 679 | 679 |
| 680 DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) { | 680 DLLEXPORT void STDCALL FORM_DoDocumentJSAction(FPDF_FORMHANDLE hHandle) { |
| 681 CPDFSDK_FormFillEnvironment* pFormFillEnv = | 681 CPDFSDK_FormFillEnvironment* pFormFillEnv = |
| 682 HandleToCPDFSDKEnvironment(hHandle); | 682 HandleToCPDFSDKEnvironment(hHandle); |
| 683 if (pFormFillEnv && pFormFillEnv->IsJSInitiated()) | 683 if (pFormFillEnv && pFormFillEnv->IsJSInitiated()) |
| 684 pFormFillEnv->ProcJavascriptFun(); | 684 pFormFillEnv->ProcJavascriptFun(); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 742 pFormFillEnv); | 742 pFormFillEnv); |
| 743 } | 743 } |
| 744 } else { | 744 } else { |
| 745 if (aa.ActionExist(CPDF_AAction::ClosePage)) { | 745 if (aa.ActionExist(CPDF_AAction::ClosePage)) { |
| 746 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); | 746 CPDF_Action action = aa.GetAction(CPDF_AAction::ClosePage); |
| 747 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, | 747 pActionHandler->DoAction_Page(action, CPDF_AAction::ClosePage, |
| 748 pFormFillEnv); | 748 pFormFillEnv); |
| 749 } | 749 } |
| 750 } | 750 } |
| 751 } | 751 } |
| OLD | NEW |