| 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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 CPDF_Rect CFFL_FormFiller::GetWindowRect(CPDFSDK_PageView* pPageView) { | 42 CPDF_Rect CFFL_FormFiller::GetWindowRect(CPDFSDK_PageView* pPageView) { |
| 43 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { | 43 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { |
| 44 return pWnd->GetWindowRect(); | 44 return pWnd->GetWindowRect(); |
| 45 } | 45 } |
| 46 | 46 |
| 47 return CPDF_Rect(0, 0, 0, 0); | 47 return CPDF_Rect(0, 0, 0, 0); |
| 48 } | 48 } |
| 49 | 49 |
| 50 FX_RECT CFFL_FormFiller::GetViewBBox(CPDFSDK_PageView* pPageView, | 50 FX_RECT CFFL_FormFiller::GetViewBBox(CPDFSDK_PageView* pPageView, |
| 51 CPDFSDK_Annot* pAnnot) { | 51 CPDFSDK_Annot* pAnnot) { |
| 52 ASSERT(pPageView != NULL); | 52 ASSERT(pPageView); |
| 53 ASSERT(pAnnot != NULL); | 53 ASSERT(pAnnot); |
| 54 | 54 |
| 55 CPDF_Rect rcAnnot = m_pWidget->GetRect(); | 55 CPDF_Rect rcAnnot = m_pWidget->GetRect(); |
| 56 | 56 |
| 57 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { | 57 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { |
| 58 CPDF_Rect rcWindow = pWnd->GetWindowRect(); | 58 CPDF_Rect rcWindow = pWnd->GetWindowRect(); |
| 59 rcAnnot = PWLtoFFL(rcWindow); | 59 rcAnnot = PWLtoFFL(rcWindow); |
| 60 } | 60 } |
| 61 | 61 |
| 62 CPDF_Rect rcWin = rcAnnot; | 62 CPDF_Rect rcWin = rcAnnot; |
| 63 | 63 |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 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) {} |
| 105 | 105 |
| 106 void CFFL_FormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, | 106 void CFFL_FormFiller::OnMouseEnter(CPDFSDK_PageView* pPageView, |
| 107 CPDFSDK_Annot* pAnnot) {} | 107 CPDFSDK_Annot* pAnnot) {} |
| 108 | 108 |
| 109 void CFFL_FormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, | 109 void CFFL_FormFiller::OnMouseExit(CPDFSDK_PageView* pPageView, |
| 110 CPDFSDK_Annot* pAnnot) { | 110 CPDFSDK_Annot* pAnnot) { |
| 111 EndTimer(); | 111 EndTimer(); |
| 112 ASSERT(m_pWidget != NULL); | 112 ASSERT(m_pWidget); |
| 113 } | 113 } |
| 114 | 114 |
| 115 FX_BOOL CFFL_FormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, | 115 FX_BOOL CFFL_FormFiller::OnLButtonDown(CPDFSDK_PageView* pPageView, |
| 116 CPDFSDK_Annot* pAnnot, | 116 CPDFSDK_Annot* pAnnot, |
| 117 FX_UINT nFlags, | 117 FX_UINT nFlags, |
| 118 const CPDF_Point& point) { | 118 const CPDF_Point& point) { |
| 119 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) { | 119 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, TRUE)) { |
| 120 m_bValid = TRUE; | 120 m_bValid = TRUE; |
| 121 FX_RECT rect = GetViewBBox(pPageView, pAnnot); | 121 FX_RECT rect = GetViewBBox(pPageView, pAnnot); |
| 122 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); | 122 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); |
| (...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 209 } | 209 } |
| 210 | 210 |
| 211 return FALSE; | 211 return FALSE; |
| 212 } | 212 } |
| 213 | 213 |
| 214 FX_BOOL CFFL_FormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, | 214 FX_BOOL CFFL_FormFiller::OnKeyDown(CPDFSDK_Annot* pAnnot, |
| 215 FX_UINT nKeyCode, | 215 FX_UINT nKeyCode, |
| 216 FX_UINT nFlags) { | 216 FX_UINT nFlags) { |
| 217 if (IsValid()) { | 217 if (IsValid()) { |
| 218 CPDFSDK_PageView* pPageView = GetCurPageView(); | 218 CPDFSDK_PageView* pPageView = GetCurPageView(); |
| 219 ASSERT(pPageView != NULL); | 219 ASSERT(pPageView); |
| 220 | 220 |
| 221 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { | 221 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { |
| 222 return pWnd->OnKeyDown(nKeyCode, nFlags); | 222 return pWnd->OnKeyDown(nKeyCode, nFlags); |
| 223 } | 223 } |
| 224 } | 224 } |
| 225 | 225 |
| 226 return FALSE; | 226 return FALSE; |
| 227 } | 227 } |
| 228 | 228 |
| 229 FX_BOOL CFFL_FormFiller::OnChar(CPDFSDK_Annot* pAnnot, | 229 FX_BOOL CFFL_FormFiller::OnChar(CPDFSDK_Annot* pAnnot, |
| 230 FX_UINT nChar, | 230 FX_UINT nChar, |
| 231 FX_UINT nFlags) { | 231 FX_UINT nFlags) { |
| 232 if (IsValid()) { | 232 if (IsValid()) { |
| 233 CPDFSDK_PageView* pPageView = GetCurPageView(); | 233 CPDFSDK_PageView* pPageView = GetCurPageView(); |
| 234 ASSERT(pPageView != NULL); | 234 ASSERT(pPageView); |
| 235 | 235 |
| 236 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { | 236 if (CPWL_Wnd* pWnd = GetPDFWindow(pPageView, FALSE)) { |
| 237 return pWnd->OnChar(nChar, nFlags); | 237 return pWnd->OnChar(nChar, nFlags); |
| 238 } | 238 } |
| 239 } | 239 } |
| 240 | 240 |
| 241 return FALSE; | 241 return FALSE; |
| 242 } | 242 } |
| 243 | 243 |
| 244 void CFFL_FormFiller::SetFocusForAnnot(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) { | 244 void CFFL_FormFiller::SetFocusForAnnot(CPDFSDK_Annot* pAnnot, FX_UINT nFlag) { |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 277 bDestroyPDFWindow = FALSE; | 277 bDestroyPDFWindow = FALSE; |
| 278 } | 278 } |
| 279 EscapeFiller(pPageView, bDestroyPDFWindow); | 279 EscapeFiller(pPageView, bDestroyPDFWindow); |
| 280 } | 280 } |
| 281 | 281 |
| 282 FX_BOOL CFFL_FormFiller::IsValid() const { | 282 FX_BOOL CFFL_FormFiller::IsValid() const { |
| 283 return m_bValid; | 283 return m_bValid; |
| 284 } | 284 } |
| 285 | 285 |
| 286 PWL_CREATEPARAM CFFL_FormFiller::GetCreateParam() { | 286 PWL_CREATEPARAM CFFL_FormFiller::GetCreateParam() { |
| 287 ASSERT(m_pApp != NULL); | 287 ASSERT(m_pApp); |
| 288 | 288 |
| 289 PWL_CREATEPARAM cp; | 289 PWL_CREATEPARAM cp; |
| 290 cp.pParentWnd = NULL; | 290 cp.pParentWnd = NULL; |
| 291 cp.pProvider = this; | 291 cp.pProvider = this; |
| 292 cp.rcRectWnd = GetPDFWindowRect(); | 292 cp.rcRectWnd = GetPDFWindowRect(); |
| 293 | 293 |
| 294 FX_DWORD dwCreateFlags = PWS_BORDER | PWS_BACKGROUND | PWS_VISIBLE; | 294 FX_DWORD dwCreateFlags = PWS_BORDER | PWS_BACKGROUND | PWS_VISIBLE; |
| 295 FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags(); | 295 FX_DWORD dwFieldFlag = m_pWidget->GetFieldFlags(); |
| 296 if (dwFieldFlag & FIELDFLAG_READONLY) { | 296 if (dwFieldFlag & FIELDFLAG_READONLY) { |
| 297 dwCreateFlags |= PWS_READONLY; | 297 dwCreateFlags |= PWS_READONLY; |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 | 408 |
| 409 return mt; | 409 return mt; |
| 410 } | 410 } |
| 411 } | 411 } |
| 412 return CFX_Matrix(1, 0, 0, 1, 0, 0); | 412 return CFX_Matrix(1, 0, 0, 1, 0, 0); |
| 413 } | 413 } |
| 414 | 414 |
| 415 CFX_Matrix CFFL_FormFiller::GetCurMatrix() { | 415 CFX_Matrix CFFL_FormFiller::GetCurMatrix() { |
| 416 CFX_Matrix mt; | 416 CFX_Matrix mt; |
| 417 | 417 |
| 418 ASSERT(m_pWidget != NULL); | |
| 419 | |
| 420 CPDF_Rect rcDA; | 418 CPDF_Rect rcDA; |
| 421 m_pWidget->GetPDFAnnot()->GetRect(rcDA); | 419 m_pWidget->GetPDFAnnot()->GetRect(rcDA); |
| 422 | 420 |
| 423 switch (m_pWidget->GetRotate()) { | 421 switch (m_pWidget->GetRotate()) { |
| 424 default: | 422 default: |
| 425 case 0: | 423 case 0: |
| 426 mt = CFX_Matrix(1, 0, 0, 1, 0, 0); | 424 mt = CFX_Matrix(1, 0, 0, 1, 0, 0); |
| 427 break; | 425 break; |
| 428 case 90: | 426 case 90: |
| 429 mt = CFX_Matrix(0, 1, -1, 0, rcDA.right - rcDA.left, 0); | 427 mt = CFX_Matrix(0, 1, -1, 0, rcDA.right - rcDA.left, 0); |
| 430 break; | 428 break; |
| 431 case 180: | 429 case 180: |
| 432 mt = CFX_Matrix(-1, 0, 0, -1, rcDA.right - rcDA.left, | 430 mt = CFX_Matrix(-1, 0, 0, -1, rcDA.right - rcDA.left, |
| 433 rcDA.top - rcDA.bottom); | 431 rcDA.top - rcDA.bottom); |
| 434 break; | 432 break; |
| 435 case 270: | 433 case 270: |
| 436 mt = CFX_Matrix(0, -1, 1, 0, 0, rcDA.top - rcDA.bottom); | 434 mt = CFX_Matrix(0, -1, 1, 0, 0, rcDA.top - rcDA.bottom); |
| 437 break; | 435 break; |
| 438 } | 436 } |
| 439 mt.e += rcDA.left; | 437 mt.e += rcDA.left; |
| 440 mt.f += rcDA.bottom; | 438 mt.f += rcDA.bottom; |
| 441 | 439 |
| 442 return mt; | 440 return mt; |
| 443 } | 441 } |
| 444 | 442 |
| 445 CFX_WideString CFFL_FormFiller::LoadPopupMenuString(int nIndex) { | 443 CFX_WideString CFFL_FormFiller::LoadPopupMenuString(int nIndex) { |
| 446 ASSERT(m_pApp != NULL); | 444 ASSERT(m_pApp); |
| 447 | 445 |
| 448 return L""; | 446 return L""; |
| 449 } | 447 } |
| 450 | 448 |
| 451 CPDF_Rect CFFL_FormFiller::GetPDFWindowRect() const { | 449 CPDF_Rect CFFL_FormFiller::GetPDFWindowRect() const { |
| 452 CPDF_Rect rectAnnot; | 450 CPDF_Rect rectAnnot; |
| 453 m_pWidget->GetPDFAnnot()->GetRect(rectAnnot); | 451 m_pWidget->GetPDFAnnot()->GetRect(rectAnnot); |
| 454 | 452 |
| 455 FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left; | 453 FX_FLOAT fWidth = rectAnnot.right - rectAnnot.left; |
| 456 FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom; | 454 FX_FLOAT fHeight = rectAnnot.top - rectAnnot.bottom; |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 630 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); | 628 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); |
| 631 } | 629 } |
| 632 | 630 |
| 633 void CFFL_Button::OnMouseExit(CPDFSDK_PageView* pPageView, | 631 void CFFL_Button::OnMouseExit(CPDFSDK_PageView* pPageView, |
| 634 CPDFSDK_Annot* pAnnot) { | 632 CPDFSDK_Annot* pAnnot) { |
| 635 m_bMouseIn = FALSE; | 633 m_bMouseIn = FALSE; |
| 636 | 634 |
| 637 FX_RECT rect = GetViewBBox(pPageView, pAnnot); | 635 FX_RECT rect = GetViewBBox(pPageView, pAnnot); |
| 638 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); | 636 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); |
| 639 EndTimer(); | 637 EndTimer(); |
| 640 ASSERT(m_pWidget != NULL); | 638 ASSERT(m_pWidget); |
| 641 } | 639 } |
| 642 | 640 |
| 643 FX_BOOL CFFL_Button::OnLButtonDown(CPDFSDK_PageView* pPageView, | 641 FX_BOOL CFFL_Button::OnLButtonDown(CPDFSDK_PageView* pPageView, |
| 644 CPDFSDK_Annot* pAnnot, | 642 CPDFSDK_Annot* pAnnot, |
| 645 FX_UINT nFlags, | 643 FX_UINT nFlags, |
| 646 const CPDF_Point& point) { | 644 const CPDF_Point& point) { |
| 647 CPDF_Rect rcAnnot = pAnnot->GetRect(); | 645 CPDF_Rect rcAnnot = pAnnot->GetRect(); |
| 648 if (!rcAnnot.Contains(point.x, point.y)) | 646 if (!rcAnnot.Contains(point.x, point.y)) |
| 649 return FALSE; | 647 return FALSE; |
| 650 | 648 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 668 | 666 |
| 669 FX_RECT rect = GetViewBBox(pPageView, pAnnot); | 667 FX_RECT rect = GetViewBBox(pPageView, pAnnot); |
| 670 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); | 668 InvalidateRect(rect.left, rect.top, rect.right, rect.bottom); |
| 671 return TRUE; | 669 return TRUE; |
| 672 } | 670 } |
| 673 | 671 |
| 674 FX_BOOL CFFL_Button::OnMouseMove(CPDFSDK_PageView* pPageView, | 672 FX_BOOL CFFL_Button::OnMouseMove(CPDFSDK_PageView* pPageView, |
| 675 CPDFSDK_Annot* pAnnot, | 673 CPDFSDK_Annot* pAnnot, |
| 676 FX_UINT nFlags, | 674 FX_UINT nFlags, |
| 677 const CPDF_Point& point) { | 675 const CPDF_Point& point) { |
| 678 ASSERT(m_pApp != NULL); | 676 ASSERT(m_pApp); |
| 679 | 677 |
| 680 return TRUE; | 678 return TRUE; |
| 681 } | 679 } |
| 682 | 680 |
| 683 void CFFL_Button::OnDraw(CPDFSDK_PageView* pPageView, | 681 void CFFL_Button::OnDraw(CPDFSDK_PageView* pPageView, |
| 684 CPDFSDK_Annot* pAnnot, | 682 CPDFSDK_Annot* pAnnot, |
| 685 CFX_RenderDevice* pDevice, | 683 CFX_RenderDevice* pDevice, |
| 686 CFX_Matrix* pUser2Device, | 684 CFX_Matrix* pUser2Device, |
| 687 FX_DWORD dwFlags) { | 685 FX_DWORD dwFlags) { |
| 688 ASSERT(pPageView != NULL); | 686 ASSERT(pPageView); |
| 689 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; | 687 CPDFSDK_Widget* pWidget = (CPDFSDK_Widget*)pAnnot; |
| 690 CPDF_FormControl* pCtrl = pWidget->GetFormControl(); | 688 CPDF_FormControl* pCtrl = pWidget->GetFormControl(); |
| 691 CPDF_FormControl::HighlightingMode eHM = pCtrl->GetHighlightingMode(); | 689 CPDF_FormControl::HighlightingMode eHM = pCtrl->GetHighlightingMode(); |
| 692 | 690 |
| 693 if (eHM == CPDF_FormControl::Push) { | 691 if (eHM == CPDF_FormControl::Push) { |
| 694 if (m_bMouseDown) { | 692 if (m_bMouseDown) { |
| 695 if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Down)) | 693 if (pWidget->IsWidgetAppearanceValid(CPDF_Annot::Down)) |
| 696 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Down, NULL); | 694 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Down, NULL); |
| 697 else | 695 else |
| 698 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, | 696 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, |
| (...skipping 12 matching lines...) Expand all Loading... |
| 711 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); | 709 pWidget->DrawAppearance(pDevice, pUser2Device, CPDF_Annot::Normal, NULL); |
| 712 } | 710 } |
| 713 | 711 |
| 714 void CFFL_Button::OnDrawDeactive(CPDFSDK_PageView* pPageView, | 712 void CFFL_Button::OnDrawDeactive(CPDFSDK_PageView* pPageView, |
| 715 CPDFSDK_Annot* pAnnot, | 713 CPDFSDK_Annot* pAnnot, |
| 716 CFX_RenderDevice* pDevice, | 714 CFX_RenderDevice* pDevice, |
| 717 CFX_Matrix* pUser2Device, | 715 CFX_Matrix* pUser2Device, |
| 718 FX_DWORD dwFlags) { | 716 FX_DWORD dwFlags) { |
| 719 OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags); | 717 OnDraw(pPageView, pAnnot, pDevice, pUser2Device, dwFlags); |
| 720 } | 718 } |
| OLD | NEW |