| 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 "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" | 7 #include "fpdfsdk/include/formfiller/FFL_CBA_Fontmap.h" |
| 8 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" | 8 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" |
| 9 | 9 |
| 10 #define GetRed(rgb) ((uint8_t)(rgb)) | 10 #define GetRed(rgb) ((uint8_t)(rgb)) |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 66 rcWin.Union(rcFocus); | 66 rcWin.Union(rcFocus); |
| 67 | 67 |
| 68 CPDF_Rect rect = CPWL_Utils::InflateRect(rcWin, 1); | 68 CPDF_Rect rect = CPWL_Utils::InflateRect(rcWin, 1); |
| 69 | 69 |
| 70 return rect.GetOutterRect(); | 70 return rect.GetOutterRect(); |
| 71 } | 71 } |
| 72 | 72 |
| 73 void CFFL_FormFiller::OnDraw(CPDFSDK_PageView* pPageView, | 73 void CFFL_FormFiller::OnDraw(CPDFSDK_PageView* pPageView, |
| 74 CPDFSDK_Annot* pAnnot, | 74 CPDFSDK_Annot* pAnnot, |
| 75 CFX_RenderDevice* pDevice, | 75 CFX_RenderDevice* pDevice, |
| 76 CPDF_Matrix* pUser2Device, | 76 CFX_Matrix* pUser2Device, |
| 77 FX_DWORD dwFlags) { | 77 FX_DWORD dwFlags) { |
| 78 ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget"); | 78 ASSERT(pAnnot->GetPDFAnnot()->GetSubType() == "Widget"); |
| 79 | 79 |
| 80 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { | 80 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { |
| 81 CPDF_Matrix mt = GetCurMatrix(); | 81 CFX_Matrix mt = GetCurMatrix(); |
| 82 mt.Concat(*pUser2Device); | 82 mt.Concat(*pUser2Device); |
| 83 pWnd->DrawAppearance(pDevice, &mt); | 83 pWnd->DrawAppearance(pDevice, &mt); |
| 84 } else { | 84 } else { |
| 85 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 85 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 86 if (CFFL_IFormFiller::IsVisible(pWidget)) | 86 if (CFFL_IFormFiller::IsVisible(pWidget)) |
| 87 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); | 87 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); |
| 88 } | 88 } |
| 89 } | 89 } |
| 90 | 90 |
| 91 void CFFL_FormFiller::OnDrawDeactive(CPDFSDK_PageView* pPageView, | 91 void CFFL_FormFiller::OnDrawDeactive(CPDFSDK_PageView* pPageView, |
| 92 CPDFSDK_Annot* pAnnot, | 92 CPDFSDK_Annot* pAnnot, |
| 93 CFX_RenderDevice* pDevice, | 93 CFX_RenderDevice* pDevice, |
| 94 CPDF_Matrix* pUser2Device, | 94 CFX_Matrix* pUser2Device, |
| 95 FX_DWORD dwFlags) { | 95 FX_DWORD dwFlags) { |
| 96 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 96 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 97 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); | 97 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); |
| 98 } | 98 } |
| 99 | 99 |
| 100 void CFFL_FormFiller::OnCreate(CPDFSDK_Annot* pAnnot) {} | 100 void CFFL_FormFiller::OnCreate(CPDFSDK_Annot* pAnnot) {} |
| 101 | 101 |
| 102 void CFFL_FormFiller::OnLoad(CPDFSDK_Annot* pAnnot) {} | 102 void CFFL_FormFiller::OnLoad(CPDFSDK_Annot* pAnnot) {} |
| 103 | 103 |
| 104 void CFFL_FormFiller::OnDelete(CPDFSDK_Annot* pAnnot) {} | 104 void CFFL_FormFiller::OnDelete(CPDFSDK_Annot* pAnnot) {} |
| (...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 391 | 391 |
| 392 CPWL_Wnd* pWnd = it->second; | 392 CPWL_Wnd* pWnd = it->second; |
| 393 CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); | 393 CFFL_PrivateData* pData = (CFFL_PrivateData*)pWnd->GetAttachedData(); |
| 394 pWnd->Destroy(); | 394 pWnd->Destroy(); |
| 395 delete pWnd; | 395 delete pWnd; |
| 396 delete pData; | 396 delete pData; |
| 397 | 397 |
| 398 m_Maps.erase(it); | 398 m_Maps.erase(it); |
| 399 } | 399 } |
| 400 | 400 |
| 401 CPDF_Matrix CFFL_FormFiller::GetWindowMatrix(void* pAttachedData) { | 401 CFX_Matrix CFFL_FormFiller::GetWindowMatrix(void* pAttachedData) { |
| 402 if (CFFL_PrivateData* pPrivateData = (CFFL_PrivateData*)pAttachedData) { | 402 if (CFFL_PrivateData* pPrivateData = (CFFL_PrivateData*)pAttachedData) { |
| 403 if (pPrivateData->pPageView) { | 403 if (pPrivateData->pPageView) { |
| 404 CPDF_Matrix mtPageView; | 404 CFX_Matrix mtPageView; |
| 405 pPrivateData->pPageView->GetCurrentMatrix(mtPageView); | 405 pPrivateData->pPageView->GetCurrentMatrix(mtPageView); |
| 406 CPDF_Matrix mt = GetCurMatrix(); | 406 CFX_Matrix mt = GetCurMatrix(); |
| 407 mt.Concat(mtPageView); | 407 mt.Concat(mtPageView); |
| 408 | 408 |
| 409 return mt; | 409 return mt; |
| 410 } | 410 } |
| 411 } | 411 } |
| 412 return CPDF_Matrix(1, 0, 0, 1, 0, 0); | 412 return CFX_Matrix(1, 0, 0, 1, 0, 0); |
| 413 } | 413 } |
| 414 | 414 |
| 415 CPDF_Matrix CFFL_FormFiller::GetCurMatrix() { | 415 CFX_Matrix CFFL_FormFiller::GetCurMatrix() { |
| 416 CPDF_Matrix mt; | 416 CFX_Matrix mt; |
| 417 | 417 |
| 418 ASSERT(m_pWidget != NULL); | 418 ASSERT(m_pWidget != NULL); |
| 419 | 419 |
| 420 CPDF_Rect rcDA; | 420 CPDF_Rect rcDA; |
| 421 m_pWidget->GetPDFAnnot()->GetRect(rcDA); | 421 m_pWidget->GetPDFAnnot()->GetRect(rcDA); |
| 422 | 422 |
| 423 switch (m_pWidget->GetRotate()) { | 423 switch (m_pWidget->GetRotate()) { |
| 424 default: | 424 default: |
| 425 case 0: | 425 case 0: |
| 426 mt = CPDF_Matrix(1, 0, 0, 1, 0, 0); | 426 mt = CFX_Matrix(1, 0, 0, 1, 0, 0); |
| 427 break; | 427 break; |
| 428 case 90: | 428 case 90: |
| 429 mt = CPDF_Matrix(0, 1, -1, 0, rcDA.right - rcDA.left, 0); | 429 mt = CFX_Matrix(0, 1, -1, 0, rcDA.right - rcDA.left, 0); |
| 430 break; | 430 break; |
| 431 case 180: | 431 case 180: |
| 432 mt = CPDF_Matrix(-1, 0, 0, -1, rcDA.right - rcDA.left, | 432 mt = CFX_Matrix(-1, 0, 0, -1, rcDA.right - rcDA.left, |
| 433 rcDA.top - rcDA.bottom); | 433 rcDA.top - rcDA.bottom); |
| 434 break; | 434 break; |
| 435 case 270: | 435 case 270: |
| 436 mt = CPDF_Matrix(0, -1, 1, 0, 0, rcDA.top - rcDA.bottom); | 436 mt = CFX_Matrix(0, -1, 1, 0, 0, rcDA.top - rcDA.bottom); |
| 437 break; | 437 break; |
| 438 } | 438 } |
| 439 mt.e += rcDA.left; | 439 mt.e += rcDA.left; |
| 440 mt.f += rcDA.bottom; | 440 mt.f += rcDA.bottom; |
| 441 | 441 |
| 442 return mt; | 442 return mt; |
| 443 } | 443 } |
| 444 | 444 |
| 445 CFX_WideString CFFL_FormFiller::LoadPopupMenuString(int nIndex) { | 445 CFX_WideString CFFL_FormFiller::LoadPopupMenuString(int nIndex) { |
| 446 ASSERT(m_pApp != NULL); | 446 ASSERT(m_pApp != NULL); |
| (...skipping 23 matching lines...) Expand all Loading... |
| 470 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { | 470 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { |
| 471 CPDF_Rect rcFocus = FFLtoWnd(pPageView, PWLtoFFL(pWnd->GetFocusRect())); | 471 CPDF_Rect rcFocus = FFLtoWnd(pPageView, PWLtoFFL(pWnd->GetFocusRect())); |
| 472 CPDF_Rect rcPage = pPageView->GetPDFPage()->GetPageBBox(); | 472 CPDF_Rect rcPage = pPageView->GetPDFPage()->GetPageBBox(); |
| 473 if (rcPage.Contains(rcFocus)) | 473 if (rcPage.Contains(rcFocus)) |
| 474 return rcFocus; | 474 return rcFocus; |
| 475 } | 475 } |
| 476 return CPDF_Rect(0, 0, 0, 0); | 476 return CPDF_Rect(0, 0, 0, 0); |
| 477 } | 477 } |
| 478 | 478 |
| 479 CPDF_Rect CFFL_FormFiller::FFLtoPWL(const CPDF_Rect& rect) { | 479 CPDF_Rect CFFL_FormFiller::FFLtoPWL(const CPDF_Rect& rect) { |
| 480 CPDF_Matrix mt; | 480 CFX_Matrix mt; |
| 481 mt.SetReverse(GetCurMatrix()); | 481 mt.SetReverse(GetCurMatrix()); |
| 482 | 482 |
| 483 CPDF_Rect temp = rect; | 483 CPDF_Rect temp = rect; |
| 484 mt.TransformRect(temp); | 484 mt.TransformRect(temp); |
| 485 | 485 |
| 486 return temp; | 486 return temp; |
| 487 } | 487 } |
| 488 | 488 |
| 489 CPDF_Rect CFFL_FormFiller::PWLtoFFL(const CPDF_Rect& rect) { | 489 CPDF_Rect CFFL_FormFiller::PWLtoFFL(const CPDF_Rect& rect) { |
| 490 CPDF_Matrix mt = GetCurMatrix(); | 490 CFX_Matrix mt = GetCurMatrix(); |
| 491 | 491 |
| 492 CPDF_Rect temp = rect; | 492 CPDF_Rect temp = rect; |
| 493 mt.TransformRect(temp); | 493 mt.TransformRect(temp); |
| 494 | 494 |
| 495 return temp; | 495 return temp; |
| 496 } | 496 } |
| 497 | 497 |
| 498 CPDF_Point CFFL_FormFiller::FFLtoPWL(const CPDF_Point& point) { | 498 CPDF_Point CFFL_FormFiller::FFLtoPWL(const CPDF_Point& point) { |
| 499 CPDF_Matrix mt; | 499 CFX_Matrix mt; |
| 500 mt.SetReverse(GetCurMatrix()); | 500 mt.SetReverse(GetCurMatrix()); |
| 501 | 501 |
| 502 CPDF_Point pt = point; | 502 CPDF_Point pt = point; |
| 503 mt.Transform(pt.x, pt.y); | 503 mt.Transform(pt.x, pt.y); |
| 504 | 504 |
| 505 return pt; | 505 return pt; |
| 506 } | 506 } |
| 507 | 507 |
| 508 CPDF_Point CFFL_FormFiller::PWLtoFFL(const CPDF_Point& point) { | 508 CPDF_Point CFFL_FormFiller::PWLtoFFL(const CPDF_Point& point) { |
| 509 CPDF_Matrix mt = GetCurMatrix(); | 509 CFX_Matrix mt = GetCurMatrix(); |
| 510 | 510 |
| 511 CPDF_Point pt = point; | 511 CPDF_Point pt = point; |
| 512 mt.Transform(pt.x, pt.y); | 512 mt.Transform(pt.x, pt.y); |
| 513 | 513 |
| 514 return pt; | 514 return pt; |
| 515 } | 515 } |
| 516 | 516 |
| 517 CPDF_Point CFFL_FormFiller::WndtoPWL(CPDFSDK_PageView* pPageView, | 517 CPDF_Point CFFL_FormFiller::WndtoPWL(CPDFSDK_PageView* pPageView, |
| 518 const CPDF_Point& pt) { | 518 const CPDF_Point& pt) { |
| 519 return FFLtoPWL(pt); | 519 return FFLtoPWL(pt); |
| (...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 682 FX_UINT nFlags, | 682 FX_UINT nFlags, |
| 683 const CPDF_Point& point) { | 683 const CPDF_Point& point) { |
| 684 ASSERT(m_pApp != NULL); | 684 ASSERT(m_pApp != NULL); |
| 685 | 685 |
| 686 return TRUE; | 686 return TRUE; |
| 687 } | 687 } |
| 688 | 688 |
| 689 void CFFL_Button::OnDraw(CPDFSDK_PageView* pPageView, | 689 void CFFL_Button::OnDraw(CPDFSDK_PageView* pPageView, |
| 690 CPDFSDK_Annot* pAnnot, | 690 CPDFSDK_Annot* pAnnot, |
| 691 CFX_RenderDevice* pDevice, | 691 CFX_RenderDevice* pDevice, |
| 692 CPDF_Matrix* pUser2Device, | 692 CFX_Matrix* pUser2Device, |
| 693 FX_DWORD dwFlags) { | 693 FX_DWORD dwFlags) { |
| 694 ASSERT(pPageView != NULL); | 694 ASSERT(pPageView != NULL); |
| 695 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 695 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 696 CPDF_FormControl* pCtrl = pWidget->GetFormControl(); | 696 CPDF_FormControl* pCtrl = pWidget->GetFormControl(); |
| 697 CPDF_FormControl::HighlightingMode eHM = pCtrl->GetHighlightingMode(); | 697 CPDF_FormControl::HighlightingMode eHM = pCtrl->GetHighlightingMode(); |
| 698 | 698 |
| 699 if (eHM == CPDF_FormControl::Push) { | 699 if (eHM == CPDF_FormControl::Push) { |
| 700 if (m_bMouseDown) { | 700 if (m_bMouseDown) { |
| 701 if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Down)) | 701 if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Down)) |
| 702 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Down, NULL); | 702 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Down, NULL); |
| (...skipping 10 matching lines...) Expand all Loading... |
| 713 } else { | 713 } else { |
| 714 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); | 714 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); |
| 715 } | 715 } |
| 716 } else | 716 } else |
| 717 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); | 717 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); |
| 718 } | 718 } |
| 719 | 719 |
| 720 void CFFL_Button::OnDrawDeactive(CPDFSDK_PageView* pPageView, | 720 void CFFL_Button::OnDrawDeactive(CPDFSDK_PageView* pPageView, |
| 721 CPDFSDK_Annot* pAnnot, | 721 CPDFSDK_Annot* pAnnot, |
| 722 CFX_RenderDevice* pDevice, | 722 CFX_RenderDevice* pDevice, |
| 723 CPDF_Matrix* pUser2Device, | 723 CFX_Matrix* pUser2Device, |
| 724 FX_DWORD dwFlags) { | 724 FX_DWORD dwFlags) { |
| 725 OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags); | 725 OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags); |
| 726 } | 726 } |
| OLD | NEW |