[poppler] qt4/src

Albert Astals Cid aacid at kemper.freedesktop.org
Fri Jun 8 16:49:30 PDT 2012


 qt4/src/poppler-annotation.cc |   16 ++++++++++++++--
 1 file changed, 14 insertions(+), 2 deletions(-)

New commits:
commit 6e3503b5591b105fa92e6cc6568b8819f6acd625
Author: Fabio D'Urso <fabiodurso at hotmail.it>
Date:   Thu May 24 23:17:27 2012 +0200

    qt4: Keep page rotation into account when normalizing annotation coords
    
    If the page is rotated by 90 or 270 degrees, width and height need to be swapped

diff --git a/qt4/src/poppler-annotation.cc b/qt4/src/poppler-annotation.cc
index c9a2850..f6341b0 100644
--- a/qt4/src/poppler-annotation.cc
+++ b/qt4/src/poppler-annotation.cc
@@ -203,10 +203,22 @@ void AnnotationPrivate::fillMTX(double MTX[6]) const
     // build a normalized transform matrix for this page at 100% scale
     GfxState * gfxState = new GfxState( 72.0, 72.0, pdfPage->getCropBox(), pdfPage->getRotate(), gTrue );
     double * gfxCTM = gfxState->getCTM();
+
+    double w = pdfPage->getCropWidth();
+    double h = pdfPage->getCropHeight();
+
+    // Swap width and height if the page is rotated landscape or seascape
+    if ( pdfPage->getRotate() == 90 || pdfPage->getRotate() == 270 )
+    {
+        double t = w;
+        w = h;
+        h = t;
+    }
+
     for ( int i = 0; i < 6; i+=2 )
     {
-        MTX[i] = gfxCTM[i] / pdfPage->getCropWidth();
-        MTX[i+1] = gfxCTM[i+1] / pdfPage->getCropHeight();
+        MTX[i] = gfxCTM[i] / w;
+        MTX[i+1] = gfxCTM[i+1] / h;
     }
     delete gfxState;
 }


More information about the poppler mailing list