| Index: fpdfsdk/src/fsdk_baseform.cpp
|
| diff --git a/fpdfsdk/src/fsdk_baseform.cpp b/fpdfsdk/src/fsdk_baseform.cpp
|
| index c09182e9d766c9cf63aba50ee33ee7c626991407..c86bbc86011c4ffbca5c5ae0891dc1517293122c 100644
|
| --- a/fpdfsdk/src/fsdk_baseform.cpp
|
| +++ b/fpdfsdk/src/fsdk_baseform.cpp
|
| @@ -4,10 +4,6 @@
|
|
|
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
|
|
|
| -#ifdef PDF_ENABLE_XFA
|
| -#include "../include/fpdfxfa/fpdfxfa_doc.h"
|
| -#include "../include/fpdfxfa/fpdfxfa_util.h"
|
| -#endif
|
| #include "fpdfsdk/include/formfiller/FFL_FormFiller.h"
|
| #include "fpdfsdk/include/fsdk_actionhandler.h"
|
| #include "fpdfsdk/include/fsdk_baseannot.h"
|
| @@ -17,6 +13,11 @@
|
| #include "fpdfsdk/include/javascript/IJavaScript.h"
|
| #include "third_party/base/nonstd_unique_ptr.h"
|
|
|
| +#ifdef PDF_ENABLE_XFA
|
| +#include "../include/fpdfxfa/fpdfxfa_doc.h"
|
| +#include "../include/fpdfxfa/fpdfxfa_util.h"
|
| +#endif // PDF_ENABLE_XFA
|
| +
|
| #define IsFloatZero(f) ((f) < 0.01 && (f) > -0.01)
|
| #define IsFloatBigger(fa, fb) ((fa) > (fb) && !IsFloatZero((fa) - (fb)))
|
| #define IsFloatSmaller(fa, fb) ((fa) < (fb) && !IsFloatZero((fa) - (fb)))
|
| @@ -28,14 +29,13 @@ CPDFSDK_Widget::CPDFSDK_Widget(CPDF_Annot* pAnnot,
|
| : CPDFSDK_BAAnnot(pAnnot, pPageView),
|
| m_pInterForm(pInterForm),
|
| m_nAppAge(0),
|
| -#ifndef PDF_ENABLE_XFA
|
| - m_nValueAge(0) {
|
| -#else
|
| - m_nValueAge(0),
|
| + m_nValueAge(0)
|
| +#ifdef PDF_ENABLE_XFA
|
| + ,
|
| m_hMixXFAWidget(NULL),
|
| - m_pWidgetHandler(NULL) {
|
| -#endif
|
| - ASSERT(m_pInterForm != NULL);
|
| + m_pWidgetHandler(NULL)
|
| +#endif // PDF_ENABLE_XFA
|
| +{
|
| }
|
|
|
| CPDFSDK_Widget::~CPDFSDK_Widget() {}
|
| @@ -253,7 +253,6 @@ FX_BOOL CPDFSDK_Widget::OnXFAAAction(PDFSDK_XFAAActionType eXFAAAT,
|
| }
|
|
|
| void CPDFSDK_Widget::Synchronize(FX_BOOL bSynchronizeElse) {
|
| -#ifdef PDF_ENABLE_XFA
|
| if (IXFA_Widget* hWidget = this->GetMixXFAWidget()) {
|
| if (IXFA_WidgetHandler* pXFAWidgetHandler = this->GetXFAWidgetHandler()) {
|
| CPDF_FormField* pFormField = GetFormField();
|
| @@ -303,11 +302,9 @@ void CPDFSDK_Widget::Synchronize(FX_BOOL bSynchronizeElse) {
|
| }
|
| }
|
| }
|
| -#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::SynchronizeXFAValue() {
|
| -#ifdef PDF_ENABLE_XFA
|
| CPDFSDK_Document* pSDKDoc = m_pPageView->GetSDKDocument();
|
| CPDFXFA_Document* pDoc = pSDKDoc->GetXFADocument();
|
| IXFA_DocView* pXFADocView = pDoc->GetXFADocView();
|
| @@ -320,11 +317,9 @@ void CPDFSDK_Widget::SynchronizeXFAValue() {
|
| GetFormControl());
|
| }
|
| }
|
| -#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::SynchronizeXFAItems() {
|
| -#ifdef PDF_ENABLE_XFA
|
| CPDFSDK_Document* pSDKDoc = m_pPageView->GetSDKDocument();
|
| CPDFXFA_Document* pDoc = pSDKDoc->GetXFADocument();
|
| IXFA_DocView* pXFADocView = pDoc->GetXFADocView();
|
| @@ -335,14 +330,12 @@ void CPDFSDK_Widget::SynchronizeXFAItems() {
|
| if (GetXFAWidgetHandler())
|
| SynchronizeXFAItems(pXFADocView, hWidget, GetFormField(), nullptr);
|
| }
|
| -#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::SynchronizeXFAValue(IXFA_DocView* pXFADocView,
|
| IXFA_Widget* hWidget,
|
| CPDF_FormField* pFormField,
|
| CPDF_FormControl* pFormControl) {
|
| -#ifdef PDF_ENABLE_XFA
|
| ASSERT(pXFADocView != NULL);
|
| ASSERT(hWidget != NULL);
|
|
|
| @@ -411,14 +404,12 @@ void CPDFSDK_Widget::SynchronizeXFAValue(IXFA_DocView* pXFADocView,
|
| } break;
|
| }
|
| }
|
| -#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::SynchronizeXFAItems(IXFA_DocView* pXFADocView,
|
| IXFA_Widget* hWidget,
|
| CPDF_FormField* pFormField,
|
| CPDF_FormControl* pFormControl) {
|
| -#ifdef PDF_ENABLE_XFA
|
| ASSERT(pXFADocView != NULL);
|
| ASSERT(hWidget != NULL);
|
|
|
| @@ -460,10 +451,9 @@ void CPDFSDK_Widget::SynchronizeXFAItems(IXFA_DocView* pXFADocView,
|
| } break;
|
| }
|
| }
|
| -#endif // PDF_ENABLE_XFA
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| FX_BOOL CPDFSDK_Widget::IsWidgetAppearanceValid(
|
| CPDF_Annot::AppearanceMode mode) {
|
| CPDF_Dictionary* pAP = m_pAnnot->GetAnnotDict()->GetDict("AP");
|
| @@ -516,8 +506,7 @@ FX_BOOL CPDFSDK_Widget::IsAppearanceValid() {
|
| int nDocType = pDoc->GetDocType();
|
| if (nDocType != DOCTYPE_PDF && nDocType != DOCTYPE_STATIC_XFA)
|
| return TRUE;
|
| -
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| return CPDFSDK_BAAnnot::IsAppearanceValid();
|
| }
|
|
|
| @@ -565,8 +554,8 @@ CFX_WideString CPDFSDK_Widget::GetName() const {
|
| CPDF_FormField* pFormField = GetFormField();
|
| return pFormField->GetFullName();
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| FX_BOOL CPDFSDK_Widget::GetFillColor(FX_COLORREF& color) const {
|
| CPDF_FormControl* pFormCtrl = GetFormControl();
|
| ASSERT(pFormCtrl != NULL);
|
| @@ -618,7 +607,6 @@ FX_FLOAT CPDFSDK_Widget::GetFontSize() const {
|
|
|
| int CPDFSDK_Widget::GetSelectedIndex(int nIndex) const {
|
| #ifdef PDF_ENABLE_XFA
|
| -#ifdef PDF_ENABLE_XFA
|
| if (IXFA_Widget* hWidget = this->GetMixXFAWidget()) {
|
| if (IXFA_WidgetHandler* pXFAWidgetHandler = this->GetXFAWidgetHandler()) {
|
| if (CXFA_WidgetAcc* pWidgetAcc = pXFAWidgetHandler->GetDataAcc(hWidget)) {
|
| @@ -628,17 +616,12 @@ int CPDFSDK_Widget::GetSelectedIndex(int nIndex) const {
|
| }
|
| }
|
| #endif // PDF_ENABLE_XFA
|
| -
|
| -#endif
|
| CPDF_FormField* pFormField = GetFormField();
|
| return pFormField->GetSelectedIndex(nIndex);
|
| }
|
|
|
| -#ifndef PDF_ENABLE_XFA
|
| -CFX_WideString CPDFSDK_Widget::GetValue() const {
|
| -#else
|
| -CFX_WideString CPDFSDK_Widget::GetValue(FX_BOOL bDisplay) const {
|
| #ifdef PDF_ENABLE_XFA
|
| +CFX_WideString CPDFSDK_Widget::GetValue(FX_BOOL bDisplay) const {
|
| if (IXFA_Widget* hWidget = this->GetMixXFAWidget()) {
|
| if (IXFA_WidgetHandler* pXFAWidgetHandler = this->GetXFAWidgetHandler()) {
|
| if (CXFA_WidgetAcc* pWidgetAcc = pXFAWidgetHandler->GetDataAcc(hWidget)) {
|
| @@ -649,9 +632,9 @@ CFX_WideString CPDFSDK_Widget::GetValue(FX_BOOL bDisplay) const {
|
| }
|
| }
|
| }
|
| +#else
|
| +CFX_WideString CPDFSDK_Widget::GetValue() const {
|
| #endif // PDF_ENABLE_XFA
|
| -
|
| -#endif
|
| CPDF_FormField* pFormField = GetFormField();
|
| return pFormField->GetValue();
|
| }
|
| @@ -679,7 +662,6 @@ int CPDFSDK_Widget::CountOptions() const {
|
|
|
| FX_BOOL CPDFSDK_Widget::IsOptionSelected(int nIndex) const {
|
| #ifdef PDF_ENABLE_XFA
|
| -#ifdef PDF_ENABLE_XFA
|
| if (IXFA_Widget* hWidget = this->GetMixXFAWidget()) {
|
| if (IXFA_WidgetHandler* pXFAWidgetHandler = this->GetXFAWidgetHandler()) {
|
| if (CXFA_WidgetAcc* pWidgetAcc = pXFAWidgetHandler->GetDataAcc(hWidget)) {
|
| @@ -691,8 +673,6 @@ FX_BOOL CPDFSDK_Widget::IsOptionSelected(int nIndex) const {
|
| }
|
| }
|
| #endif // PDF_ENABLE_XFA
|
| -
|
| -#endif
|
| CPDF_FormField* pFormField = GetFormField();
|
| return pFormField->IsItemSelected(nIndex);
|
| }
|
| @@ -704,7 +684,6 @@ int CPDFSDK_Widget::GetTopVisibleIndex() const {
|
|
|
| FX_BOOL CPDFSDK_Widget::IsChecked() const {
|
| #ifdef PDF_ENABLE_XFA
|
| -#ifdef PDF_ENABLE_XFA
|
| if (IXFA_WidgetHandler* pXFAWidgetHandler = this->GetXFAWidgetHandler()) {
|
| if (IXFA_Widget* hWidget = this->GetMixXFAWidget()) {
|
| if (CXFA_WidgetAcc* pWidgetAcc = pXFAWidgetHandler->GetDataAcc(hWidget)) {
|
| @@ -714,8 +693,6 @@ FX_BOOL CPDFSDK_Widget::IsChecked() const {
|
| }
|
| }
|
| #endif // PDF_ENABLE_XFA
|
| -
|
| -#endif
|
| CPDF_FormControl* pFormCtrl = GetFormControl();
|
| return pFormCtrl->IsChecked();
|
| }
|
| @@ -736,11 +713,7 @@ int CPDFSDK_Widget::GetMaxLen() const {
|
|
|
| void CPDFSDK_Widget::SetCheck(FX_BOOL bChecked, FX_BOOL bNotify) {
|
| CPDF_FormControl* pFormCtrl = GetFormControl();
|
| - ASSERT(pFormCtrl != NULL);
|
| -
|
| CPDF_FormField* pFormField = pFormCtrl->GetField();
|
| - ASSERT(pFormField != NULL);
|
| -
|
| pFormField->CheckControl(pFormField->GetControlIndex(pFormCtrl), bChecked,
|
| bNotify);
|
| #ifdef PDF_ENABLE_XFA
|
| @@ -748,19 +721,16 @@ void CPDFSDK_Widget::SetCheck(FX_BOOL bChecked, FX_BOOL bNotify) {
|
| ResetAppearance(TRUE);
|
| if (!bNotify)
|
| Synchronize(TRUE);
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::SetValue(const CFX_WideString& sValue, FX_BOOL bNotify) {
|
| CPDF_FormField* pFormField = GetFormField();
|
| - ASSERT(pFormField != NULL);
|
| -
|
| pFormField->SetValue(sValue, bNotify);
|
| #ifdef PDF_ENABLE_XFA
|
| -
|
| if (!bNotify)
|
| Synchronize(TRUE);
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::SetDefaultValue(const CFX_WideString& sValue) {}
|
| @@ -768,26 +738,20 @@ void CPDFSDK_Widget::SetOptionSelection(int index,
|
| FX_BOOL bSelected,
|
| FX_BOOL bNotify) {
|
| CPDF_FormField* pFormField = GetFormField();
|
| - ASSERT(pFormField != NULL);
|
| -
|
| pFormField->SetItemSelection(index, bSelected, bNotify);
|
| #ifdef PDF_ENABLE_XFA
|
| -
|
| if (!bNotify)
|
| Synchronize(TRUE);
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::ClearSelection(FX_BOOL bNotify) {
|
| CPDF_FormField* pFormField = GetFormField();
|
| - ASSERT(pFormField != NULL);
|
| -
|
| pFormField->ClearSelection(bNotify);
|
| #ifdef PDF_ENABLE_XFA
|
| -
|
| if (!bNotify)
|
| Synchronize(TRUE);
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| void CPDFSDK_Widget::SetTopVisibleIndex(int index) {}
|
| @@ -821,8 +785,8 @@ void CPDFSDK_Widget::ResetAppearance(FX_BOOL bValueChanged) {
|
| break;
|
| }
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| void CPDFSDK_Widget::ResetAppearance(const FX_WCHAR* sValue,
|
| FX_BOOL bValueChanged) {
|
| SetAppModified();
|
| @@ -1680,8 +1644,8 @@ void CPDFSDK_Widget::ResetAppearance_TextField(const FX_WCHAR* sValue) {
|
| sValueTmp = GetValue(TRUE);
|
| sValue = sValueTmp;
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| if (nMaxLen > 0) {
|
| if (bCharArray) {
|
| pEdit->SetCharArray(nMaxLen);
|
| @@ -1990,8 +1954,8 @@ FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type,
|
| CPDFSDK_PageView* pPageView) {
|
| CPDFSDK_Document* pDocument = pPageView->GetSDKDocument();
|
| CPDFDoc_Environment* pEnv = pDocument->GetEnv();
|
| -#ifdef PDF_ENABLE_XFA
|
|
|
| +#ifdef PDF_ENABLE_XFA
|
| CPDFXFA_Document* pDoc = pDocument->GetXFADocument();
|
| if (IXFA_Widget* hWidget = GetMixXFAWidget()) {
|
| XFA_EVENTTYPE eEventType = GetXFAEventType(type, data.bWillCommit);
|
| @@ -2029,10 +1993,9 @@ FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type,
|
| }
|
| }
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| CPDF_Action action = GetAAction(type);
|
| -
|
| if (action && action.GetType() != CPDF_Action::Unknown) {
|
| CPDFSDK_ActionHandler* pActionHandler = pEnv->GetActionHander();
|
| return pActionHandler->DoAction_Field(action, type, pDocument,
|
| @@ -2131,16 +2094,16 @@ CFX_FloatRect CPDFSDK_XFAWidget::GetRect() const {
|
| return CFX_FloatRect(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width,
|
| rcBBox.top + rcBBox.height);
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| CPDFSDK_InterForm::CPDFSDK_InterForm(CPDFSDK_Document* pDocument)
|
| : m_pDocument(pDocument),
|
| m_pInterForm(NULL),
|
| - m_bCalculate(TRUE),
|
| #ifdef PDF_ENABLE_XFA
|
| m_bXfaCalculate(TRUE),
|
| m_bXfaValidationsEnabled(TRUE),
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| + m_bCalculate(TRUE),
|
| m_bBusy(FALSE) {
|
| m_pInterForm = new CPDF_InterForm(m_pDocument->GetPDFDocument(), FALSE);
|
| m_pInterForm->SetFormNotify(this);
|
| @@ -2156,7 +2119,7 @@ CPDFSDK_InterForm::~CPDFSDK_InterForm() {
|
| m_Map.clear();
|
| #ifdef PDF_ENABLE_XFA
|
| m_XFAMap.RemoveAll();
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| }
|
|
|
| FX_BOOL CPDFSDK_InterForm::HighlightWidgets() {
|
| @@ -2262,6 +2225,14 @@ void CPDFSDK_InterForm::RemoveMap(CPDF_FormControl* pControl) {
|
| m_Map.erase(pControl);
|
| }
|
|
|
| +void CPDFSDK_InterForm::EnableCalculate(FX_BOOL bEnabled) {
|
| + m_bCalculate = bEnabled;
|
| +}
|
| +
|
| +FX_BOOL CPDFSDK_InterForm::IsCalculateEnabled() const {
|
| + return m_bCalculate;
|
| +}
|
| +
|
| #ifdef PDF_ENABLE_XFA
|
| void CPDFSDK_InterForm::AddXFAMap(IXFA_Widget* hWidget,
|
| CPDFSDK_XFAWidget* pWidget) {
|
| @@ -2279,16 +2250,6 @@ CPDFSDK_XFAWidget* CPDFSDK_InterForm::GetXFAWidget(IXFA_Widget* hWidget) {
|
| return pWidget;
|
| }
|
|
|
| -#endif
|
| -void CPDFSDK_InterForm::EnableCalculate(FX_BOOL bEnabled) {
|
| - m_bCalculate = bEnabled;
|
| -}
|
| -
|
| -FX_BOOL CPDFSDK_InterForm::IsCalculateEnabled() const {
|
| - return m_bCalculate;
|
| -}
|
| -
|
| -#ifdef PDF_ENABLE_XFA
|
| void CPDFSDK_InterForm::XfaEnableCalculate(FX_BOOL bEnabled) {
|
| m_bXfaCalculate = bEnabled;
|
| }
|
| @@ -2302,8 +2263,8 @@ FX_BOOL CPDFSDK_InterForm::IsXfaValidationsEnabled() {
|
| void CPDFSDK_InterForm::XfaSetValidationsEnabled(FX_BOOL bEnabled) {
|
| m_bXfaValidationsEnabled = bEnabled;
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| #ifdef _WIN32
|
| CPDF_Stream* CPDFSDK_InterForm::LoadImageFromFile(const CFX_WideString& sFile) {
|
| CPDF_Document* pDocument = m_pDocument->GetPDFDocument();
|
| @@ -2362,7 +2323,7 @@ CPDF_Stream* CPDFSDK_InterForm::LoadImageFromFile(const CFX_WideString& sFile) {
|
|
|
| return pRetStream;
|
| }
|
| -#endif
|
| +#endif // _WIN32
|
|
|
| void CPDFSDK_InterForm::OnCalculate(CPDF_FormField* pFormField) {
|
| ASSERT(m_pDocument != NULL);
|
| @@ -2725,8 +2686,8 @@ void CPDFSDK_InterForm::SynchronizeField(CPDF_FormField* pFormField,
|
| }
|
| }
|
| }
|
| +#endif // PDF_ENABLE_XFA
|
|
|
| -#endif
|
| CFX_WideString CPDFSDK_InterForm::GetTemporaryFileName(
|
| const CFX_WideString& sFileExt) {
|
| CFX_WideString sFileName;
|
| @@ -2845,8 +2806,7 @@ int CPDFSDK_InterForm::AfterValueChange(const CPDF_FormField* pField) {
|
| CPDF_FormField* pFormField = (CPDF_FormField*)pField;
|
| #ifdef PDF_ENABLE_XFA
|
| SynchronizeField(pFormField, FALSE);
|
| -
|
| -#endif
|
| +#endif // PDF_ENABLE_XFA
|
| int nType = pFormField->GetFieldType();
|
| if (nType == FIELDTYPE_COMBOBOX || nType == FIELDTYPE_TEXTFIELD) {
|
| OnCalculate(pFormField);
|
|
|