Author: jghali
Date: Fri May  4 22:19:56 2018
New Revision: 22520

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=22520
Log:
#15301: Rotated PDF Form fields are not positioned correctly in final PDF

Modified:
    trunk/Scribus/scribus/pdflib_core.cpp

Modified: trunk/Scribus/scribus/pdflib_core.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=22520&path=/trunk/Scribus/scribus/pdflib_core.cpp
==============================================================================
--- trunk/Scribus/scribus/pdflib_core.cpp       (original)
+++ trunk/Scribus/scribus/pdflib_core.cpp       Fri May  4 22:19:56 2018
@@ -8824,7 +8824,14 @@
        if (ite->annotation().borderColor() != CommonStrings::None)
                PutDoc("/BC [ "+SetColor(ite->annotation().borderColor(), 
100)+" ] ");
        if (ite->rotation() != 0)
-               PutDoc("/R "+Pdf::toPdf((abs(static_cast<int>(ite->rotation())) 
/ 90)*90)+" ");
+       {
+               int rot = -(static_cast<int>(ite->rotation()) / 90) * 90;
+               while (rot < 0)
+                       rot += 360;
+               while (rot >= 360)
+                       rot -= 360;
+               PutDoc("/R " + Pdf::toPdf(rot) + " ");
+       }
        PutDoc(">>\n");
        QByteArray onState = Pdf::toName(ite->itemName().replace(".", "_" ));
        if (ite->annotation().IsChk())
@@ -8855,7 +8862,13 @@
                        PutDoc("/AA " + Pdf::toPdf(AActionObj) + " 0 R\n");
                }
        }
-       switch (((abs(static_cast<int>(ite->rotation())) / 90)*90))
+
+       int rotation = -(static_cast<int>(ite->rotation()) / 90) * 90;
+       while (rotation < 0)
+               rotation += 360;
+       while (rotation >= 360)
+               rotation -= 360;
+       switch (rotation)
        {
                case 0:
                        break;
@@ -9203,7 +9216,14 @@
                                        break;
                        }
                        if (ite->rotation() != 0)
-                               PutDoc("/R 
"+Pdf::toPdf((abs(static_cast<int>(ite->rotation())) / 90)*90)+" ");
+                       {
+                               int rot = -(static_cast<int>(ite->rotation()) / 
90) * 90;
+                               while (rot < 0)
+                                       rot += 360;
+                               while (rot >= 360)
+                                       rot -= 360;
+                               PutDoc("/R " + Pdf::toPdf(rot) + " ");
+                       }
                        PutDoc(">>\n");
                        if ((ite->annotation().ActionType() != 
Annotation::Action_None) || (ite->annotation().AAact()))
                        {
@@ -9285,7 +9305,13 @@
                }
        if ((ite->annotation().Type() < 2) || ((ite->annotation().Type() > 
Annotation::Listbox) && (ite->annotation().Type() < Annotation::Annot3D)))
                PutDoc("/Border [ 0 0 0 ]\n");
-       switch (((abs(static_cast<int>(ite->rotation())) / 90)*90))
+
+       int rotation = -(static_cast<int>(ite->rotation()) / 90) * 90;
+       while (rotation < 0)
+               rotation += 360;
+       while (rotation >= 360)
+               rotation -= 360;
+       switch (rotation)
        {
                case 0:
                        break;


_______________________________________________
scribus-commit mailing list
[email protected]
http://lists.scribus.net/mailman/listinfo/scribus-commit

Reply via email to