[Libreoffice-commits] core.git: vcl/qa

Miklos Vajna vmiklos at collabora.co.uk
Thu Oct 19 10:05:39 UTC 2017


 vcl/qa/cppunit/pdfexport/pdfexport.cxx |   53 ++++++++++++++++++++++++++-------
 1 file changed, 42 insertions(+), 11 deletions(-)

New commits:
commit f1cd64ec65253c1f84500b0af89c5b2990374a5d
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Thu Oct 19 09:08:32 2017 +0200

    CppunitTest_vcl_pdfexport: now we can assert the path segments
    
    Instead of the bounding box workaround before commit
    5352dfbbe22b59983e1b91366908724138b9783a (pdfium: update to 3235,
    2017-10-12).
    
    Also stop using the deprecated FPDFPage_CountObject().
    
    Change-Id: Iff04b5d5af492b564d7e4e918fb69aa881791b88
    Reviewed-on: https://gerrit.libreoffice.org/43523
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/vcl/qa/cppunit/pdfexport/pdfexport.cxx b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
index fecdee085f31..a904a5dc638d 100644
--- a/vcl/qa/cppunit/pdfexport/pdfexport.cxx
+++ b/vcl/qa/cppunit/pdfexport/pdfexport.cxx
@@ -250,7 +250,7 @@ void PdfExportTest::testTdf105461()
     CPPUNIT_ASSERT(mpPdfPage);
 
     // Make sure there is a filled rectangle inside.
-    int nPageObjectCount = FPDFPage_CountObject(mpPdfPage);
+    int nPageObjectCount = FPDFPage_CountObjects(mpPdfPage);
     int nYellowPathCount = 0;
     for (int i = 0; i < nPageObjectCount; ++i)
     {
@@ -306,7 +306,7 @@ void PdfExportTest::testTdf107868()
     CPPUNIT_ASSERT(mpPdfPage);
 
     // Make sure there is no filled rectangle inside.
-    int nPageObjectCount = FPDFPage_CountObject(mpPdfPage);
+    int nPageObjectCount = FPDFPage_CountObjects(mpPdfPage);
     int nWhitePathCount = 0;
     for (int i = 0; i < nPageObjectCount; ++i)
     {
@@ -703,7 +703,7 @@ void PdfExportTest::testTdf108963()
     CPPUNIT_ASSERT(mpPdfPage);
 
     // Make sure there is a filled rectangle inside.
-    int nPageObjectCount = FPDFPage_CountObject(mpPdfPage);
+    int nPageObjectCount = FPDFPage_CountObjects(mpPdfPage);
     int nYellowPathCount = 0;
     for (int i = 0; i < nPageObjectCount; ++i)
     {
@@ -716,14 +716,45 @@ void PdfExportTest::testTdf108963()
         if (RGB_COLORDATA(nRed, nGreen, nBlue) == COL_YELLOW)
         {
             ++nYellowPathCount;
-            float fLeft = 0, fBottom = 0, fRight = 0, fTop = 0;
-            FPDFPageObj_GetBounds(pPdfPageObject, &fLeft, &fBottom, &fRight, &fTop);
-            int nWidth = fRight - fLeft;
-            int nHeight = fTop - fBottom;
-            // This was 37 and 20, i.e. the bounding rectangle was much smaller
-            // as the highlight polygon wasn't rotated.
-            CPPUNIT_ASSERT_EQUAL(42, nWidth);
-            CPPUNIT_ASSERT_EQUAL(39, nHeight);
+            // The path described a yellow rectangle, but it was not rotated.
+            int nSegments = FPDFPath_CountSegments(pPdfPageObject);
+            CPPUNIT_ASSERT_EQUAL(5, nSegments);
+            FPDF_PATHSEGMENT pSegment = FPDFPath_GetPathSegment(pPdfPageObject, 0);
+            CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_MOVETO, FPDFPathSegment_GetType(pSegment));
+            float fX = 0;
+            float fY = 0;
+            FPDFPathSegment_GetPoint(pSegment, &fX, &fY);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(245.4), fX);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(244.2), fY);
+            CPPUNIT_ASSERT(!FPDFPathSegment_GetClose(pSegment));
+
+            pSegment = FPDFPath_GetPathSegment(pPdfPageObject, 1);
+            CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, FPDFPathSegment_GetType(pSegment));
+            FPDFPathSegment_GetPoint(pSegment, &fX, &fY);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(275.1), fX);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(267.6), fY);
+            CPPUNIT_ASSERT(!FPDFPathSegment_GetClose(pSegment));
+
+            pSegment = FPDFPath_GetPathSegment(pPdfPageObject, 2);
+            CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, FPDFPathSegment_GetType(pSegment));
+            FPDFPathSegment_GetPoint(pSegment, &fX, &fY);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(287.5), fX);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(251.8), fY);
+            CPPUNIT_ASSERT(!FPDFPathSegment_GetClose(pSegment));
+
+            pSegment = FPDFPath_GetPathSegment(pPdfPageObject, 3);
+            CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, FPDFPathSegment_GetType(pSegment));
+            FPDFPathSegment_GetPoint(pSegment, &fX, &fY);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(257.8), fX);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(228.4), fY);
+            CPPUNIT_ASSERT(!FPDFPathSegment_GetClose(pSegment));
+
+            pSegment = FPDFPath_GetPathSegment(pPdfPageObject, 4);
+            CPPUNIT_ASSERT_EQUAL(FPDF_SEGMENT_LINETO, FPDFPathSegment_GetType(pSegment));
+            FPDFPathSegment_GetPoint(pSegment, &fX, &fY);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(245.4), fX);
+            CPPUNIT_ASSERT_EQUAL(static_cast<float>(244.2), fY);
+            CPPUNIT_ASSERT(FPDFPathSegment_GetClose(pSegment));
         }
     }
 


More information about the Libreoffice-commits mailing list