diff options
author | Henrique Nakashima <hnakashima@chromium.org> | 2018-04-17 20:34:38 +0000 |
---|---|---|
committer | Chromium commit bot <commit-bot@chromium.org> | 2018-04-17 20:34:38 +0000 |
commit | aed62531a9b08deb236cc423dc27dbe0810d6d1a (patch) | |
tree | 6a46e06d0fdf97341c2282a30852b0d394a405ff | |
parent | 884b33e78f8f12e143a0ebef725cb6a4b784ce43 (diff) | |
download | pdfium-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.cpp | 3 | ||||
-rw-r--r-- | fpdfsdk/fpdf_editpage.cpp | 15 | ||||
-rw-r--r-- | fpdfsdk/fpdf_view_c_api_test.c | 1 | ||||
-rw-r--r-- | public/fpdf_edit.h | 9 |
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. |