You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pdfbox.apache.org by ti...@apache.org on 2016/07/25 15:59:25 UTC

svn commit: r1754031 - /pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java

Author: tilman
Date: Mon Jul 25 15:59:25 2016
New Revision: 1754031

URL: http://svn.apache.org/viewvc?rev=1754031&view=rev
Log:
PDFBOX-2941: include cropbox and /Rotate value to PDF coordinate calculation

Modified:
    pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java

Modified: pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java
URL: http://svn.apache.org/viewvc/pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java?rev=1754031&r1=1754030&r2=1754031&view=diff
==============================================================================
--- pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java (original)
+++ pdfbox/trunk/debugger/src/main/java/org/apache/pdfbox/debugger/pagepane/PagePane.java Mon Jul 25 15:59:25 2016
@@ -57,14 +57,12 @@ public class PagePane implements ActionL
     private ZoomMenu zoomMenu;
     private RotationMenu rotationMenu;
     private final JLabel statuslabel;
-    private final float height, width;
+    private final PDPage page;
 
-    public PagePane(PDDocument document, COSDictionary page, JLabel statuslabel)
+    public PagePane(PDDocument document, COSDictionary pageDict, JLabel statuslabel)
     {
-        PDPage pdPage = new PDPage(page);
-        pageIndex = document.getPages().indexOf(pdPage);
-        height = pdPage.getCropBox().getHeight();
-        width  = pdPage.getCropBox().getWidth();
+        page = new PDPage(pageDict);
+        pageIndex = document.getPages().indexOf(page);
         this.document = document;
         this.statuslabel = statuslabel;
         initUI();
@@ -156,28 +154,32 @@ public class PagePane implements ActionL
     @Override
     public void mouseMoved(MouseEvent e)
     {
+        float height = page.getCropBox().getHeight();
+        float width  = page.getCropBox().getWidth();
+        float offsetX = page.getCropBox().getLowerLeftX();
+        float offsetY = page.getCropBox().getLowerLeftY();
         float zoomScale = zoomMenu.getPageZoomScale();
         float x = e.getX() / zoomScale;
         float y = e.getY() / zoomScale;
         int x1, y1;
-        switch (RotationMenu.getRotationDegrees())
+        switch ((RotationMenu.getRotationDegrees() + page.getRotation()) % 360)
         {
-            case 0:
-            default:
-                x1 = (int) x;
-                y1 = (int) (height - y);
-                break;
             case 90:
-                x1 = (int) y;
-                y1 = (int) x;
+                x1 = (int) (y + offsetX);
+                y1 = (int) (x + offsetY);
                 break;
             case 180:
-                x1 = (int) (width - x);
-                y1 = (int) y;
+                x1 = (int) (width - x + offsetX);
+                y1 = (int) (y - offsetY);
                 break;
             case 270:
-                x1 = (int) (width - y);
-                y1 = (int) (height - x);
+                x1 = (int) (width - y + offsetX);
+                y1 = (int) (height - x + offsetY);
+                break;
+            case 0:
+            default:
+                x1 = (int) (x + offsetX);
+                y1 = (int) (height - y + offsetY);
                 break;
         }
         statuslabel.setText(x1 + "," + y1);