| Index: core/fpdfdoc/doc_form.cpp
|
| diff --git a/core/fpdfdoc/doc_form.cpp b/core/fpdfdoc/doc_form.cpp
|
| index 7c81f0ee6f8085f207087ca86ca17b1aafe63ddf..7357f0a2eb507bf53ab074867cdb79ca4a6ed8a4 100644
|
| --- a/core/fpdfdoc/doc_form.cpp
|
| +++ b/core/fpdfdoc/doc_form.cpp
|
| @@ -260,14 +260,13 @@ CFieldTree::_Node* CFieldTree::FindNode(const CFX_WideString& full_name) {
|
| }
|
| return pNode;
|
| }
|
| -CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument, FX_BOOL bGenerateAP)
|
| +
|
| +CPDF_InterForm::CPDF_InterForm(CPDF_Document* pDocument)
|
| : CFX_PrivateData(),
|
| m_pDocument(pDocument),
|
| - m_bGenerateAP(bGenerateAP),
|
| m_pFormDict(nullptr),
|
| m_pFieldTree(new CFieldTree),
|
| - m_pFormNotify(nullptr),
|
| - m_bUpdated(FALSE) {
|
| + m_pFormNotify(nullptr) {
|
| CPDF_Dictionary* pRoot = m_pDocument->GetRoot();
|
| if (!pRoot)
|
| return;
|
| @@ -732,47 +731,38 @@ CPDF_FormControl* CPDF_InterForm::GetControlByDict(
|
| return it != m_ControlMap.end() ? it->second : nullptr;
|
| }
|
|
|
| -FX_BOOL CPDF_InterForm::NeedConstructAP() {
|
| +FX_BOOL CPDF_InterForm::NeedConstructAP() const {
|
| return m_pFormDict && m_pFormDict->GetBooleanBy("NeedAppearances");
|
| }
|
| -void CPDF_InterForm::NeedConstructAP(FX_BOOL bNeedAP) {
|
| - if (!m_pFormDict) {
|
| - InitInterFormDict(m_pFormDict, m_pDocument);
|
| - }
|
| - m_pFormDict->SetAtBoolean("NeedAppearances", bNeedAP);
|
| - m_bGenerateAP = bNeedAP;
|
| -}
|
|
|
| int CPDF_InterForm::CountFieldsInCalculationOrder() {
|
| - if (!m_pFormDict) {
|
| + if (!m_pFormDict)
|
| return 0;
|
| - }
|
| +
|
| CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO");
|
| return pArray ? pArray->GetCount() : 0;
|
| }
|
|
|
| CPDF_FormField* CPDF_InterForm::GetFieldInCalculationOrder(int index) {
|
| - if (!m_pFormDict || index < 0) {
|
| - return NULL;
|
| - }
|
| + if (!m_pFormDict || index < 0)
|
| + return nullptr;
|
| +
|
| CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO");
|
| - if (!pArray) {
|
| - return NULL;
|
| - }
|
| - if (CPDF_Dictionary* pElement =
|
| - ToDictionary(pArray->GetDirectObjectAt(index))) {
|
| - return GetFieldByDict(pElement);
|
| - }
|
| - return NULL;
|
| + if (!pArray)
|
| + return nullptr;
|
| +
|
| + CPDF_Dictionary* pElement = ToDictionary(pArray->GetDirectObjectAt(index));
|
| + return pElement ? GetFieldByDict(pElement) : nullptr;
|
| }
|
| +
|
| int CPDF_InterForm::FindFieldInCalculationOrder(const CPDF_FormField* pField) {
|
| - if (!m_pFormDict || !pField) {
|
| + if (!m_pFormDict || !pField)
|
| return -1;
|
| - }
|
| +
|
| CPDF_Array* pArray = m_pFormDict->GetArrayBy("CO");
|
| - if (!pArray) {
|
| + if (!pArray)
|
| return -1;
|
| - }
|
| +
|
| for (size_t i = 0; i < pArray->GetCount(); i++) {
|
| CPDF_Object* pElement = pArray->GetDirectObjectAt(i);
|
| if (pElement == pField->m_pDict) {
|
| @@ -781,9 +771,11 @@ int CPDF_InterForm::FindFieldInCalculationOrder(const CPDF_FormField* pField) {
|
| }
|
| return -1;
|
| }
|
| +
|
| uint32_t CPDF_InterForm::CountFormFonts() {
|
| return CountInterFormFonts(m_pFormDict);
|
| }
|
| +
|
| CPDF_Font* CPDF_InterForm::GetFormFont(uint32_t index,
|
| CFX_ByteString& csNameTag) {
|
| return GetInterFormFont(m_pFormDict, m_pDocument, index, csNameTag);
|
| @@ -815,23 +807,22 @@ FX_BOOL CPDF_InterForm::FindFormFont(CFX_ByteString csFontName,
|
| void CPDF_InterForm::AddFormFont(const CPDF_Font* pFont,
|
| CFX_ByteString& csNameTag) {
|
| AddInterFormFont(m_pFormDict, m_pDocument, pFont, csNameTag);
|
| - m_bUpdated = TRUE;
|
| }
|
| +
|
| CPDF_Font* CPDF_InterForm::AddNativeFormFont(uint8_t charSet,
|
| CFX_ByteString& csNameTag) {
|
| - m_bUpdated = TRUE;
|
| return AddNativeInterFormFont(m_pFormDict, m_pDocument, charSet, csNameTag);
|
| }
|
| +
|
| CPDF_Font* CPDF_InterForm::AddNativeFormFont(CFX_ByteString& csNameTag) {
|
| - m_bUpdated = TRUE;
|
| return AddNativeInterFormFont(m_pFormDict, m_pDocument, csNameTag);
|
| }
|
| +
|
| void CPDF_InterForm::RemoveFormFont(const CPDF_Font* pFont) {
|
| - m_bUpdated = TRUE;
|
| RemoveInterFormFont(m_pFormDict, pFont);
|
| }
|
| +
|
| void CPDF_InterForm::RemoveFormFont(CFX_ByteString csNameTag) {
|
| - m_bUpdated = TRUE;
|
| RemoveInterFormFont(m_pFormDict, csNameTag);
|
| }
|
|
|
| @@ -1171,42 +1162,37 @@ void CPDF_InterForm::FDF_ImportField(CPDF_Dictionary* pFieldDict,
|
| m_pFormNotify->AfterValueChange(pField);
|
| }
|
| }
|
| - if (CPDF_InterForm::m_bUpdateAP) {
|
| - pField->UpdateAP(NULL);
|
| - }
|
| }
|
| +
|
| FX_BOOL CPDF_InterForm::ImportFromFDF(const CFDF_Document* pFDF,
|
| FX_BOOL bNotify) {
|
| - if (!pFDF) {
|
| + if (!pFDF)
|
| return FALSE;
|
| - }
|
| +
|
| CPDF_Dictionary* pMainDict = pFDF->GetRoot()->GetDictBy("FDF");
|
| - if (!pMainDict) {
|
| + if (!pMainDict)
|
| return FALSE;
|
| - }
|
| +
|
| CPDF_Array* pFields = pMainDict->GetArrayBy("Fields");
|
| - if (!pFields) {
|
| + if (!pFields)
|
| return FALSE;
|
| - }
|
| +
|
| m_bsEncoding = pMainDict->GetStringBy("Encoding");
|
| - if (bNotify && m_pFormNotify) {
|
| - int iRet = m_pFormNotify->BeforeFormImportData(this);
|
| - if (iRet < 0) {
|
| - return FALSE;
|
| - }
|
| - }
|
| + if (bNotify && m_pFormNotify && m_pFormNotify->BeforeFormImportData(this) < 0)
|
| + return FALSE;
|
| +
|
| for (size_t i = 0; i < pFields->GetCount(); i++) {
|
| CPDF_Dictionary* pField = pFields->GetDictAt(i);
|
| - if (!pField) {
|
| + if (!pField)
|
| continue;
|
| - }
|
| +
|
| FDF_ImportField(pField, L"", bNotify);
|
| }
|
| - if (bNotify && m_pFormNotify) {
|
| + if (bNotify && m_pFormNotify)
|
| m_pFormNotify->AfterFormImportData(this);
|
| - }
|
| return TRUE;
|
| }
|
| -void CPDF_InterForm::SetFormNotify(const CPDF_FormNotify* pNotify) {
|
| - m_pFormNotify = (CPDF_FormNotify*)pNotify;
|
| +
|
| +void CPDF_InterForm::SetFormNotify(IPDF_FormNotify* pNotify) {
|
| + m_pFormNotify = pNotify;
|
| }
|
|
|