Index: core/fpdfdoc/doc_formcontrol.cpp |
diff --git a/core/fpdfdoc/doc_formcontrol.cpp b/core/fpdfdoc/doc_formcontrol.cpp |
index aa6cf986f162bb3a17abb41b2d668d590ed42a0a..9b3cf1e5de70bfeb6e64c27cedf86e91753ead74 100644 |
--- a/core/fpdfdoc/doc_formcontrol.cpp |
+++ b/core/fpdfdoc/doc_formcontrol.cpp |
@@ -13,34 +13,43 @@ |
#include "core/fpdfapi/fpdf_render/include/cpdf_rendercontext.h" |
#include "core/fpdfdoc/include/fpdf_doc.h" |
+namespace { |
+ |
+const FX_CHAR* const g_sHighlightingMode[] = { |
+ // Must match order of HighlightingMode enum. |
+ "N", "I", "O", "P", "T"}; |
+ |
+} // namespace |
+ |
CPDF_FormControl::CPDF_FormControl(CPDF_FormField* pField, |
- CPDF_Dictionary* pWidgetDict) { |
- m_pField = pField; |
- m_pWidgetDict = pWidgetDict; |
- m_pForm = m_pField->m_pForm; |
-} |
+ CPDF_Dictionary* pWidgetDict) |
+ : m_pField(pField), |
+ m_pWidgetDict(pWidgetDict), |
+ m_pForm(m_pField->m_pForm) {} |
+ |
CFX_FloatRect CPDF_FormControl::GetRect() const { |
return m_pWidgetDict->GetRectBy("Rect"); |
} |
+ |
CFX_ByteString CPDF_FormControl::GetOnStateName() const { |
ASSERT(GetType() == CPDF_FormField::CheckBox || |
GetType() == CPDF_FormField::RadioButton); |
CFX_ByteString csOn; |
CPDF_Dictionary* pAP = m_pWidgetDict->GetDictBy("AP"); |
- if (!pAP) { |
+ if (!pAP) |
return csOn; |
- } |
+ |
CPDF_Dictionary* pN = pAP->GetDictBy("N"); |
- if (!pN) { |
+ if (!pN) |
return csOn; |
- } |
+ |
for (const auto& it : *pN) { |
- if (it.first != "Off") { |
+ if (it.first != "Off") |
return it.first; |
- } |
} |
return CFX_ByteString(); |
} |
+ |
void CPDF_FormControl::SetOnStateName(const CFX_ByteString& csOn) { |
ASSERT(GetType() == CPDF_FormField::CheckBox || |
GetType() == CPDF_FormField::RadioButton); |
@@ -99,7 +108,8 @@ CFX_ByteString CPDF_FormControl::GetCheckedAPState() { |
csOn = "Yes"; |
return csOn; |
} |
-CFX_WideString CPDF_FormControl::GetExportValue() { |
+ |
+CFX_WideString CPDF_FormControl::GetExportValue() const { |
ASSERT(GetType() == CPDF_FormField::CheckBox || |
GetType() == CPDF_FormField::RadioButton); |
CFX_ByteString csOn = GetOnStateName(); |
@@ -111,11 +121,9 @@ CFX_WideString CPDF_FormControl::GetExportValue() { |
csOn = pArray->GetStringAt(iIndex); |
} |
} |
- if (csOn.IsEmpty()) { |
+ if (csOn.IsEmpty()) |
csOn = "Yes"; |
- } |
- CFX_WideString csWOn = PDF_DecodeText(csOn); |
- return csWOn; |
+ return PDF_DecodeText(csOn); |
} |
bool CPDF_FormControl::IsChecked() const { |
@@ -144,29 +152,25 @@ void CPDF_FormControl::CheckControl(FX_BOOL bChecked) { |
CFX_ByteString csOn = GetOnStateName(); |
CFX_ByteString csOldAS = m_pWidgetDict->GetStringBy("AS", "Off"); |
CFX_ByteString csAS = "Off"; |
- if (bChecked) { |
+ if (bChecked) |
csAS = csOn; |
- } |
- if (csOldAS == csAS) { |
+ if (csOldAS == csAS) |
return; |
- } |
m_pWidgetDict->SetAtName("AS", csAS); |
- m_pForm->m_bUpdated = TRUE; |
} |
-CPDF_Stream* FPDFDOC_GetAnnotAP(CPDF_Dictionary* pAnnotDict, |
- CPDF_Annot::AppearanceMode mode); |
+ |
void CPDF_FormControl::DrawControl(CFX_RenderDevice* pDevice, |
CFX_Matrix* pMatrix, |
CPDF_Page* pPage, |
CPDF_Annot::AppearanceMode mode, |
const CPDF_RenderOptions* pOptions) { |
- if (m_pWidgetDict->GetIntegerBy("F") & ANNOTFLAG_HIDDEN) { |
+ if (m_pWidgetDict->GetIntegerBy("F") & ANNOTFLAG_HIDDEN) |
return; |
- } |
+ |
CPDF_Stream* pStream = FPDFDOC_GetAnnotAP(m_pWidgetDict, mode); |
- if (!pStream) { |
+ if (!pStream) |
return; |
- } |
+ |
CFX_FloatRect form_bbox = pStream->GetDict()->GetRectBy("BBox"); |
CFX_Matrix form_matrix = pStream->GetDict()->GetMatrixBy("Matrix"); |
form_matrix.TransformRect(form_bbox); |
@@ -181,15 +185,13 @@ void CPDF_FormControl::DrawControl(CFX_RenderDevice* pDevice, |
context.AppendLayer(&form, &matrix); |
context.Render(pDevice, pOptions, nullptr); |
} |
-static const FX_CHAR* const g_sHighlightingMode[] = { |
- // Must match order of HiglightingMode enum. |
- "N", "I", "O", "P", "T", nullptr}; |
+ |
CPDF_FormControl::HighlightingMode CPDF_FormControl::GetHighlightingMode() { |
- if (!m_pWidgetDict) { |
+ if (!m_pWidgetDict) |
return Invert; |
- } |
+ |
CFX_ByteString csH = m_pWidgetDict->GetStringBy("H", "I"); |
- for (int i = 0; g_sHighlightingMode[i]; ++i) { |
+ for (size_t i = 0; i < FX_ArraySize(g_sHighlightingMode); ++i) { |
if (csH == g_sHighlightingMode[i]) |
return static_cast<HighlightingMode>(i); |
} |
@@ -241,16 +243,16 @@ int CPDF_FormControl::GetTextPosition() { |
} |
CPDF_Action CPDF_FormControl::GetAction() { |
- if (!m_pWidgetDict) { |
+ if (!m_pWidgetDict) |
return CPDF_Action(); |
- } |
- if (m_pWidgetDict->KeyExist("A")) { |
+ |
+ if (m_pWidgetDict->KeyExist("A")) |
return CPDF_Action(m_pWidgetDict->GetDictBy("A")); |
- } |
+ |
CPDF_Object* pObj = FPDF_GetFieldAttr(m_pField->m_pDict, "A"); |
- if (!pObj) { |
+ if (!pObj) |
return CPDF_Action(); |
- } |
+ |
return CPDF_Action(pObj->GetDict()); |
} |