Change FPDFPage_TransFormWithClip() to take const pointers. In-params should be const. Also add some basic tests. Change-Id: Ie0ab72270430e094087981b7443c32a97e84ccfa Reviewed-on: https://pdfium-review.googlesource.com/c/47533 Commit-Queue: Lei Zhang <thestig@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org>
diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp index 0a406cf..7b63e1a 100644 --- a/fpdfsdk/fpdf_transformpage.cpp +++ b/fpdfsdk/fpdf_transformpage.cpp
@@ -158,8 +158,8 @@ FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_TransFormWithClip(FPDF_PAGE page, - FS_MATRIX* matrix, - FS_RECTF* clipRect) { + const FS_MATRIX* matrix, + const FS_RECTF* clipRect) { if (!matrix && !clipRect) return false;
diff --git a/fpdfsdk/fpdf_transformpage_embeddertest.cpp b/fpdfsdk/fpdf_transformpage_embeddertest.cpp index 8fa3370..2619747 100644 --- a/fpdfsdk/fpdf_transformpage_embeddertest.cpp +++ b/fpdfsdk/fpdf_transformpage_embeddertest.cpp
@@ -208,3 +208,24 @@ FPDF_DestroyClipPath(clip); UnloadPage(page); } + +TEST_F(FPDFTransformEmbedderTest, TransFormWithClip) { + const FS_MATRIX half_matrix{0.5, 0, 0, 0.5, 0, 0}; + const FS_RECTF clip_rect = {0.0f, 0.0f, 20.0f, 10.0f}; + + ASSERT_TRUE(OpenDocument("hello_world.pdf")); + + FPDF_PAGE page = LoadPage(0); + ASSERT_TRUE(page); + + EXPECT_FALSE(FPDFPage_TransFormWithClip(nullptr, nullptr, nullptr)); + EXPECT_FALSE(FPDFPage_TransFormWithClip(nullptr, &half_matrix, nullptr)); + EXPECT_FALSE(FPDFPage_TransFormWithClip(nullptr, nullptr, &clip_rect)); + EXPECT_FALSE(FPDFPage_TransFormWithClip(nullptr, &half_matrix, &clip_rect)); + EXPECT_FALSE(FPDFPage_TransFormWithClip(page, nullptr, nullptr)); + EXPECT_TRUE(FPDFPage_TransFormWithClip(page, &half_matrix, nullptr)); + EXPECT_TRUE(FPDFPage_TransFormWithClip(page, nullptr, &clip_rect)); + EXPECT_TRUE(FPDFPage_TransFormWithClip(page, &half_matrix, &clip_rect)); + + UnloadPage(page); +}
diff --git a/public/fpdf_transformpage.h b/public/fpdf_transformpage.h index 899e5c6..a2eb6b0 100644 --- a/public/fpdf_transformpage.h +++ b/public/fpdf_transformpage.h
@@ -196,8 +196,8 @@ */ FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_TransFormWithClip(FPDF_PAGE page, - FS_MATRIX* matrix, - FS_RECTF* clipRect); + const FS_MATRIX* matrix, + const FS_RECTF* clipRect); /** * Transform (scale, rotate, shear, move) the clip path of page object.