| OLD | NEW |
| 1 // Copyright 2016 PDFium Authors. All rights reserved. | 1 // Copyright 2016 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/cpdfsdk_widgethandler.h" | 7 #include "fpdfsdk/include/cpdfsdk_widgethandler.h" |
| 8 | 8 |
| 9 #include <memory> | 9 #include <memory> |
| 10 #include <vector> | 10 #include <vector> |
| 11 | 11 |
| 12 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h" | 12 #include "core/fpdfapi/fpdf_page/include/cpdf_page.h" |
| 13 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" | 13 #include "core/fpdfapi/fpdf_parser/include/cpdf_document.h" |
| 14 #include "core/fpdfdoc/include/cpdf_interform.h" | 14 #include "core/fpdfdoc/include/cpdf_interform.h" |
| 15 #include "fpdfsdk/formfiller/cffl_formfiller.h" | 15 #include "fpdfsdk/formfiller/cffl_formfiller.h" |
| 16 #include "fpdfsdk/include/cpdfsdk_annot.h" | 16 #include "fpdfsdk/include/cpdfsdk_annot.h" |
| 17 #include "fpdfsdk/include/cpdfsdk_document.h" | 17 #include "fpdfsdk/include/cpdfsdk_document.h" |
| 18 #include "fpdfsdk/include/cpdfsdk_environment.h" | 18 #include "fpdfsdk/include/cpdfsdk_environment.h" |
| 19 #include "fpdfsdk/include/cpdfsdk_interform.h" | 19 #include "fpdfsdk/include/cpdfsdk_interform.h" |
| 20 #include "fpdfsdk/include/cpdfsdk_pageview.h" | 20 #include "fpdfsdk/include/cpdfsdk_pageview.h" |
| 21 #include "fpdfsdk/include/cpdfsdk_widget.h" | 21 #include "fpdfsdk/include/cpdfsdk_widget.h" |
| 22 | 22 |
| 23 #ifdef PDF_ENABLE_XFA | 23 #ifdef PDF_ENABLE_XFA |
| 24 #include "fpdfsdk/fpdfxfa/include/fpdfxfa_doc.h" | 24 #include "fpdfsdk/fpdfxfa/include/fpdfxfa_doc.h" |
| 25 #endif // PDF_ENABLE_XFA | 25 #endif // PDF_ENABLE_XFA |
| 26 | 26 |
| 27 CPDFSDK_WidgetHandler::CPDFSDK_WidgetHandler(CPDFSDK_Environment* pApp) | 27 CPDFSDK_WidgetHandler::CPDFSDK_WidgetHandler(CPDFSDK_Environment* pEnv) |
| 28 : m_pApp(pApp), m_pFormFiller(nullptr) {} | 28 : m_pEnv(pEnv), m_pFormFiller(nullptr) {} |
| 29 | 29 |
| 30 CPDFSDK_WidgetHandler::~CPDFSDK_WidgetHandler() {} | 30 CPDFSDK_WidgetHandler::~CPDFSDK_WidgetHandler() {} |
| 31 | 31 |
| 32 FX_BOOL CPDFSDK_WidgetHandler::CanAnswer(CPDFSDK_Annot* pAnnot) { | 32 FX_BOOL CPDFSDK_WidgetHandler::CanAnswer(CPDFSDK_Annot* pAnnot) { |
| 33 ASSERT(pAnnot->GetAnnotSubtype() == CPDF_Annot::Subtype::WIDGET); | 33 ASSERT(pAnnot->GetAnnotSubtype() == CPDF_Annot::Subtype::WIDGET); |
| 34 if (pAnnot->IsSignatureWidget()) | 34 if (pAnnot->IsSignatureWidget()) |
| 35 return FALSE; | 35 return FALSE; |
| 36 | 36 |
| 37 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot); | 37 CPDFSDK_Widget* pWidget = static_cast<CPDFSDK_Widget*>(pAnnot); |
| 38 if (!pWidget->IsVisible()) | 38 if (!pWidget->IsVisible()) |
| 39 return FALSE; | 39 return FALSE; |
| 40 | 40 |
| 41 int nFieldFlags = pWidget->GetFieldFlags(); | 41 int nFieldFlags = pWidget->GetFieldFlags(); |
| 42 if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) | 42 if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) |
| 43 return FALSE; | 43 return FALSE; |
| 44 | 44 |
| 45 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) | 45 if (pWidget->GetFieldType() == FIELDTYPE_PUSHBUTTON) |
| 46 return TRUE; | 46 return TRUE; |
| 47 | 47 |
| 48 CPDF_Page* pPage = pWidget->GetPDFPage(); | 48 CPDF_Page* pPage = pWidget->GetPDFPage(); |
| 49 CPDF_Document* pDocument = pPage->m_pDocument; | 49 CPDF_Document* pDocument = pPage->m_pDocument; |
| 50 uint32_t dwPermissions = pDocument->GetUserPermissions(); | 50 uint32_t dwPermissions = pDocument->GetUserPermissions(); |
| 51 return (dwPermissions & FPDFPERM_FILL_FORM) || | 51 return (dwPermissions & FPDFPERM_FILL_FORM) || |
| 52 (dwPermissions & FPDFPERM_ANNOT_FORM); | 52 (dwPermissions & FPDFPERM_ANNOT_FORM); |
| 53 } | 53 } |
| 54 | 54 |
| 55 CPDFSDK_Annot* CPDFSDK_WidgetHandler::NewAnnot(CPDF_Annot* pAnnot, | 55 CPDFSDK_Annot* CPDFSDK_WidgetHandler::NewAnnot(CPDF_Annot* pAnnot, |
| 56 CPDFSDK_PageView* pPage) { | 56 CPDFSDK_PageView* pPage) { |
| 57 CPDFSDK_Document* pSDKDoc = m_pApp->GetSDKDocument(); | 57 CPDFSDK_Document* pSDKDoc = m_pEnv->GetSDKDocument(); |
| 58 CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm(); | 58 CPDFSDK_InterForm* pInterForm = pSDKDoc->GetInterForm(); |
| 59 CPDF_FormControl* pCtrl = CPDFSDK_Widget::GetFormControl( | 59 CPDF_FormControl* pCtrl = CPDFSDK_Widget::GetFormControl( |
| 60 pInterForm->GetInterForm(), pAnnot->GetAnnotDict()); | 60 pInterForm->GetInterForm(), pAnnot->GetAnnotDict()); |
| 61 if (!pCtrl) | 61 if (!pCtrl) |
| 62 return nullptr; | 62 return nullptr; |
| 63 | 63 |
| 64 CPDFSDK_Widget* pWidget = new CPDFSDK_Widget(pAnnot, pPage, pInterForm); | 64 CPDFSDK_Widget* pWidget = new CPDFSDK_Widget(pAnnot, pPage, pInterForm); |
| 65 pInterForm->AddMap(pCtrl, pWidget); | 65 pInterForm->AddMap(pCtrl, pWidget); |
| 66 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); | 66 CPDF_InterForm* pPDFInterForm = pInterForm->GetInterForm(); |
| 67 if (pPDFInterForm && pPDFInterForm->NeedConstructAP()) | 67 if (pPDFInterForm && pPDFInterForm->NeedConstructAP()) |
| (...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 293 | 293 |
| 294 FX_BOOL CPDFSDK_WidgetHandler::HitTest(CPDFSDK_PageView* pPageView, | 294 FX_BOOL CPDFSDK_WidgetHandler::HitTest(CPDFSDK_PageView* pPageView, |
| 295 CPDFSDK_Annot* pAnnot, | 295 CPDFSDK_Annot* pAnnot, |
| 296 const CFX_FloatPoint& point) { | 296 const CFX_FloatPoint& point) { |
| 297 ASSERT(pPageView); | 297 ASSERT(pPageView); |
| 298 ASSERT(pAnnot); | 298 ASSERT(pAnnot); |
| 299 | 299 |
| 300 CFX_FloatRect rect = GetViewBBox(pPageView, pAnnot); | 300 CFX_FloatRect rect = GetViewBBox(pPageView, pAnnot); |
| 301 return rect.Contains(point.x, point.y); | 301 return rect.Contains(point.x, point.y); |
| 302 } | 302 } |
| OLD | NEW |