From 07b4727a34d2f4aff851f0dc420faf617caca220 Mon Sep 17 00:00:00 2001 From: Shirleen Lou Date: Sat, 18 Nov 2017 00:13:45 +0000 Subject: Make clip optional in FPDFPage_TransFormWithClip. Add checks for matrix and clipRect in function FPDFPage_TransFormWithClip. If both are null, abort transformation. If either is null, skip that particular transaction. Change-Id: I65611508c064c0b929a11eace99ad532d3402138 Reviewed-on: https://pdfium-review.googlesource.com/18710 Reviewed-by: Lei Zhang Commit-Queue: Lei Zhang --- fpdfsdk/fpdf_transformpage.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'fpdfsdk') diff --git a/fpdfsdk/fpdf_transformpage.cpp b/fpdfsdk/fpdf_transformpage.cpp index b607dffc4e..4f29fd69d6 100644 --- a/fpdfsdk/fpdf_transformpage.cpp +++ b/fpdfsdk/fpdf_transformpage.cpp @@ -106,19 +106,27 @@ FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_TransFormWithClip(FPDF_PAGE page, FS_MATRIX* matrix, FS_RECTF* clipRect) { + if (!matrix && !clipRect) + return false; + CPDF_Page* pPage = CPDFPageFromFPDFPage(page); if (!pPage) return false; std::ostringstream textBuf; textBuf << "q "; - CFX_FloatRect rect = CFXFloatRectFromFSRECTF(*clipRect); - rect.Normalize(); - textBuf << ByteString::Format("%f %f %f %f re W* n ", rect.left, rect.bottom, - rect.Width(), rect.Height()); - textBuf << ByteString::Format("%f %f %f %f %f %f cm ", matrix->a, matrix->b, - matrix->c, matrix->d, matrix->e, matrix->f); + if (clipRect) { + CFX_FloatRect rect = CFXFloatRectFromFSRECTF(*clipRect); + rect.Normalize(); + + textBuf << ByteString::Format("%f %f %f %f re W* n ", rect.left, + rect.bottom, rect.Width(), rect.Height()); + } + if (matrix) { + textBuf << ByteString::Format("%f %f %f %f %f %f cm ", matrix->a, matrix->b, + matrix->c, matrix->d, matrix->e, matrix->f); + } CPDF_Dictionary* pPageDict = pPage->m_pFormDict.Get(); CPDF_Object* pContentObj = GetPageContent(pPageDict); -- cgit v1.2.3