]> mj.ucw.cz Git - paperjam.git/commitdiff
Page rotation is now a part of pdf-tools
authorMartin Mares <mj@ucw.cz>
Sat, 20 Aug 2022 11:13:39 +0000 (13:13 +0200)
committerMartin Mares <mj@ucw.cz>
Sun, 21 Aug 2022 11:18:46 +0000 (13:18 +0200)
cmds.cc
pdf-tools.cc
pdf-tools.h

diff --git a/cmds.cc b/cmds.cc
index 7fad3028cccd0d462b3ba2d7cd72c7d258319c1a..719058ad367b70e02daaf38e452cf829ee7e74c8 100644 (file)
--- a/cmds.cc
+++ b/cmds.cc
@@ -483,27 +483,7 @@ public:
     }
   page *process_page(page *p) override
     {
-      pdf_matrix m;
-      switch (deg)
-       {
-       case 0:
-         break;
-       case 90:
-         m.rotate_deg(-90);
-         m.shift(0, p->width);
-         break;
-       case 180:
-         m.rotate_deg(180);
-         m.shift(p->width, p->height);
-         break;
-       case 270:
-         m.rotate_deg(90);
-         m.shift(p->height, 0);
-         break;
-       default:
-         abort();
-       }
-      return new xform_page(p, m);
+      return new xform_page(p, pdf_rotation_matrix(deg, p->width, p->height));
     }
 };
 
index 0871637b34044bfc99ce31c6790260ab962b3799..0d74ca37b3a5c8aaac19a298a0b0dbebe706e91b 100644 (file)
@@ -1,7 +1,7 @@
 /*
  *     Auxiliary functions for processing PDF files
  *
- *     (c) 2018 Martin Mares <mj@ucw.cz>
+ *     (c) 2018--2022 Martin Mares <mj@ucw.cz>
  */
 
 #include <cstdio>
@@ -247,3 +247,29 @@ string pdf_coord(double x, uint digits)
                buf[--n] = 0;
        return buf;
 }
+
+/*** Rotation matrix construction ***/
+
+pdf_matrix pdf_rotation_matrix(int deg, double width, double height)
+{
+      pdf_matrix m;
+      switch (deg) {
+             case 0:
+                     break;
+             case 90:
+                     m.rotate_deg(-90);
+                     m.shift(0, width);
+                     break;
+             case 180:
+                     m.rotate_deg(180);
+                     m.shift(width, height);
+                     break;
+             case 270:
+                     m.rotate_deg(90);
+                     m.shift(height, 0);
+                     break;
+             default:
+                     abort();
+      }
+      return m;
+}
index 46430f4bd426d9f9835b5db7b6ba1ec6127dfa14..ea7b92055c1e3e58a11b4e37910ea1ec26e3b6e2 100644 (file)
@@ -143,5 +143,6 @@ private:
 QPDFObjectHandle unicode_string(std::string s);
 QPDFObjectHandle page_to_xobject(QPDF *out, QPDFObjectHandle page);
 string pdf_coord(double x, uint digits=1);
+pdf_matrix pdf_rotation_matrix(int deg, double width, double height);
 
 #endif