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 "../include/fpdfxfa/fpdfxfa_doc.h" | 7 #include "../include/fpdfxfa/fpdfxfa_doc.h" |
8 #include "../include/fpdfxfa/fpdfxfa_util.h" | 8 #include "../include/fpdfxfa/fpdfxfa_util.h" |
9 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" | 9 #include "fpdfsdk/include/formfiller/FFL_FormFiller.h" |
10 #include "fpdfsdk/include/fsdk_actionhandler.h" | 10 #include "fpdfsdk/include/fsdk_actionhandler.h" |
(...skipping 487 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
498 CPDF_FormField* pField = GetFormField(); | 498 CPDF_FormField* pField = GetFormField(); |
499 ASSERT(pField != NULL); | 499 ASSERT(pField != NULL); |
500 | 500 |
501 return pField->GetFieldType(); | 501 return pField->GetFieldType(); |
502 } | 502 } |
503 | 503 |
504 FX_BOOL CPDFSDK_Widget::IsAppearanceValid() { | 504 FX_BOOL CPDFSDK_Widget::IsAppearanceValid() { |
505 CPDFSDK_Document* pSDKDoc = m_pPageView->GetSDKDocument(); | 505 CPDFSDK_Document* pSDKDoc = m_pPageView->GetSDKDocument(); |
506 CPDFXFA_Document* pDoc = pSDKDoc->GetXFADocument(); | 506 CPDFXFA_Document* pDoc = pSDKDoc->GetXFADocument(); |
507 int nDocType = pDoc->GetDocType(); | 507 int nDocType = pDoc->GetDocType(); |
508 if (nDocType == DOCTYPE_PDF || nDocType == DOCTYPE_STATIC_XFA) | 508 if (nDocType != DOCTYPE_PDF && nDocType != DOCTYPE_STATIC_XFA) |
509 return CPDFSDK_BAAnnot::IsAppearanceValid(); | 509 return TRUE; |
510 | 510 |
511 return TRUE; | 511 return CPDFSDK_BAAnnot::IsAppearanceValid(); |
512 } | 512 } |
513 | 513 |
514 int CPDFSDK_Widget::GetFieldFlags() const { | 514 int CPDFSDK_Widget::GetFieldFlags() const { |
515 CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm(); | 515 CPDF_InterForm* pPDFInterForm = m_pInterForm->GetInterForm(); |
516 ASSERT(pPDFInterForm != NULL); | 516 ASSERT(pPDFInterForm != NULL); |
517 | 517 |
518 CPDF_FormControl* pFormControl = | 518 CPDF_FormControl* pFormControl = |
519 pPDFInterForm->GetControlByDict(m_pAnnot->GetAnnotDict()); | 519 pPDFInterForm->GetControlByDict(m_pAnnot->GetAnnotDict()); |
520 CPDF_FormField* pFormField = pFormControl->GetField(); | 520 CPDF_FormField* pFormField = pFormControl->GetField(); |
521 return pFormField->GetFieldFlags(); | 521 return pFormField->GetFieldFlags(); |
(...skipping 1426 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1948 void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) { | 1948 void CPDFSDK_Widget::RemoveAppearance(const CFX_ByteString& sAPType) { |
1949 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP")) { | 1949 if (CPDF_Dictionary* pAPDict = m_pAnnot->GetAnnotDict()->GetDict("AP")) { |
1950 pAPDict->RemoveAt(sAPType); | 1950 pAPDict->RemoveAt(sAPType); |
1951 } | 1951 } |
1952 } | 1952 } |
1953 | 1953 |
1954 FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, | 1954 FX_BOOL CPDFSDK_Widget::OnAAction(CPDF_AAction::AActionType type, |
1955 PDFSDK_FieldAction& data, | 1955 PDFSDK_FieldAction& data, |
1956 CPDFSDK_PageView* pPageView) { | 1956 CPDFSDK_PageView* pPageView) { |
1957 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); | 1957 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); |
1958 CPDFXFA_Document* pDoc = pDocument->GetXFADocument(); | |
1959 CPDFDoc_Environment* pEnv = pDocument->GetEnv(); | 1958 CPDFDoc_Environment* pEnv = pDocument->GetEnv(); |
1960 | 1959 |
1961 if (IXFA_Widget* hWidget = this->GetMixXFAWidget()) { | 1960 CPDFXFA_Document* pDoc = pDocument->GetXFADocument(); |
| 1961 if (IXFA_Widget* hWidget = GetMixXFAWidget()) { |
1962 XFA_EVENTTYPE eEventType = GetXFAEventType(type, data.bWillCommit); | 1962 XFA_EVENTTYPE eEventType = GetXFAEventType(type, data.bWillCommit); |
1963 | 1963 |
1964 if (eEventType != XFA_EVENT_Unknown) { | 1964 if (eEventType != XFA_EVENT_Unknown) { |
1965 if (IXFA_WidgetHandler* pXFAWidgetHandler = this->GetXFAWidgetHandler()) { | 1965 if (IXFA_WidgetHandler* pXFAWidgetHandler = GetXFAWidgetHandler()) { |
1966 CXFA_EventParam param; | 1966 CXFA_EventParam param; |
1967 param.m_eType = eEventType; | 1967 param.m_eType = eEventType; |
1968 param.m_wsChange = data.sChange; | 1968 param.m_wsChange = data.sChange; |
1969 param.m_iCommitKey = data.nCommitKey; | 1969 param.m_iCommitKey = data.nCommitKey; |
1970 param.m_bShift = data.bShift; | 1970 param.m_bShift = data.bShift; |
1971 param.m_iSelStart = data.nSelStart; | 1971 param.m_iSelStart = data.nSelStart; |
1972 param.m_iSelEnd = data.nSelEnd; | 1972 param.m_iSelEnd = data.nSelEnd; |
1973 param.m_wsFullText = data.sValue; | 1973 param.m_wsFullText = data.sValue; |
1974 param.m_bKeyDown = data.bKeyDown; | 1974 param.m_bKeyDown = data.bKeyDown; |
1975 param.m_bModifier = data.bModifier; | 1975 param.m_bModifier = data.bModifier; |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2060 | 2060 |
2061 int nFieldFlags = GetFieldFlags(); | 2061 int nFieldFlags = GetFieldFlags(); |
2062 if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) | 2062 if ((nFieldFlags & FIELDFLAG_READONLY) == FIELDFLAG_READONLY) |
2063 return FALSE; | 2063 return FALSE; |
2064 | 2064 |
2065 return TRUE; | 2065 return TRUE; |
2066 } | 2066 } |
2067 return FALSE; | 2067 return FALSE; |
2068 } | 2068 } |
2069 | 2069 |
2070 // CPDFSDK_XFAWidget | |
2071 CPDFSDK_XFAWidget::CPDFSDK_XFAWidget(IXFA_Widget* pAnnot, | 2070 CPDFSDK_XFAWidget::CPDFSDK_XFAWidget(IXFA_Widget* pAnnot, |
2072 CPDFSDK_PageView* pPageView, | 2071 CPDFSDK_PageView* pPageView, |
2073 CPDFSDK_InterForm* pInterForm) | 2072 CPDFSDK_InterForm* pInterForm) |
2074 : CPDFSDK_Annot(pPageView), m_pInterForm(pInterForm), m_hXFAWidget(pAnnot) { | 2073 : CPDFSDK_Annot(pPageView), m_pInterForm(pInterForm), m_hXFAWidget(pAnnot) { |
2075 } | 2074 } |
2076 | 2075 |
2077 FX_BOOL CPDFSDK_XFAWidget::IsXFAField() { | 2076 FX_BOOL CPDFSDK_XFAWidget::IsXFAField() { |
2078 return TRUE; | 2077 return TRUE; |
2079 } | 2078 } |
2080 | 2079 |
2081 CFX_ByteString CPDFSDK_XFAWidget::GetType() const { | 2080 CFX_ByteString CPDFSDK_XFAWidget::GetType() const { |
2082 return FSDK_XFAWIDGET_TYPENAME; | 2081 return FSDK_XFAWIDGET_TYPENAME; |
2083 } | 2082 } |
2084 | 2083 |
2085 CFX_FloatRect CPDFSDK_XFAWidget::GetRect() const { | 2084 CFX_FloatRect CPDFSDK_XFAWidget::GetRect() const { |
2086 CPDFSDK_PageView* pPageView = GetPageView(); | 2085 CPDFSDK_PageView* pPageView = GetPageView(); |
2087 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); | 2086 CPDFSDK_Document* pDocument = pPageView->GetSDKDocument(); |
2088 CPDFXFA_Document* pDoc = pDocument->GetXFADocument(); | 2087 CPDFXFA_Document* pDoc = pDocument->GetXFADocument(); |
2089 IXFA_DocView* pDocView = pDoc->GetXFADocView(); | 2088 IXFA_DocView* pDocView = pDoc->GetXFADocView(); |
2090 IXFA_WidgetHandler* pWidgetHandler = pDocView->GetWidgetHandler(); | 2089 IXFA_WidgetHandler* pWidgetHandler = pDocView->GetWidgetHandler(); |
2091 | 2090 |
2092 CFX_RectF rcBBox; | 2091 CFX_RectF rcBBox; |
2093 pWidgetHandler->GetRect(GetXFAWidget(), rcBBox); | 2092 pWidgetHandler->GetRect(GetXFAWidget(), rcBBox); |
2094 | 2093 |
2095 return CFX_FloatRect(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width, | 2094 return CFX_FloatRect(rcBBox.left, rcBBox.top, rcBBox.left + rcBBox.width, |
2096 rcBBox.top + rcBBox.height); | 2095 rcBBox.top + rcBBox.height); |
2097 } | 2096 } |
2098 | 2097 |
2099 // CPDFSDK_InterForm | |
2100 CPDFSDK_InterForm::CPDFSDK_InterForm(CPDFSDK_Document* pDocument) | 2098 CPDFSDK_InterForm::CPDFSDK_InterForm(CPDFSDK_Document* pDocument) |
2101 : m_pDocument(pDocument), | 2099 : m_pDocument(pDocument), |
2102 m_pInterForm(NULL), | 2100 m_pInterForm(NULL), |
2103 m_bCalculate(TRUE), | 2101 m_bCalculate(TRUE), |
2104 m_bXfaCalculate(TRUE), | 2102 m_bXfaCalculate(TRUE), |
2105 m_bXfaValidationsEnabled(TRUE), | 2103 m_bXfaValidationsEnabled(TRUE), |
2106 m_bBusy(FALSE) { | 2104 m_bBusy(FALSE) { |
2107 ASSERT(m_pDocument != NULL); | |
2108 m_pInterForm = new CPDF_InterForm(m_pDocument->GetPDFDocument(), FALSE); | 2105 m_pInterForm = new CPDF_InterForm(m_pDocument->GetPDFDocument(), FALSE); |
2109 m_pInterForm->SetFormNotify(this); | 2106 m_pInterForm->SetFormNotify(this); |
2110 | 2107 |
2111 for (int i = 0; i < kNumFieldTypes; ++i) | 2108 for (int i = 0; i < kNumFieldTypes; ++i) |
2112 m_bNeedHightlight[i] = FALSE; | 2109 m_bNeedHightlight[i] = FALSE; |
2113 m_iHighlightAlpha = 0; | 2110 m_iHighlightAlpha = 0; |
2114 } | 2111 } |
2115 | 2112 |
2116 CPDFSDK_InterForm::~CPDFSDK_InterForm() { | 2113 CPDFSDK_InterForm::~CPDFSDK_InterForm() { |
2117 delete m_pInterForm; | 2114 delete m_pInterForm; |
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2445 CPDF_FormControl* pFormCtrl = pFormField->GetControl(i); | 2442 CPDF_FormControl* pFormCtrl = pFormField->GetControl(i); |
2446 ASSERT(pFormCtrl != NULL); | 2443 ASSERT(pFormCtrl != NULL); |
2447 | 2444 |
2448 ASSERT(m_pInterForm != NULL); | 2445 ASSERT(m_pInterForm != NULL); |
2449 if (CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl)) | 2446 if (CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl)) |
2450 pWidget->ResetAppearance(sValue, bValueChanged); | 2447 pWidget->ResetAppearance(sValue, bValueChanged); |
2451 } | 2448 } |
2452 } | 2449 } |
2453 | 2450 |
2454 void CPDFSDK_InterForm::UpdateField(CPDF_FormField* pFormField) { | 2451 void CPDFSDK_InterForm::UpdateField(CPDF_FormField* pFormField) { |
2455 ASSERT(pFormField != NULL); | |
2456 | |
2457 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { | 2452 for (int i = 0, sz = pFormField->CountControls(); i < sz; i++) { |
2458 CPDF_FormControl* pFormCtrl = pFormField->GetControl(i); | 2453 CPDF_FormControl* pFormCtrl = pFormField->GetControl(i); |
2459 ASSERT(pFormCtrl != NULL); | 2454 ASSERT(pFormCtrl != NULL); |
2460 | 2455 |
2461 if (CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl)) { | 2456 if (CPDFSDK_Widget* pWidget = GetWidget(pFormCtrl)) { |
2462 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); | 2457 CPDFDoc_Environment* pEnv = m_pDocument->GetEnv(); |
2463 CFFL_IFormFiller* pIFormFiller = pEnv->GetIFormFiller(); | 2458 CFFL_IFormFiller* pIFormFiller = pEnv->GetIFormFiller(); |
2464 | 2459 UnderlyingPageType* pPage = pWidget->GetUnderlyingPage(); |
2465 CPDFXFA_Page* pPage = pWidget->GetPDFXFAPage(); | |
2466 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, FALSE); | 2460 CPDFSDK_PageView* pPageView = m_pDocument->GetPageView(pPage, FALSE); |
2467 | |
2468 FX_RECT rcBBox = pIFormFiller->GetViewBBox(pPageView, pWidget); | 2461 FX_RECT rcBBox = pIFormFiller->GetViewBBox(pPageView, pWidget); |
2469 | 2462 |
2470 pEnv->FFI_Invalidate(pPage, rcBBox.left, rcBBox.top, rcBBox.right, | 2463 pEnv->FFI_Invalidate(pPage, rcBBox.left, rcBBox.top, rcBBox.right, |
2471 rcBBox.bottom); | 2464 rcBBox.bottom); |
2472 } | 2465 } |
2473 } | 2466 } |
2474 } | 2467 } |
2475 | 2468 |
2476 void CPDFSDK_InterForm::OnKeyStrokeCommit(CPDF_FormField* pFormField, | 2469 void CPDFSDK_InterForm::OnKeyStrokeCommit(CPDF_FormField* pFormField, |
2477 CFX_WideString& csValue, | 2470 CFX_WideString& csValue, |
(...skipping 659 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3137 break; | 3130 break; |
3138 } | 3131 } |
3139 } | 3132 } |
3140 } | 3133 } |
3141 | 3134 |
3142 CPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot) { | 3135 CPDF_Rect CBA_AnnotIterator::GetAnnotRect(CPDFSDK_Annot* pAnnot) { |
3143 CPDF_Rect rcAnnot; | 3136 CPDF_Rect rcAnnot; |
3144 pAnnot->GetPDFAnnot()->GetRect(rcAnnot); | 3137 pAnnot->GetPDFAnnot()->GetRect(rcAnnot); |
3145 return rcAnnot; | 3138 return rcAnnot; |
3146 } | 3139 } |
OLD | NEW |