Create API to get PageObject mark parameters.
New calls added in this cl:
- FPDFPageObjMark_GetParamKey
- FPDFPageObjMark_GetParamValueType
- FPDFPageObjMark_GetParamIntValue
Bug: pdfium:1037
Change-Id: Iedb74ddbf8a5483de62094ec295dadd6367d5175
Reviewed-on: https://pdfium-review.googlesource.com/30912
Reviewed-by: dsinclair <dsinclair@chromium.org>
Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 7a8bbabf2..241025f 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -99,6 +99,28 @@
}
}
+const std::pair<const ByteString, std::unique_ptr<CPDF_Object>>*
+GetMarkParamPairAtIndex(FPDF_PAGEOBJECTMARK mark, unsigned long index) {
+ if (!mark)
+ return nullptr;
+
+ const CPDF_ContentMarkItem* pMarkItem =
+ CPDFContentMarkItemFromFPDFPageObjectMark(mark);
+
+ const CPDF_Dictionary* pParams = pMarkItem->GetParam();
+ if (!pParams)
+ return nullptr;
+
+ for (auto& it : *pParams) {
+ if (index == 0)
+ return ⁢
+
+ --index;
+ }
+
+ return nullptr;
+}
+
} // namespace
FPDF_EXPORT FPDF_DOCUMENT FPDF_CALLCONV FPDF_CreateNewDocument() {
@@ -284,6 +306,39 @@
return pParams->GetCount();
}
+FPDF_EXPORT unsigned long FPDF_CALLCONV
+FPDFPageObjMark_GetParamKey(FPDF_PAGEOBJECTMARK mark,
+ unsigned long index,
+ void* buffer,
+ unsigned long buflen) {
+ auto* param_pair = GetMarkParamPairAtIndex(mark, index);
+ if (!param_pair)
+ return 0;
+
+ return Utf16EncodeMaybeCopyAndReturnLength(
+ WideString::FromUTF8(param_pair->first.AsStringView()), buffer, buflen);
+}
+
+FPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV
+FPDFPageObjMark_GetParamValueType(FPDF_PAGEOBJECTMARK mark,
+ unsigned long index) {
+ auto* param_pair = GetMarkParamPairAtIndex(mark, index);
+ if (!param_pair)
+ return FPDF_OBJECT_UNKNOWN;
+
+ return param_pair->second->GetType();
+}
+
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFPageObjMark_GetParamIntValue(FPDF_PAGEOBJECTMARK mark,
+ unsigned long index) {
+ auto* param_pair = GetMarkParamPairAtIndex(mark, index);
+ if (!param_pair)
+ return 0;
+
+ return param_pair->second->GetInteger();
+}
+
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) {
if (!pageObject)