From b048f791a15f2da781a01eba5b09eb9d389f9c11 Mon Sep 17 00:00:00 2001 From: Nico Weber Date: Tue, 4 Aug 2015 12:19:10 -0700 Subject: clang-format all pdfium code. No behavior change. Generated by: find . -name '*.cpp' -o -name '*.h' | \ grep -E -v 'third_party|thirdparties|lpng_v163' | \ xargs ../../buildtools/mac/clang-format -i See thread "tabs vs spaces" on pdfium@googlegroups.com for discussion. BUG=none R=tsepez@chromium.org Review URL: https://codereview.chromium.org/1265503005 . --- core/src/fpdfdoc/doc_formfield.cpp | 2000 ++++++++++++++++++------------------ 1 file changed, 984 insertions(+), 1016 deletions(-) (limited to 'core/src/fpdfdoc/doc_formfield.cpp') diff --git a/core/src/fpdfdoc/doc_formfield.cpp b/core/src/fpdfdoc/doc_formfield.cpp index 087eba8aa4..8541d9c144 100644 --- a/core/src/fpdfdoc/doc_formfield.cpp +++ b/core/src/fpdfdoc/doc_formfield.cpp @@ -7,1100 +7,1068 @@ #include "../../include/fpdfdoc/fpdf_doc.h" #include "doc_utils.h" -FX_BOOL PDF_FormField_IsUnison(CPDF_FormField *pField) -{ - FX_BOOL bUnison = FALSE; - if (pField->GetType() == CPDF_FormField::CheckBox) { - bUnison = TRUE; +FX_BOOL PDF_FormField_IsUnison(CPDF_FormField* pField) { + FX_BOOL bUnison = FALSE; + if (pField->GetType() == CPDF_FormField::CheckBox) { + bUnison = TRUE; + } else { + FX_DWORD dwFlags = pField->GetFieldFlags(); + bUnison = ((dwFlags & 0x2000000) != 0); + } + return bUnison; +} +CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict) { + m_pDict = pDict; + m_Type = Unknown; + m_pForm = pForm; + m_pFont = NULL; + m_FontSize = 0; + SyncFieldFlags(); +} +CPDF_FormField::~CPDF_FormField() {} +void CPDF_FormField::SyncFieldFlags() { + CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT") + ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString() + : CFX_ByteString(); + FX_DWORD flags = FPDF_GetFieldAttr(m_pDict, "Ff") + ? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger() + : 0; + m_Flags = 0; + if (flags & 1) { + m_Flags |= FORMFIELD_READONLY; + } + if (flags & 2) { + m_Flags |= FORMFIELD_REQUIRED; + } + if (flags & 4) { + m_Flags |= FORMFIELD_NOEXPORT; + } + if (type_name == "Btn") { + if (flags & 0x8000) { + m_Type = RadioButton; + if (flags & 0x4000) { + m_Flags |= FORMRADIO_NOTOGGLEOFF; + } + if (flags & 0x2000000) { + m_Flags |= FORMRADIO_UNISON; + } + } else if (flags & 0x10000) { + m_Type = PushButton; } else { - FX_DWORD dwFlags = pField->GetFieldFlags(); - bUnison = ((dwFlags & 0x2000000) != 0); + m_Type = CheckBox; } - return bUnison; -} -CPDF_FormField::CPDF_FormField(CPDF_InterForm* pForm, CPDF_Dictionary* pDict) -{ - m_pDict = pDict; - m_Type = Unknown; - m_pForm = pForm; - m_pFont = NULL; - m_FontSize = 0; - SyncFieldFlags(); + } else if (type_name == "Tx") { + if (flags & 0x100000) { + m_Type = File; + } else if (flags & 0x2000000) { + m_Type = RichText; + } else { + m_Type = Text; + if (flags & 0x1000) { + m_Flags |= FORMTEXT_MULTILINE; + } + if (flags & 0x2000) { + m_Flags |= FORMTEXT_PASSWORD; + } + if (flags & 0x800000) { + m_Flags |= FORMTEXT_NOSCROLL; + } + if (flags & 0x100000) { + m_Flags |= FORMTEXT_COMB; + } + } + LoadDA(); + } else if (type_name == "Ch") { + if (flags & 0x20000) { + m_Type = ComboBox; + if (flags & 0x40000) { + m_Flags |= FORMCOMBO_EDIT; + } + } else { + m_Type = ListBox; + if (flags & 0x200000) { + m_Flags |= FORMLIST_MULTISELECT; + } + } + LoadDA(); + } else if (type_name == "Sig") { + m_Type = Sign; + } } -CPDF_FormField::~CPDF_FormField() -{ +CFX_WideString CPDF_FormField::GetFullName() { + return ::GetFullName(m_pDict); } -void CPDF_FormField::SyncFieldFlags() -{ - CFX_ByteString type_name = FPDF_GetFieldAttr(m_pDict, "FT") ? FPDF_GetFieldAttr(m_pDict, "FT")->GetString() : CFX_ByteString(); - FX_DWORD flags = FPDF_GetFieldAttr(m_pDict, "Ff")? FPDF_GetFieldAttr(m_pDict, "Ff")->GetInteger() : 0; - m_Flags = 0; - if (flags & 1) { - m_Flags |= FORMFIELD_READONLY; - } - if (flags & 2) { - m_Flags |= FORMFIELD_REQUIRED; - } - if (flags & 4) { - m_Flags |= FORMFIELD_NOEXPORT; - } - if (type_name == "Btn") { - if (flags & 0x8000) { - m_Type = RadioButton; - if (flags & 0x4000) { - m_Flags |= FORMRADIO_NOTOGGLEOFF; - } - if (flags & 0x2000000) { - m_Flags |= FORMRADIO_UNISON; - } - } else if (flags & 0x10000) { - m_Type = PushButton; +FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) { + switch (m_Type) { + case CPDF_FormField::CheckBox: + case CPDF_FormField::RadioButton: { + CFX_ByteArray statusArray; + if (bNotify && m_pForm->m_pFormNotify != NULL) { + SaveCheckedFieldStatus(this, statusArray); + } + int iCount = CountControls(); + if (iCount) { + if (PDF_FormField_IsUnison(this)) { + for (int i = 0; i < iCount; i++) { + CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); + } } else { - m_Type = CheckBox; + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pControl = GetControl(i); + FX_BOOL bChecked = pControl->IsDefaultChecked(); + CheckControl(i, bChecked, FALSE); + } } - } else if (type_name == "Tx") { - if (flags & 0x100000) { - m_Type = File; - } else if (flags & 0x2000000) { - m_Type = RichText; - } else { - m_Type = Text; - if (flags & 0x1000) { - m_Flags |= FORMTEXT_MULTILINE; - } - if (flags & 0x2000) { - m_Flags |= FORMTEXT_PASSWORD; - } - if (flags & 0x800000) { - m_Flags |= FORMTEXT_NOSCROLL; - } - if (flags & 0x100000) { - m_Flags |= FORMTEXT_COMB; - } + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); + } + } break; + case CPDF_FormField::ComboBox: { + CFX_WideString csValue; + ClearSelection(); + int iIndex = GetDefaultSelectedItem(); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + if (iRet < 0) { + return FALSE; } - LoadDA(); - } else if (type_name == "Ch") { - if (flags & 0x20000) { - m_Type = ComboBox; - if (flags & 0x40000) { - m_Flags |= FORMCOMBO_EDIT; - } - } else { - m_Type = ListBox; - if (flags & 0x200000) { - m_Flags |= FORMLIST_MULTISELECT; - } + } + SetItemSelection(iIndex, TRUE); + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } break; + case CPDF_FormField::ListBox: { + CFX_WideString csValue; + ClearSelection(); + int iIndex = GetDefaultSelectedItem(); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + if (iRet < 0) { + return FALSE; } - LoadDA(); - } else if (type_name == "Sig") { - m_Type = Sign; - } -} -CFX_WideString CPDF_FormField::GetFullName() -{ - return ::GetFullName(m_pDict); -} -FX_BOOL CPDF_FormField::ResetField(FX_BOOL bNotify) -{ - switch (m_Type) { - case CPDF_FormField::CheckBox: - case CPDF_FormField::RadioButton: { - CFX_ByteArray statusArray; - if (bNotify && m_pForm->m_pFormNotify != NULL) { - SaveCheckedFieldStatus(this, statusArray); - } - int iCount = CountControls(); - if (iCount) { - if (PDF_FormField_IsUnison(this)) { - for(int i = 0; i < iCount; i++) { - CheckControl(i, GetControl(i)->IsDefaultChecked(), FALSE); - } - } else { - for (int i = 0; i < iCount; i ++) { - CPDF_FormControl* pControl = GetControl(i); - FX_BOOL bChecked = pControl->IsDefaultChecked(); - CheckControl(i, bChecked, FALSE); - } - } - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); - } - } - break; - case CPDF_FormField::ComboBox: { - CFX_WideString csValue; - ClearSelection(); - int iIndex = GetDefaultSelectedItem(); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - SetItemSelection(iIndex, TRUE); - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - } - break; - case CPDF_FormField::ListBox: { - CFX_WideString csValue; - ClearSelection(); - int iIndex = GetDefaultSelectedItem(); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - SetItemSelection(iIndex, TRUE); - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - } - break; - case CPDF_FormField::Text: - case CPDF_FormField::RichText: - case CPDF_FormField::File: - default: { - CPDF_Object* pDV = FPDF_GetFieldAttr(m_pDict, "DV"); - CFX_WideString csDValue; - if (pDV != NULL) { - csDValue = pDV->GetUnicodeText(); - } - CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); - CFX_WideString csValue; - if (pV != NULL) { - csValue = pV->GetUnicodeText(); - } - CPDF_Object* pRV = FPDF_GetFieldAttr(m_pDict, "RV"); - if (!pRV && (csDValue == csValue)) { - return FALSE; - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csDValue); - if (iRet < 0) { - return FALSE; - } - } - if (pDV == NULL) { - m_pDict->RemoveAt("V"); - m_pDict->RemoveAt("RV"); - } else { - CPDF_Object* pClone = pDV->Clone(); - if (pClone == NULL) { - return FALSE; - } - m_pDict->SetAt("V", pClone); - if(pRV) { - CPDF_Object* pCloneR = pDV->Clone(); - m_pDict->SetAt("RV", pCloneR); - } - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - m_pForm->m_bUpdated = TRUE; - } - break; - } - return TRUE; -} -int CPDF_FormField::GetControlIndex(const CPDF_FormControl* pControl) -{ - if (pControl == NULL) { - return -1; - } - int iCount = m_ControlList.GetSize(); - for (int i = 0; i < iCount; i ++) { - CPDF_FormControl* pFind = (CPDF_FormControl*)m_ControlList.GetAt(i); - if (pFind == pControl) { - return i; + } + SetItemSelection(iIndex, TRUE); + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + } break; + case CPDF_FormField::Text: + case CPDF_FormField::RichText: + case CPDF_FormField::File: + default: { + CPDF_Object* pDV = FPDF_GetFieldAttr(m_pDict, "DV"); + CFX_WideString csDValue; + if (pDV != NULL) { + csDValue = pDV->GetUnicodeText(); + } + CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); + CFX_WideString csValue; + if (pV != NULL) { + csValue = pV->GetUnicodeText(); + } + CPDF_Object* pRV = FPDF_GetFieldAttr(m_pDict, "RV"); + if (!pRV && (csDValue == csValue)) { + return FALSE; + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csDValue); + if (iRet < 0) { + return FALSE; } - } + } + if (pDV == NULL) { + m_pDict->RemoveAt("V"); + m_pDict->RemoveAt("RV"); + } else { + CPDF_Object* pClone = pDV->Clone(); + if (pClone == NULL) { + return FALSE; + } + m_pDict->SetAt("V", pClone); + if (pRV) { + CPDF_Object* pCloneR = pDV->Clone(); + m_pDict->SetAt("RV", pCloneR); + } + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + m_pForm->m_bUpdated = TRUE; + } break; + } + return TRUE; +} +int CPDF_FormField::GetControlIndex(const CPDF_FormControl* pControl) { + if (pControl == NULL) { return -1; + } + int iCount = m_ControlList.GetSize(); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pFind = (CPDF_FormControl*)m_ControlList.GetAt(i); + if (pFind == pControl) { + return i; + } + } + return -1; } -int CPDF_FormField::GetFieldType() -{ - switch (m_Type) { - case PushButton: - return FIELDTYPE_PUSHBUTTON; - case CheckBox: - return FIELDTYPE_CHECKBOX; - case RadioButton: - return FIELDTYPE_RADIOBUTTON; - case ComboBox: - return FIELDTYPE_COMBOBOX; - case ListBox: - return FIELDTYPE_LISTBOX; - case Text: - case RichText: - case File: - return FIELDTYPE_TEXTFIELD; - case Sign: - return FIELDTYPE_SIGNATURE; - default: - break; - } - return FIELDTYPE_UNKNOWN; +int CPDF_FormField::GetFieldType() { + switch (m_Type) { + case PushButton: + return FIELDTYPE_PUSHBUTTON; + case CheckBox: + return FIELDTYPE_CHECKBOX; + case RadioButton: + return FIELDTYPE_RADIOBUTTON; + case ComboBox: + return FIELDTYPE_COMBOBOX; + case ListBox: + return FIELDTYPE_LISTBOX; + case Text: + case RichText: + case File: + return FIELDTYPE_TEXTFIELD; + case Sign: + return FIELDTYPE_SIGNATURE; + default: + break; + } + return FIELDTYPE_UNKNOWN; } -CPDF_AAction CPDF_FormField::GetAdditionalAction() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "AA"); - if (pObj == NULL) { - return NULL; - } - return pObj->GetDict(); +CPDF_AAction CPDF_FormField::GetAdditionalAction() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "AA"); + if (pObj == NULL) { + return NULL; + } + return pObj->GetDict(); } -CFX_WideString CPDF_FormField::GetAlternateName() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TU"); - if (pObj == NULL) { - return L""; - } - return pObj->GetUnicodeText(); +CFX_WideString CPDF_FormField::GetAlternateName() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TU"); + if (pObj == NULL) { + return L""; + } + return pObj->GetUnicodeText(); } -CFX_WideString CPDF_FormField::GetMappingName() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TM"); - if (pObj == NULL) { - return L""; - } - return pObj->GetUnicodeText(); +CFX_WideString CPDF_FormField::GetMappingName() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TM"); + if (pObj == NULL) { + return L""; + } + return pObj->GetUnicodeText(); } -FX_DWORD CPDF_FormField::GetFieldFlags() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "Ff"); - if (pObj == NULL) { - return 0; - } - return pObj->GetInteger(); +FX_DWORD CPDF_FormField::GetFieldFlags() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "Ff"); + if (pObj == NULL) { + return 0; + } + return pObj->GetInteger(); } -CFX_ByteString CPDF_FormField::GetDefaultStyle() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "DS"); - if (pObj == NULL) { - return ""; - } - return pObj->GetString(); +CFX_ByteString CPDF_FormField::GetDefaultStyle() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "DS"); + if (pObj == NULL) { + return ""; + } + return pObj->GetString(); } -CFX_WideString CPDF_FormField::GetRichTextString() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "RV"); - if (pObj == NULL) { - return L""; - } - return pObj->GetUnicodeText(); +CFX_WideString CPDF_FormField::GetRichTextString() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "RV"); + if (pObj == NULL) { + return L""; + } + return pObj->GetUnicodeText(); } -CFX_WideString CPDF_FormField::GetValue(FX_BOOL bDefault) -{ - if (GetType() == CheckBox || GetType() == RadioButton) { - return GetCheckValue(bDefault); +CFX_WideString CPDF_FormField::GetValue(FX_BOOL bDefault) { + if (GetType() == CheckBox || GetType() == RadioButton) { + return GetCheckValue(bDefault); + } + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, bDefault ? "DV" : "V"); + if (pValue == NULL) { + if (!bDefault) { + if (m_Type == RichText) { + pValue = FPDF_GetFieldAttr(m_pDict, "V"); + } + if (pValue == NULL && m_Type != Text) { + pValue = FPDF_GetFieldAttr(m_pDict, "DV"); + } } - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, bDefault ? "DV" : "V"); if (pValue == NULL) { - if (!bDefault) { - if (m_Type == RichText) { - pValue = FPDF_GetFieldAttr(m_pDict, "V"); - } - if (pValue == NULL && m_Type != Text) { - pValue = FPDF_GetFieldAttr(m_pDict, "DV"); - } - } - if (pValue == NULL) { - return CFX_WideString(); - } - } - switch (pValue->GetType()) { - case PDFOBJ_STRING: - case PDFOBJ_STREAM: - return pValue->GetUnicodeText(); - case PDFOBJ_ARRAY: - pValue = ((CPDF_Array*)pValue)->GetElementValue(0); - if (pValue) { - return pValue->GetUnicodeText(); - } - break; - } - return CFX_WideString(); + return CFX_WideString(); + } + } + switch (pValue->GetType()) { + case PDFOBJ_STRING: + case PDFOBJ_STREAM: + return pValue->GetUnicodeText(); + case PDFOBJ_ARRAY: + pValue = ((CPDF_Array*)pValue)->GetElementValue(0); + if (pValue) { + return pValue->GetUnicodeText(); + } + break; + } + return CFX_WideString(); } -CFX_WideString CPDF_FormField::GetValue() -{ - return GetValue(FALSE); +CFX_WideString CPDF_FormField::GetValue() { + return GetValue(FALSE); } -CFX_WideString CPDF_FormField::GetDefaultValue() -{ - return GetValue(TRUE); +CFX_WideString CPDF_FormField::GetDefaultValue() { + return GetValue(TRUE); } -FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify) -{ - switch (m_Type) { - case CheckBox: - case RadioButton: { - SetCheckValue(value, bDefault, bNotify); - return TRUE; - } - case File: - case RichText: - case Text: - case ComboBox: { - CFX_WideString csValue = value; - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - int iIndex = FindOptionValue(csValue); - if (iIndex < 0) { - CFX_ByteString bsEncodeText = PDF_EncodeText(csValue); - m_pDict->SetAtString(bDefault ? "DV" : "V", bsEncodeText); - if (m_Type == RichText && !bDefault) { - m_pDict->SetAtString("RV", bsEncodeText); - } - m_pDict->RemoveAt("I"); - } else { - m_pDict->SetAtString(bDefault ? "DV" : "V", PDF_EncodeText(csValue)); - if (bDefault) { - } else { - ClearSelection(); - SetItemSelection(iIndex, TRUE); - } - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - m_pForm->m_bUpdated = TRUE; - } - break; - case ListBox: { - int iIndex = FindOptionValue(value); - if (iIndex < 0) { - return FALSE; - } - if (bDefault && iIndex == GetDefaultSelectedItem()) { - return FALSE; - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - CFX_WideString csValue = value; - int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - if (iRet < 0) { - return FALSE; - } - } - if (bDefault) { - } else { - ClearSelection(); - SetItemSelection(iIndex, TRUE); - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - m_pForm->m_bUpdated = TRUE; - break; - } - default: - break; - } - if (CPDF_InterForm::m_bUpdateAP) { - UpdateAP(NULL); - } - return TRUE; -} -FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bNotify) -{ - return SetValue(value, FALSE, bNotify); -} -int CPDF_FormField::GetMaxLen() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "MaxLen"); - if (pObj == NULL) { - int iCount = m_ControlList.GetSize(); - for (int i = 0; i < iCount; i ++) { - CPDF_FormControl* pControl = (CPDF_FormControl*)m_ControlList.GetAt(i); - if (pControl == NULL) { - continue; - } - CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict; - if (pWidgetDict->KeyExist("MaxLen")) { - return pWidgetDict->GetInteger("MaxLen"); - } +FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify) { + switch (m_Type) { + case CheckBox: + case RadioButton: { + SetCheckValue(value, bDefault, bNotify); + return TRUE; + } + case File: + case RichText: + case Text: + case ComboBox: { + CFX_WideString csValue = value; + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + if (iRet < 0) { + return FALSE; } - return 0; - } - return pObj->GetInteger(); -} -int CPDF_FormField::CountSelectedItems() -{ - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); - if (pValue == NULL) { - pValue = FPDF_GetFieldAttr(m_pDict, "I"); - if (pValue == NULL) { - return 0; + } + int iIndex = FindOptionValue(csValue); + if (iIndex < 0) { + CFX_ByteString bsEncodeText = PDF_EncodeText(csValue); + m_pDict->SetAtString(bDefault ? "DV" : "V", bsEncodeText); + if (m_Type == RichText && !bDefault) { + m_pDict->SetAtString("RV", bsEncodeText); } - } - if (pValue->GetType() == PDFOBJ_STRING) { - if (pValue->GetString().IsEmpty()) { - return 0; + m_pDict->RemoveAt("I"); + } else { + m_pDict->SetAtString(bDefault ? "DV" : "V", PDF_EncodeText(csValue)); + if (bDefault) { + } else { + ClearSelection(); + SetItemSelection(iIndex, TRUE); } - return 1; - } - if (pValue->GetType() == PDFOBJ_NUMBER) { - if (pValue->GetString().IsEmpty()) { - return 0; + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + m_pForm->m_bUpdated = TRUE; + } break; + case ListBox: { + int iIndex = FindOptionValue(value); + if (iIndex < 0) { + return FALSE; + } + if (bDefault && iIndex == GetDefaultSelectedItem()) { + return FALSE; + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + CFX_WideString csValue = value; + int iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + if (iRet < 0) { + return FALSE; } - return 1; - } - if (pValue->GetType() != PDFOBJ_ARRAY) { - return 0; - } - return ((CPDF_Array*)pValue)->GetCount(); + } + if (bDefault) { + } else { + ClearSelection(); + SetItemSelection(iIndex, TRUE); + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + m_pForm->m_bUpdated = TRUE; + break; + } + default: + break; + } + if (CPDF_InterForm::m_bUpdateAP) { + UpdateAP(NULL); + } + return TRUE; } -int CPDF_FormField::GetSelectedIndex(int index) -{ - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); +FX_BOOL CPDF_FormField::SetValue(const CFX_WideString& value, FX_BOOL bNotify) { + return SetValue(value, FALSE, bNotify); +} +int CPDF_FormField::GetMaxLen() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "MaxLen"); + if (pObj == NULL) { + int iCount = m_ControlList.GetSize(); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pControl = (CPDF_FormControl*)m_ControlList.GetAt(i); + if (pControl == NULL) { + continue; + } + CPDF_Dictionary* pWidgetDict = pControl->m_pWidgetDict; + if (pWidgetDict->KeyExist("MaxLen")) { + return pWidgetDict->GetInteger("MaxLen"); + } + } + return 0; + } + return pObj->GetInteger(); +} +int CPDF_FormField::CountSelectedItems() { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (pValue == NULL) { + pValue = FPDF_GetFieldAttr(m_pDict, "I"); if (pValue == NULL) { - pValue = FPDF_GetFieldAttr(m_pDict, "I"); - if (pValue == NULL) { - return -1; - } - } - if (pValue->GetType() == PDFOBJ_NUMBER) { - return pValue->GetInteger(); - } - CFX_WideString sel_value; - if (pValue->GetType() == PDFOBJ_STRING) { - if (index != 0) { - return -1; - } - sel_value = pValue->GetUnicodeText(); - } else { - if (pValue->GetType() != PDFOBJ_ARRAY) { - return -1; - } - if (index < 0) { - return -1; - } - CPDF_Object* elementValue = ((CPDF_Array*)pValue)->GetElementValue(index); - sel_value = elementValue ? elementValue->GetUnicodeText() : CFX_WideString(); - } - if (index < CountSelectedOptions()) { - int iOptIndex = GetSelectedOptionIndex(index); - CFX_WideString csOpt = GetOptionValue(iOptIndex); - if (csOpt == sel_value) { - return iOptIndex; - } - } - int nOpts = CountOptions(); - for (int i = 0; i < nOpts; i ++) { - if (sel_value == GetOptionValue(i)) { - return i; - } - } - return -1; + return 0; + } + } + if (pValue->GetType() == PDFOBJ_STRING) { + if (pValue->GetString().IsEmpty()) { + return 0; + } + return 1; + } + if (pValue->GetType() == PDFOBJ_NUMBER) { + if (pValue->GetString().IsEmpty()) { + return 0; + } + return 1; + } + if (pValue->GetType() != PDFOBJ_ARRAY) { + return 0; + } + return ((CPDF_Array*)pValue)->GetCount(); } -FX_BOOL CPDF_FormField::ClearSelection(FX_BOOL bNotify) -{ - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = 0; - CFX_WideString csValue; - int iIndex = GetSelectedIndex(0); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - } - if (iRet < 0) { - return FALSE; - } - } - m_pDict->RemoveAt("V"); - m_pDict->RemoveAt("I"); - if (bNotify && m_pForm->m_pFormNotify != NULL) { - if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } - } - if (CPDF_InterForm::m_bUpdateAP) { - UpdateAP(NULL); - } - m_pForm->m_bUpdated = TRUE; - return TRUE; +int CPDF_FormField::GetSelectedIndex(int index) { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (pValue == NULL) { + pValue = FPDF_GetFieldAttr(m_pDict, "I"); + if (pValue == NULL) { + return -1; + } + } + if (pValue->GetType() == PDFOBJ_NUMBER) { + return pValue->GetInteger(); + } + CFX_WideString sel_value; + if (pValue->GetType() == PDFOBJ_STRING) { + if (index != 0) { + return -1; + } + sel_value = pValue->GetUnicodeText(); + } else { + if (pValue->GetType() != PDFOBJ_ARRAY) { + return -1; + } + if (index < 0) { + return -1; + } + CPDF_Object* elementValue = ((CPDF_Array*)pValue)->GetElementValue(index); + sel_value = + elementValue ? elementValue->GetUnicodeText() : CFX_WideString(); + } + if (index < CountSelectedOptions()) { + int iOptIndex = GetSelectedOptionIndex(index); + CFX_WideString csOpt = GetOptionValue(iOptIndex); + if (csOpt == sel_value) { + return iOptIndex; + } + } + int nOpts = CountOptions(); + for (int i = 0; i < nOpts; i++) { + if (sel_value == GetOptionValue(i)) { + return i; + } + } + return -1; } -FX_BOOL CPDF_FormField::IsItemSelected(int index) -{ - ASSERT(GetType() == ComboBox || GetType() == ListBox); - if (index < 0 || index >= CountOptions()) { - return FALSE; - } - if (IsOptionSelected(index)) { - return TRUE; - } - CFX_WideString opt_value = GetOptionValue(index); - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); +FX_BOOL CPDF_FormField::ClearSelection(FX_BOOL bNotify) { + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = 0; + CFX_WideString csValue; + int iIndex = GetSelectedIndex(0); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + } + if (iRet < 0) { + return FALSE; + } + } + m_pDict->RemoveAt("V"); + m_pDict->RemoveAt("I"); + if (bNotify && m_pForm->m_pFormNotify != NULL) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + if (CPDF_InterForm::m_bUpdateAP) { + UpdateAP(NULL); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +FX_BOOL CPDF_FormField::IsItemSelected(int index) { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + if (index < 0 || index >= CountOptions()) { + return FALSE; + } + if (IsOptionSelected(index)) { + return TRUE; + } + CFX_WideString opt_value = GetOptionValue(index); + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (pValue == NULL) { + pValue = FPDF_GetFieldAttr(m_pDict, "I"); if (pValue == NULL) { - pValue = FPDF_GetFieldAttr(m_pDict, "I"); - if (pValue == NULL) { - return FALSE; - } - } - if (pValue->GetType() == PDFOBJ_STRING) { - if (pValue->GetUnicodeText() == opt_value) { - return TRUE; - } - return FALSE; + return FALSE; } - if (pValue->GetType() == PDFOBJ_NUMBER) { - if (pValue->GetString().IsEmpty()) { - return FALSE; - } - if (pValue->GetInteger() == index) { - return TRUE; - } - return FALSE; + } + if (pValue->GetType() == PDFOBJ_STRING) { + if (pValue->GetUnicodeText() == opt_value) { + return TRUE; } - if (pValue->GetType() != PDFOBJ_ARRAY) { - return FALSE; + return FALSE; + } + if (pValue->GetType() == PDFOBJ_NUMBER) { + if (pValue->GetString().IsEmpty()) { + return FALSE; } - CPDF_Array* pArray = (CPDF_Array*)pValue; - int iPos = -1; - for (int j = 0; j < CountSelectedOptions(); j ++) { - if (GetSelectedOptionIndex(j) == index) { - iPos = j; - break; - } + if (pValue->GetInteger() == index) { + return TRUE; } - for (FX_DWORD i = 0; i < pArray->GetCount(); i ++) - if (pArray->GetElementValue(i)->GetUnicodeText() == opt_value && (int)i == iPos) { - return TRUE; - } return FALSE; + } + if (pValue->GetType() != PDFOBJ_ARRAY) { + return FALSE; + } + CPDF_Array* pArray = (CPDF_Array*)pValue; + int iPos = -1; + for (int j = 0; j < CountSelectedOptions(); j++) { + if (GetSelectedOptionIndex(j) == index) { + iPos = j; + break; + } + } + for (FX_DWORD i = 0; i < pArray->GetCount(); i++) + if (pArray->GetElementValue(i)->GetUnicodeText() == opt_value && + (int)i == iPos) { + return TRUE; + } + return FALSE; } -FX_BOOL CPDF_FormField::SetItemSelection(int index, FX_BOOL bSelected, FX_BOOL bNotify) -{ - ASSERT(GetType() == ComboBox || GetType() == ListBox); - if (index < 0 || index >= CountOptions()) { - return FALSE; +FX_BOOL CPDF_FormField::SetItemSelection(int index, + FX_BOOL bSelected, + FX_BOOL bNotify) { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + if (index < 0 || index >= CountOptions()) { + return FALSE; + } + CFX_WideString opt_value = GetOptionValue(index); + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = 0; + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, opt_value); } - CFX_WideString opt_value = GetOptionValue(index); - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = 0; - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, opt_value); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, opt_value); - } - if (iRet < 0) { - return FALSE; - } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, opt_value); } - if (!bSelected) { - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); - if (pValue != NULL) { - if (m_Type == ListBox) { - SelectOption(index, FALSE); - if (pValue->GetType() == PDFOBJ_STRING) { - if (pValue->GetUnicodeText() == opt_value) { - m_pDict->RemoveAt("V"); - } - } else if (pValue->GetType() == PDFOBJ_ARRAY) { - CPDF_Array* pArray = CPDF_Array::Create(); - if (pArray == NULL) { - return FALSE; - } - int iCount = CountOptions(); - for (int i = 0; i < iCount; i ++) { - if (i != index) { - if (IsItemSelected(i)) { - opt_value = GetOptionValue(i); - pArray->AddString(PDF_EncodeText(opt_value)); - } - } - } - if (pArray->GetCount() < 1) { - pArray->Release(); - } else { - m_pDict->SetAt("V", pArray); - } - } - } else if (m_Type == ComboBox) { - m_pDict->RemoveAt("V"); - m_pDict->RemoveAt("I"); - } - } - } else { - if (m_Type == ListBox) { - SelectOption(index, TRUE); - if (!(m_Flags & FORMLIST_MULTISELECT)) { - m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); - } else { - CPDF_Array* pArray = CPDF_Array::Create(); - if (pArray == NULL) { - return FALSE; - } - FX_BOOL bSelected; - int iCount = CountOptions(); - for (int i = 0; i < iCount; i ++) { - if (i != index) { - bSelected = IsItemSelected(i); - } else { - bSelected = TRUE; - } - if (bSelected) { - opt_value = GetOptionValue(i); - pArray->AddString(PDF_EncodeText(opt_value)); - } - } - m_pDict->SetAt("V", pArray); - } - } else if (m_Type == ComboBox) { - m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); - CPDF_Array* pI = CPDF_Array::Create(); - if (pI == NULL) { - return FALSE; + if (iRet < 0) { + return FALSE; + } + } + if (!bSelected) { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "V"); + if (pValue != NULL) { + if (m_Type == ListBox) { + SelectOption(index, FALSE); + if (pValue->GetType() == PDFOBJ_STRING) { + if (pValue->GetUnicodeText() == opt_value) { + m_pDict->RemoveAt("V"); + } + } else if (pValue->GetType() == PDFOBJ_ARRAY) { + CPDF_Array* pArray = CPDF_Array::Create(); + if (pArray == NULL) { + return FALSE; + } + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + if (i != index) { + if (IsItemSelected(i)) { + opt_value = GetOptionValue(i); + pArray->AddString(PDF_EncodeText(opt_value)); + } } - pI->AddInteger(index); - m_pDict->SetAt("I", pI); + } + if (pArray->GetCount() < 1) { + pArray->Release(); + } else { + m_pDict->SetAt("V", pArray); + } } - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); + } else if (m_Type == ComboBox) { + m_pDict->RemoveAt("V"); + m_pDict->RemoveAt("I"); + } + } + } else { + if (m_Type == ListBox) { + SelectOption(index, TRUE); + if (!(m_Flags & FORMLIST_MULTISELECT)) { + m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); + } else { + CPDF_Array* pArray = CPDF_Array::Create(); + if (pArray == NULL) { + return FALSE; } - if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); + FX_BOOL bSelected; + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + if (i != index) { + bSelected = IsItemSelected(i); + } else { + bSelected = TRUE; + } + if (bSelected) { + opt_value = GetOptionValue(i); + pArray->AddString(PDF_EncodeText(opt_value)); + } } - } - if (CPDF_InterForm::m_bUpdateAP) { - UpdateAP(NULL); - } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -FX_BOOL CPDF_FormField::IsItemDefaultSelected(int index) -{ - ASSERT(GetType() == ComboBox || GetType() == ListBox); - if (index < 0 || index >= CountOptions()) { + m_pDict->SetAt("V", pArray); + } + } else if (m_Type == ComboBox) { + m_pDict->SetAtString("V", PDF_EncodeText(opt_value)); + CPDF_Array* pI = CPDF_Array::Create(); + if (pI == NULL) { return FALSE; - } - int iDVIndex = GetDefaultSelectedItem(); - if (iDVIndex < 0) { - return FALSE; - } - return (iDVIndex == index); + } + pI->AddInteger(index); + m_pDict->SetAt("I", pI); + } + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + if (CPDF_InterForm::m_bUpdateAP) { + UpdateAP(NULL); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; } -int CPDF_FormField::GetDefaultSelectedItem() -{ - ASSERT(GetType() == ComboBox || GetType() == ListBox); - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "DV"); - if (pValue == NULL) { - return -1; - } - CFX_WideString csDV = pValue->GetUnicodeText(); - if (csDV.IsEmpty()) { - return -1; - } - int iCount = CountOptions(); - for (int i = 0; i < iCount; i ++) { - if (csDV == GetOptionValue(i)) { - return i; - } - } +FX_BOOL CPDF_FormField::IsItemDefaultSelected(int index) { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + if (index < 0 || index >= CountOptions()) { + return FALSE; + } + int iDVIndex = GetDefaultSelectedItem(); + if (iDVIndex < 0) { + return FALSE; + } + return (iDVIndex == index); +} +int CPDF_FormField::GetDefaultSelectedItem() { + ASSERT(GetType() == ComboBox || GetType() == ListBox); + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "DV"); + if (pValue == NULL) { + return -1; + } + CFX_WideString csDV = pValue->GetUnicodeText(); + if (csDV.IsEmpty()) { return -1; + } + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + if (csDV == GetOptionValue(i)) { + return i; + } + } + return -1; } -void CPDF_FormField::UpdateAP(CPDF_FormControl* pControl) -{ - if (m_Type == PushButton) { - return; - } - if (m_Type == RadioButton || m_Type == CheckBox) { - return; - } - if (!m_pForm->m_bGenerateAP) { - return; - } - for (int i = 0; i < CountControls(); i ++) { - CPDF_FormControl* pControl = GetControl(i); - FPDF_GenerateAP(m_pForm->m_pDocument, pControl->m_pWidgetDict); - } +void CPDF_FormField::UpdateAP(CPDF_FormControl* pControl) { + if (m_Type == PushButton) { + return; + } + if (m_Type == RadioButton || m_Type == CheckBox) { + return; + } + if (!m_pForm->m_bGenerateAP) { + return; + } + for (int i = 0; i < CountControls(); i++) { + CPDF_FormControl* pControl = GetControl(i); + FPDF_GenerateAP(m_pForm->m_pDocument, pControl->m_pWidgetDict); + } } -int CPDF_FormField::CountOptions() -{ - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); - if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { - return 0; - } - return ((CPDF_Array*)pValue)->GetCount(); +int CPDF_FormField::CountOptions() { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); + if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { + return 0; + } + return ((CPDF_Array*)pValue)->GetCount(); } -CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) -{ - CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); - if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { - return CFX_WideString(); - } - CPDF_Object* pOption = ((CPDF_Array*)pValue)->GetElementValue(index); - if (pOption == NULL) { - return CFX_WideString(); - } - if (pOption->GetType() == PDFOBJ_ARRAY) { - pOption = ((CPDF_Array*)pOption)->GetElementValue(sub_index); - } - if (pOption == NULL || pOption->GetType() != PDFOBJ_STRING) { - return CFX_WideString(); - } - return ((CPDF_String*)pOption)->GetUnicodeText(); -} -CFX_WideString CPDF_FormField::GetOptionLabel(int index) -{ - return GetOptionText(index, 1); +CFX_WideString CPDF_FormField::GetOptionText(int index, int sub_index) { + CPDF_Object* pValue = FPDF_GetFieldAttr(m_pDict, "Opt"); + if (pValue == NULL || pValue->GetType() != PDFOBJ_ARRAY) { + return CFX_WideString(); + } + CPDF_Object* pOption = ((CPDF_Array*)pValue)->GetElementValue(index); + if (pOption == NULL) { + return CFX_WideString(); + } + if (pOption->GetType() == PDFOBJ_ARRAY) { + pOption = ((CPDF_Array*)pOption)->GetElementValue(sub_index); + } + if (pOption == NULL || pOption->GetType() != PDFOBJ_STRING) { + return CFX_WideString(); + } + return ((CPDF_String*)pOption)->GetUnicodeText(); } -CFX_WideString CPDF_FormField::GetOptionValue(int index) -{ - return GetOptionText(index, 0); +CFX_WideString CPDF_FormField::GetOptionLabel(int index) { + return GetOptionText(index, 1); } -int CPDF_FormField::FindOption(CFX_WideString csOptLabel) -{ - int iCount = CountOptions(); - for (int i = 0; i < iCount; i ++) { - CFX_WideString csValue = GetOptionValue(i); - if (csValue == csOptLabel) { - return i; - } - } - return -1; +CFX_WideString CPDF_FormField::GetOptionValue(int index) { + return GetOptionText(index, 0); } -int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue, int iStartIndex) -{ - if (iStartIndex < 0) { - iStartIndex = 0; - } - int iCount = CountOptions(); - for (; iStartIndex < iCount; iStartIndex ++) { - CFX_WideString csValue = GetOptionValue(iStartIndex); - if (csValue == csOptValue) { - return iStartIndex; - } - } - return -1; +int CPDF_FormField::FindOption(CFX_WideString csOptLabel) { + int iCount = CountOptions(); + for (int i = 0; i < iCount; i++) { + CFX_WideString csValue = GetOptionValue(i); + if (csValue == csOptLabel) { + return i; + } + } + return -1; } -FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, FX_BOOL bChecked, FX_BOOL bNotify) -{ - ASSERT(GetType() == CheckBox || GetType() == RadioButton); - CPDF_FormControl* pControl = GetControl(iControlIndex); - if (pControl == NULL) { - return FALSE; - } - if (!bChecked && pControl->IsChecked() == bChecked) { - return FALSE; - } - CFX_ByteArray statusArray; - if (bNotify && m_pForm->m_pFormNotify != NULL) { - SaveCheckedFieldStatus(this, statusArray); - } - CFX_WideString csWExport = pControl->GetExportValue(); - CFX_ByteString csBExport = PDF_EncodeText(csWExport); - int iCount = CountControls(); - FX_BOOL bUnison = PDF_FormField_IsUnison(this); - for (int i = 0; i < iCount; i ++) { - CPDF_FormControl* pCtrl = GetControl(i); - if (bUnison) { - CFX_WideString csEValue = pCtrl->GetExportValue(); - if (csEValue == csWExport) { - if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { - pCtrl->CheckControl(bChecked); - } else if (bChecked) { - pCtrl->CheckControl(FALSE); - } - } else if (bChecked) { - pCtrl->CheckControl(FALSE); - } - } else { - if (i == iControlIndex) { - pCtrl->CheckControl(bChecked); - } else if (bChecked) { - pCtrl->CheckControl(FALSE); - } - } - } - CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pDict, "Opt"); - if (pOpt == NULL || pOpt->GetType() != PDFOBJ_ARRAY) { - if (bChecked) { - m_pDict->SetAtName("V", csBExport); - } else { - CFX_ByteString csV; - CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); - if (pV != NULL) { - csV = pV->GetString(); - } - if (csV == csBExport) { - m_pDict->SetAtName("V", "Off"); - } - } - } else if (bChecked) { - CFX_ByteString csIndex; - csIndex.Format("%d", iControlIndex); - m_pDict->SetAtName("V", csIndex); - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); - } - m_pForm->m_bUpdated = TRUE; - return TRUE; +int CPDF_FormField::FindOptionValue(const CFX_WideString& csOptValue, + int iStartIndex) { + if (iStartIndex < 0) { + iStartIndex = 0; + } + int iCount = CountOptions(); + for (; iStartIndex < iCount; iStartIndex++) { + CFX_WideString csValue = GetOptionValue(iStartIndex); + if (csValue == csOptValue) { + return iStartIndex; + } + } + return -1; } -CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) -{ - ASSERT(GetType() == CheckBox || GetType() == RadioButton); - CFX_WideString csExport = L"Off"; - FX_BOOL bChecked; - int iCount = CountControls(); - for (int i = 0; i < iCount; i ++) { - CPDF_FormControl* pControl = GetControl(i); - if (bDefault) { - bChecked = pControl->IsDefaultChecked(); - } else { - bChecked = pControl->IsChecked(); - } - if (bChecked) { - csExport = pControl->GetExportValue(); - break; +FX_BOOL CPDF_FormField::CheckControl(int iControlIndex, + FX_BOOL bChecked, + FX_BOOL bNotify) { + ASSERT(GetType() == CheckBox || GetType() == RadioButton); + CPDF_FormControl* pControl = GetControl(iControlIndex); + if (pControl == NULL) { + return FALSE; + } + if (!bChecked && pControl->IsChecked() == bChecked) { + return FALSE; + } + CFX_ByteArray statusArray; + if (bNotify && m_pForm->m_pFormNotify != NULL) { + SaveCheckedFieldStatus(this, statusArray); + } + CFX_WideString csWExport = pControl->GetExportValue(); + CFX_ByteString csBExport = PDF_EncodeText(csWExport); + int iCount = CountControls(); + FX_BOOL bUnison = PDF_FormField_IsUnison(this); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pCtrl = GetControl(i); + if (bUnison) { + CFX_WideString csEValue = pCtrl->GetExportValue(); + if (csEValue == csWExport) { + if (pCtrl->GetOnStateName() == pControl->GetOnStateName()) { + pCtrl->CheckControl(bChecked); + } else if (bChecked) { + pCtrl->CheckControl(FALSE); } - } - return csExport; + } else if (bChecked) { + pCtrl->CheckControl(FALSE); + } + } else { + if (i == iControlIndex) { + pCtrl->CheckControl(bChecked); + } else if (bChecked) { + pCtrl->CheckControl(FALSE); + } + } + } + CPDF_Object* pOpt = FPDF_GetFieldAttr(m_pDict, "Opt"); + if (pOpt == NULL || pOpt->GetType() != PDFOBJ_ARRAY) { + if (bChecked) { + m_pDict->SetAtName("V", csBExport); + } else { + CFX_ByteString csV; + CPDF_Object* pV = FPDF_GetFieldAttr(m_pDict, "V"); + if (pV != NULL) { + csV = pV->GetString(); + } + if (csV == csBExport) { + m_pDict->SetAtName("V", "Off"); + } + } + } else if (bChecked) { + CFX_ByteString csIndex; + csIndex.Format("%d", iControlIndex); + m_pDict->SetAtName("V", csIndex); + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; } -FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, FX_BOOL bDefault, FX_BOOL bNotify) -{ - ASSERT(GetType() == CheckBox || GetType() == RadioButton); - CFX_ByteArray statusArray; - if (bNotify && m_pForm->m_pFormNotify != NULL) { - SaveCheckedFieldStatus(this, statusArray); - } - int iCount = CountControls(); - for (int i = 0; i < iCount; i ++) { - CPDF_FormControl* pControl = GetControl(i); - CFX_WideString csExport = pControl->GetExportValue(); - if (csExport == value) { - if (bDefault) { - } else { - CheckControl(GetControlIndex(pControl), TRUE); - } - break; - } else { - if (bDefault) { - } else { - CheckControl(GetControlIndex(pControl), FALSE); - } - } +CFX_WideString CPDF_FormField::GetCheckValue(FX_BOOL bDefault) { + ASSERT(GetType() == CheckBox || GetType() == RadioButton); + CFX_WideString csExport = L"Off"; + FX_BOOL bChecked; + int iCount = CountControls(); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pControl = GetControl(i); + if (bDefault) { + bChecked = pControl->IsDefaultChecked(); + } else { + bChecked = pControl->IsChecked(); } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); + if (bChecked) { + csExport = pControl->GetExportValue(); + break; } - m_pForm->m_bUpdated = TRUE; - return TRUE; + } + return csExport; } -int CPDF_FormField::GetTopVisibleIndex() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); - if (pObj == NULL) { - return 0; - } - return pObj->GetInteger(); +FX_BOOL CPDF_FormField::SetCheckValue(const CFX_WideString& value, + FX_BOOL bDefault, + FX_BOOL bNotify) { + ASSERT(GetType() == CheckBox || GetType() == RadioButton); + CFX_ByteArray statusArray; + if (bNotify && m_pForm->m_pFormNotify != NULL) { + SaveCheckedFieldStatus(this, statusArray); + } + int iCount = CountControls(); + for (int i = 0; i < iCount; i++) { + CPDF_FormControl* pControl = GetControl(i); + CFX_WideString csExport = pControl->GetExportValue(); + if (csExport == value) { + if (bDefault) { + } else { + CheckControl(GetControlIndex(pControl), TRUE); + } + break; + } else { + if (bDefault) { + } else { + CheckControl(GetControlIndex(pControl), FALSE); + } + } + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + m_pForm->m_pFormNotify->AfterCheckedStatusChange(this, statusArray); + } + m_pForm->m_bUpdated = TRUE; + return TRUE; } -int CPDF_FormField::CountSelectedOptions() -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); - if (pObj == NULL) { - return 0; - } - CPDF_Array* pArray = pObj->GetArray(); - if (pArray == NULL) { - return 0; - } - return (int)pArray->GetCount(); +int CPDF_FormField::GetTopVisibleIndex() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "TI"); + if (pObj == NULL) { + return 0; + } + return pObj->GetInteger(); } -int CPDF_FormField::GetSelectedOptionIndex(int index) -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); - if (pObj == NULL) { - return -1; - } - CPDF_Array* pArray = pObj->GetArray(); - if (pArray == NULL) { - return -1; - } - int iCount = (int)pArray->GetCount(); - if (iCount > 0 && index < iCount) { - return pArray->GetInteger(index); - } +int CPDF_FormField::CountSelectedOptions() { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); + if (pObj == NULL) { + return 0; + } + CPDF_Array* pArray = pObj->GetArray(); + if (pArray == NULL) { + return 0; + } + return (int)pArray->GetCount(); +} +int CPDF_FormField::GetSelectedOptionIndex(int index) { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); + if (pObj == NULL) { + return -1; + } + CPDF_Array* pArray = pObj->GetArray(); + if (pArray == NULL) { return -1; + } + int iCount = (int)pArray->GetCount(); + if (iCount > 0 && index < iCount) { + return pArray->GetInteger(index); + } + return -1; } -FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) -{ - CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); - if (pObj == NULL) { - return FALSE; - } - CPDF_Array* pArray = pObj->GetArray(); - if (pArray == NULL) { - return FALSE; - } - int iCount = (int)pArray->GetCount(); - for (int i = 0; i < iCount; i ++) { - if (pArray->GetInteger(i) == iOptIndex) { - return TRUE; - } - } +FX_BOOL CPDF_FormField::IsOptionSelected(int iOptIndex) { + CPDF_Object* pObj = FPDF_GetFieldAttr(m_pDict, "I"); + if (pObj == NULL) { return FALSE; + } + CPDF_Array* pArray = pObj->GetArray(); + if (pArray == NULL) { + return FALSE; + } + int iCount = (int)pArray->GetCount(); + for (int i = 0; i < iCount; i++) { + if (pArray->GetInteger(i) == iOptIndex) { + return TRUE; + } + } + return FALSE; } -FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, FX_BOOL bSelected, FX_BOOL bNotify) -{ - CPDF_Array* pArray = m_pDict->GetArray("I"); - if (pArray == NULL) { - if (!bSelected) { - return TRUE; - } - pArray = CPDF_Array::Create(); - if (pArray == NULL) { - return FALSE; - } - m_pDict->SetAt("I", pArray); - } - FX_BOOL bReturn = FALSE; - for (int i = 0; i < (int)pArray->GetCount(); i ++) { - int iFind = pArray->GetInteger(i); - if (iFind == iOptIndex) { - if (bSelected) { - return TRUE; - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = 0; - CFX_WideString csValue = GetOptionLabel(iOptIndex); - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - } - if (iRet < 0) { - return FALSE; - } - } - pArray->RemoveAt(i); - bReturn = TRUE; - break; - } else if (iFind > iOptIndex) { - if (!bSelected) { - continue; - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - int iRet = 0; - CFX_WideString csValue = GetOptionLabel(iOptIndex); - if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); - } - if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); - } - if (iRet < 0) { - return FALSE; - } - } - CPDF_Number* pNum = CPDF_Number::Create(iOptIndex); - if (pNum == NULL) { - return FALSE; - } - pArray->InsertAt(i, pNum); - bReturn = TRUE; - break; - } - } - if (!bReturn) { - if (bSelected) { - pArray->AddInteger(iOptIndex); - } - if (pArray->GetCount() == 0) { - m_pDict->RemoveAt("I"); - } - } - if (bNotify && m_pForm->m_pFormNotify != NULL) { - if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); - } - if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); - } +FX_BOOL CPDF_FormField::SelectOption(int iOptIndex, + FX_BOOL bSelected, + FX_BOOL bNotify) { + CPDF_Array* pArray = m_pDict->GetArray("I"); + if (pArray == NULL) { + if (!bSelected) { + return TRUE; } - m_pForm->m_bUpdated = TRUE; - return TRUE; -} -FX_BOOL CPDF_FormField::ClearSelectedOptions(FX_BOOL bNotify) -{ - if (bNotify && m_pForm->m_pFormNotify != NULL) { + pArray = CPDF_Array::Create(); + if (pArray == NULL) { + return FALSE; + } + m_pDict->SetAt("I", pArray); + } + FX_BOOL bReturn = FALSE; + for (int i = 0; i < (int)pArray->GetCount(); i++) { + int iFind = pArray->GetInteger(i); + if (iFind == iOptIndex) { + if (bSelected) { + return TRUE; + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { int iRet = 0; - CFX_WideString csValue; - int iIndex = GetSelectedIndex(0); - if (iIndex >= 0) { - csValue = GetOptionLabel(iIndex); - } + CFX_WideString csValue = GetOptionLabel(iOptIndex); if (GetType() == ListBox) { - iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); } if (GetType() == ComboBox) { - iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); } if (iRet < 0) { - return FALSE; + return FALSE; } - } - m_pDict->RemoveAt("I"); - if (bNotify && m_pForm->m_pFormNotify != NULL) { + } + pArray->RemoveAt(i); + bReturn = TRUE; + break; + } else if (iFind > iOptIndex) { + if (!bSelected) { + continue; + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = 0; + CFX_WideString csValue = GetOptionLabel(iOptIndex); if (GetType() == ListBox) { - m_pForm->m_pFormNotify->AfterSelectionChange(this); + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); } if (GetType() == ComboBox) { - m_pForm->m_pFormNotify->AfterValueChange(this); + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); } - } - m_pForm->m_bUpdated = TRUE; - return TRUE; + if (iRet < 0) { + return FALSE; + } + } + CPDF_Number* pNum = CPDF_Number::Create(iOptIndex); + if (pNum == NULL) { + return FALSE; + } + pArray->InsertAt(i, pNum); + bReturn = TRUE; + break; + } + } + if (!bReturn) { + if (bSelected) { + pArray->AddInteger(iOptIndex); + } + if (pArray->GetCount() == 0) { + m_pDict->RemoveAt("I"); + } + } + if (bNotify && m_pForm->m_pFormNotify != NULL) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + m_pForm->m_bUpdated = TRUE; + return TRUE; } -void CPDF_FormField::LoadDA() -{ - CFX_ByteString DA; - if (CPDF_Object* pObj_t = FPDF_GetFieldAttr(m_pDict, "DA")) { - DA = pObj_t->GetString(); - } - if (DA.IsEmpty() && m_pForm->m_pFormDict) { - DA = m_pForm->m_pFormDict->GetString("DA"); - } - if (DA.IsEmpty()) { - return; - } - CPDF_SimpleParser syntax(DA); - syntax.FindTagParam("Tf", 2); - CFX_ByteString font_name = syntax.GetWord(); - CPDF_Dictionary* pFontDict = NULL; - if (m_pForm->m_pFormDict && m_pForm->m_pFormDict->GetDict("DR") && - m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font") ) - pFontDict = m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font")->GetDict(font_name); +FX_BOOL CPDF_FormField::ClearSelectedOptions(FX_BOOL bNotify) { + if (bNotify && m_pForm->m_pFormNotify != NULL) { + int iRet = 0; + CFX_WideString csValue; + int iIndex = GetSelectedIndex(0); + if (iIndex >= 0) { + csValue = GetOptionLabel(iIndex); + } + if (GetType() == ListBox) { + iRet = m_pForm->m_pFormNotify->BeforeSelectionChange(this, csValue); + } + if (GetType() == ComboBox) { + iRet = m_pForm->m_pFormNotify->BeforeValueChange(this, csValue); + } + if (iRet < 0) { + return FALSE; + } + } + m_pDict->RemoveAt("I"); + if (bNotify && m_pForm->m_pFormNotify != NULL) { + if (GetType() == ListBox) { + m_pForm->m_pFormNotify->AfterSelectionChange(this); + } + if (GetType() == ComboBox) { + m_pForm->m_pFormNotify->AfterValueChange(this); + } + } + m_pForm->m_bUpdated = TRUE; + return TRUE; +} +void CPDF_FormField::LoadDA() { + CFX_ByteString DA; + if (CPDF_Object* pObj_t = FPDF_GetFieldAttr(m_pDict, "DA")) { + DA = pObj_t->GetString(); + } + if (DA.IsEmpty() && m_pForm->m_pFormDict) { + DA = m_pForm->m_pFormDict->GetString("DA"); + } + if (DA.IsEmpty()) { + return; + } + CPDF_SimpleParser syntax(DA); + syntax.FindTagParam("Tf", 2); + CFX_ByteString font_name = syntax.GetWord(); + CPDF_Dictionary* pFontDict = NULL; + if (m_pForm->m_pFormDict && m_pForm->m_pFormDict->GetDict("DR") && + m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font")) + pFontDict = m_pForm->m_pFormDict->GetDict("DR")->GetDict("Font")->GetDict( + font_name); - if (pFontDict == NULL) { - return; - } - m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); - m_FontSize = FX_atof(syntax.GetWord()); + if (pFontDict == NULL) { + return; + } + m_pFont = m_pForm->m_pDocument->LoadFont(pFontDict); + m_FontSize = FX_atof(syntax.GetWord()); } -- cgit v1.2.3