[poppler] poppler/Annot.cc

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Apr 6 20:34:34 UTC 2022


 poppler/Annot.cc |   45 ++++++++++++++++++++++-----------------------
 1 file changed, 22 insertions(+), 23 deletions(-)

New commits:
commit fae5ec7071c928a6163924ecdc6719806710b975
Author: Albert Astals Cid <aacid at kde.org>
Date:   Thu Mar 24 17:43:39 2022 +0100

    AnnotAppearanceBuilder::drawText: Make dx, dy const

diff --git a/poppler/Annot.cc b/poppler/Annot.cc
index db84027f..4d13a374 100644
--- a/poppler/Annot.cc
+++ b/poppler/Annot.cc
@@ -4511,7 +4511,6 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const Form *form, c
 
     std::vector<std::string> daToks;
     const GfxFont *font;
-    double dx, dy;
     double fontSize;
     int tfPos, tmPos;
     bool freeText = false; // true if text should be freed before return
@@ -4601,28 +4600,28 @@ bool AnnotAppearanceBuilder::drawText(const GooString *text, const Form *form, c
         appearBuf->append("/Tx BMC\n");
     }
     appearBuf->append("q\n");
-    const int rot = appearCharacs ? appearCharacs->getRotation() : 0;
-    switch (rot) {
-    case 90:
-        appearBuf->appendf("0 1 -1 0 {0:.2f} 0 cm\n", rect->x2 - rect->x1);
-        dx = rect->y2 - rect->y1;
-        dy = rect->x2 - rect->x1;
-        break;
-    case 180:
-        appearBuf->appendf("-1 0 0 -1 {0:.2f} {1:.2f} cm\n", rect->x2 - rect->x1, rect->y2 - rect->y1);
-        dx = rect->x2 - rect->y2;
-        dy = rect->y2 - rect->y1;
-        break;
-    case 270:
-        appearBuf->appendf("0 -1 1 0 0 {0:.2f} cm\n", rect->y2 - rect->y1);
-        dx = rect->y2 - rect->y1;
-        dy = rect->x2 - rect->x1;
-        break;
-    default: // assume rot == 0
-        dx = rect->x2 - rect->x1;
-        dy = rect->y2 - rect->y1;
-        break;
-    }
+    auto calculateDxDy = [this, appearCharacs, rect]() -> std::tuple<double, double> {
+        const int rot = appearCharacs ? appearCharacs->getRotation() : 0;
+        switch (rot) {
+        case 90:
+            appearBuf->appendf("0 1 -1 0 {0:.2f} 0 cm\n", rect->x2 - rect->x1);
+            return { rect->y2 - rect->y1, rect->x2 - rect->x1 };
+
+        case 180:
+            appearBuf->appendf("-1 0 0 -1 {0:.2f} {1:.2f} cm\n", rect->x2 - rect->x1, rect->y2 - rect->y1);
+            return { rect->x2 - rect->y2, rect->y2 - rect->y1 };
+
+        case 270:
+            appearBuf->appendf("0 -1 1 0 0 {0:.2f} cm\n", rect->y2 - rect->y1);
+            return { rect->y2 - rect->y1, rect->x2 - rect->x1 };
+
+        default: // assume rot == 0
+            return { rect->x2 - rect->x1, rect->y2 - rect->y1 };
+        }
+    };
+    const auto dxdy = calculateDxDy();
+    const double dx = std::get<0>(dxdy);
+    const double dy = std::get<1>(dxdy);
     appearBuf->append("BT\n");
     // multi-line text
     if (flags & MultilineDrawTextFlag) {


More information about the poppler mailing list