summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHenrique Nakashima <hnakashima@chromium.org>2018-04-17 20:34:38 +0000
committerChromium commit bot <commit-bot@chromium.org>2018-04-17 20:34:38 +0000
commitaed62531a9b08deb236cc423dc27dbe0810d6d1a (patch)
tree6a46e06d0fdf97341c2282a30852b0d394a405ff
parent884b33e78f8f12e143a0ebef725cb6a4b784ce43 (diff)
downloadpdfium-aed62531a9b08deb236cc423dc27dbe0810d6d1a.tar.xz
Create new FPDFPageObjMark_CountParams() API.
Bug: pdfium:1037 Change-Id: I1b7035eb199f9dd1d730b0b1112aa455f0fabcc2 Reviewed-on: https://pdfium-review.googlesource.com/30870 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Henrique Nakashima <hnakashima@chromium.org>
-rw-r--r--fpdfsdk/fpdf_edit_embeddertest.cpp3
-rw-r--r--fpdfsdk/fpdf_editpage.cpp15
-rw-r--r--fpdfsdk/fpdf_view_c_api_test.c1
-rw-r--r--public/fpdf_edit.h9
4 files changed, 28 insertions, 0 deletions
diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index 80191556f3..8f54bf8eab 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -468,11 +468,14 @@ TEST_F(FPDFEditEmbeddertest, RemoveMarkedObjectsPrime) {
GetPlatformWString(reinterpret_cast<unsigned short*>(buffer));
if (name == L"Prime") {
prime_count++;
+ EXPECT_EQ(0, FPDFPageObjMark_CountParams(mark));
primes.push_back(page_object);
} else if (name == L"Square") {
square_count++;
+ EXPECT_EQ(1, FPDFPageObjMark_CountParams(mark));
} else if (name == L"GreaterThanTen") {
greater_than_ten_count++;
+ EXPECT_EQ(0, FPDFPageObjMark_CountParams(mark));
} else {
FAIL();
}
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 20d88942c8..7a8bbabf2d 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -269,6 +269,21 @@ FPDFPageObjMark_GetName(FPDF_PAGEOBJECTMARK mark,
buflen);
}
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFPageObjMark_CountParams(FPDF_PAGEOBJECTMARK mark) {
+ if (!mark)
+ return -1;
+
+ const CPDF_ContentMarkItem* pMarkItem =
+ CPDFContentMarkItemFromFPDFPageObjectMark(mark);
+
+ const CPDF_Dictionary* pParams = pMarkItem->GetParam();
+ if (!pParams)
+ return 0;
+
+ return pParams->GetCount();
+}
+
FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject) {
if (!pageObject)
diff --git a/fpdfsdk/fpdf_view_c_api_test.c b/fpdfsdk/fpdf_view_c_api_test.c
index 114693c43e..e23efa2ff2 100644
--- a/fpdfsdk/fpdf_view_c_api_test.c
+++ b/fpdfsdk/fpdf_view_c_api_test.c
@@ -148,6 +148,7 @@ int CheckPDFiumCApi() {
CHK(FPDFPageObj_CountMarks);
CHK(FPDFPageObj_GetMark);
CHK(FPDFPageObjMark_GetName);
+ CHK(FPDFPageObjMark_CountParams);
CHK(FPDFImageObj_LoadJpegFile);
CHK(FPDFImageObj_LoadJpegFileInline);
CHK(FPDFImageObj_SetMatrix);
diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
index 7c37b83aa9..4968a7f003 100644
--- a/public/fpdf_edit.h
+++ b/public/fpdf_edit.h
@@ -315,6 +315,15 @@ FPDFPageObjMark_GetName(FPDF_PAGEOBJECTMARK mark,
void* buffer,
unsigned long buflen);
+// Get number of key/value pair parameters in |mark|.
+//
+// mark - handle to a content mark.
+//
+// Returns the number of key/value pair parameters |mark|, or -1 in case of
+// failure.
+FPDF_EXPORT int FPDF_CALLCONV
+FPDFPageObjMark_CountParams(FPDF_PAGEOBJECTMARK mark);
+
// Load an image from a JPEG image file and then set it into |image_object|.
//
// pages - pointer to the start of all loaded pages, may be NULL.