Author: jghali
Date: Tue Apr  7 14:57:17 2020
New Revision: 23562

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23562
Log:
Simplify writing of matrices in 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=23562&path=/trunk/Scribus/scribus/pdflib_core.cpp
==============================================================================
--- trunk/Scribus/scribus/pdflib_core.cpp       (original)
+++ trunk/Scribus/scribus/pdflib_core.cpp       Tue Apr  7 14:57:17 2020
@@ -109,6 +109,11 @@
        if (fabs(c) < 0.0000001)
                v = 0.0;
        return QByteArray::number(v, 'f', 5);
+}
+
+static inline QByteArray TransformToStr(const QTransform& tr)
+{
+       return FToStr(tr.m11()) + " " + FToStr(tr.m12()) + " " + 
FToStr(tr.m21()) + " " + FToStr(tr.m22()) + " " + FToStr(tr.dx()) + " " + 
FToStr(tr.dy());
 }
 
 class PdfPainter: public TextLayoutPainter
@@ -3201,7 +3206,7 @@
                                                trans.scale(ite->width() / 
pat.width, ite->height() / pat.height);
                                                trans.translate(0.0, 
-ite->height());
                                //              
trans.translate(pat.items.at(0)->gXpos, -pat.items.at(0)->gYpos);
-                                               PutPage(FToStr(trans.m11()) + " 
" + FToStr(trans.m12()) + " " + FToStr(trans.m21()) + " " + FToStr(trans.m22()) 
+ " " + FToStr(trans.dx()) + " " + FToStr(trans.dy()) + " cm\n");
+                                               PutPage(TransformToStr(trans) + 
" cm\n");
                                                for (int em = 0; em < 
pat.items.count(); ++em)
                                                {
                                                        PageItem* embedded = 
pat.items.at(em);
@@ -3234,7 +3239,7 @@
                                                QTransform trans;
                                                trans.scale(ite->width() / 
ite->groupWidth, ite->height() / ite->groupHeight);
                                                trans.translate(0.0, 
-ite->height());
-                                               PutPage(FToStr(trans.m11()) + " 
" + FToStr(trans.m12()) + " " + FToStr(trans.m21()) + " " + FToStr(trans.m22()) 
+ " " + FToStr(trans.dx()) + " " + FToStr(trans.dy()) + " cm\n");
+                                               PutPage(TransformToStr(trans) + 
" cm\n");
                                                
groupStackPos.push(QPointF(ite->xPos(), ite->height()));
                                                for (int em = 0; em < 
ite->groupItemList.count(); ++em)
                                                {
@@ -5132,7 +5137,7 @@
                                trans.scale(ite->width() / pat.width, 
ite->height() / pat.height);
                                trans.translate(0.0, -ite->height());
        //                      trans.translate(pat.items.at(0)->gXpos, 
-pat.items.at(0)->gYpos);
-                               tmp += FToStr(trans.m11()) + " " + 
FToStr(trans.m12()) + " " + FToStr(trans.m21()) + " " + FToStr(trans.m22()) + " 
" + FToStr(trans.dx()) + " " + FToStr(trans.dy()) + " cm\n";
+                               tmp += TransformToStr(trans) + " cm\n";
                                groupStackPos.push(QPointF(0, ite->height()));
                                for (int em = 0; em < pat.items.count(); ++em)
                                {
@@ -5167,7 +5172,7 @@
                                QTransform trans;
                                trans.scale(ite->width() / ite->groupWidth, 
ite->height() / ite->groupHeight);
                                trans.translate(0.0, -ite->height());
-                               tmp += FToStr(trans.m11()) + " " + 
FToStr(trans.m12()) + " " + FToStr(trans.m21()) + " " + FToStr(trans.m22()) + " 
" + FToStr(trans.dx()) + " " + FToStr(trans.dy()) + " cm\n";
+                               tmp += TransformToStr(trans) + " cm\n";
                                groupStackPos.push(QPointF(ite->xPos(), 
ite->height()));
                                for (int em = 0; em < 
ite->groupItemList.count(); ++em)
                                {
@@ -5465,7 +5470,7 @@
                QTransform base;
                base.translate(currPoint.x(), -currPoint.y());
                base.rotate(-currAngle);
-               tmp += FToStr(base.m11()) + " " + FToStr(base.m12()) + " " + 
FToStr(base.m21()) + " " + FToStr(base.m22()) + " " + FToStr(base.dx()) + " " + 
FToStr(base.dy()) + " cm\n";
+               tmp += TransformToStr(base) +  " cm\n";
                QTransform trans;
                trans.translate(0.0, -ite->patternStrokeOffsetY);
                trans.rotate(-ite->patternStrokeRotation);
@@ -5482,7 +5487,7 @@
                        trans.translate(0, pat.height);
                        trans.scale(1, -1);
                }
-               tmp += FToStr(trans.m11()) + " " + FToStr(trans.m12()) + " " + 
FToStr(trans.m21()) + " " + FToStr(trans.m22()) + " " + FToStr(trans.dx()) + " 
" + FToStr(trans.dy()) + " cm\n";
+               tmp += TransformToStr(trans) + " cm\n";
                for (int em = 0; em < pat.items.count(); ++em)
                {
                        PageItem* embedded = pat.items.at(em);
@@ -6270,7 +6275,7 @@
                writer.startObj(patObject);
                PutDoc("<<\n/Type /Pattern\n");
                PutDoc("/PatternType 2\n");
-               PutDoc("/Matrix [" + FToStr(mpa.m11()) + " " + 
FToStr(mpa.m12()) + " " + FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + 
FToStr(mpa.dx()) + " " + FToStr(mpa.dy()) + "]\n");
+               PutDoc("/Matrix [" + TransformToStr(mpa) + "]\n");
                PutDoc("/Shading\n");
                PutDoc("<<\n");
                if ((GType == 1) || (GType == 4))
@@ -6348,14 +6353,14 @@
                        QTransform mpa;
                        mpa.translate(0, currItem->height());
                        mpa.rotate(-currItem->rotation());
-                       stre += FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " 
" + FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " 
+ FToStr(mpa.dy()) + " cm\n";
+                       stre += TransformToStr(mpa) + " cm\n";
                }
                else if (currItem->itemType() == PageItem::Symbol)
                {
                        QTransform mpa;
                        mpa.translate(0, currItem->height() * scaleY);
                        mpa.scale(scaleX, scaleY);
-                       stre += FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " 
" + FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " 
+ FToStr(mpa.dy()) + " cm\n";
+                       stre += TransformToStr(mpa) + " cm\n";
                }
                stre += SetClipPath(currItem) + "h\n";
                stre += FToStr(fabs(currItem->lineWidth())) + " w\n";
@@ -6418,7 +6423,7 @@
                        QTransform mpa;
                        mpa.translate(0, currItem->height() * scaleY);
                        mpa.scale(scaleX, scaleY);
-                       stre += FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " 
" + FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " 
+ FToStr(mpa.dy()) + " cm\n";
+                       stre += TransformToStr(mpa) + " cm\n";
                }
                stre += SetClipPath(currItem) + "h\n";
                stre += FToStr(fabs(currItem->lineWidth())) + " w\n";
@@ -6480,13 +6485,13 @@
        output += SetPathAndClip(currItem);
        QTransform mpa;
        mpa.translate(currItem->width() / 2.0, -currItem->height() / 2.0);
-       output += FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " " + 
FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " + 
FToStr(mpa.dy()) + " cm\n";
+       output += TransformToStr(mpa) + " cm\n";
        double lineLen = sqrt((currItem->width() / 2.0) * (currItem->width() / 
2.0) + (currItem->height() / 2.0) * (currItem->height() / 2.0));
        double dist = 0.0;
        output += "q\n";
        QTransform mp;
        mp.rotate(currItem->hatchAngle);
-       output += FToStr(mp.m11()) + " " + FToStr(mp.m12()) + " " + 
FToStr(mp.m21()) + " " + FToStr(mp.m22()) + " " + FToStr(mp.dx()) + " " + 
FToStr(mp.dy()) + " cm\n";
+       output += TransformToStr(mp) + " cm\n";
        while (dist < lineLen)
        {
                output += FToStr(-lineLen) + " " + FToStr(dist) + " m\n";
@@ -6507,7 +6512,7 @@
                output += "q\n";
                QTransform mp;
                mp.rotate(currItem->hatchAngle + 90);
-               output += FToStr(mp.m11()) + " " + FToStr(mp.m12()) + " " + 
FToStr(mp.m21()) + " " + FToStr(mp.m22()) + " " + FToStr(mp.dx()) + " " + 
FToStr(mp.dy()) + " cm\n";
+               output += TransformToStr(mp) + " cm\n";
                while (dist < lineLen)
                {
                        output += FToStr(-lineLen) + " " + FToStr(dist) + " 
m\n";
@@ -6529,7 +6534,7 @@
                output += "q\n";
                QTransform mp;
                mp.rotate(currItem->hatchAngle - 45);
-               output += FToStr(mp.m11()) + " " + FToStr(mp.m12()) + " " + 
FToStr(mp.m21()) + " " + FToStr(mp.m22()) + " " + FToStr(mp.dx()) + " " + 
FToStr(mp.dy()) + " cm\n";
+               output += TransformToStr(mp) +  " cm\n";
                while (dist < lineLen)
                {
                        output += FToStr(-lineLen) + " " + FToStr(dist * 
sqrt(2.0)) + " m\n";
@@ -6677,7 +6682,7 @@
                mpa.scale(-1, 1);
        if (mirrorY)
                mpa.scale(1, -1);
-       PutDoc("/Matrix [" + FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " " 
+ FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " + 
FToStr(mpa.dy()) + "]\n");
+       PutDoc("/Matrix [" + TransformToStr(mpa) + "]\n");
        PutDoc("/XStep " + FToStr(pat->width) + "\n");
        PutDoc("/YStep " + FToStr(pat->height) + "\n");
        PutDoc("/Resources ");
@@ -7020,7 +7025,7 @@
                if (patternStackPos.count() != 0)
                        mpa.translate(patternStackPos.top().x(), 
patternStackPos.top().y());
        }
-       PutDoc("/Matrix [" + FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " " 
+ FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " + 
FToStr(mpa.dy()) + "]\n");
+       PutDoc("/Matrix [" + TransformToStr(mpa) + "]\n");
        PutDoc("/Shading " + Pdf::toPdf(shadeObject) + " 0 R\n");
        PutDoc(">>");
        writer.endObj(patObject);
@@ -7347,7 +7352,7 @@
                if (patternStackPos.count() != 0)
                        mpa.translate(patternStackPos.top().x(), 
patternStackPos.top().y());
        }
-       PutDoc("/Matrix [" + FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " " 
+ FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " + 
FToStr(mpa.dy()) + "]\n");
+       PutDoc("/Matrix [" + TransformToStr(mpa) + "]\n");
        PutDoc("/Shading " + Pdf::toPdf(shadeObject) + " 0 R\n");
        PutDoc(">>");
        writer.endObj(patObject);
@@ -7780,7 +7785,7 @@
                if (patternStackPos.count() != 0)
                        mpa.translate(patternStackPos.top().x(), 
patternStackPos.top().y());
        }
-       PutDoc("/Matrix [" + FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " " 
+ FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " + 
FToStr(mpa.dy()) + "]\n");
+       PutDoc("/Matrix [" + TransformToStr(mpa) + "]\n");
        PutDoc("/Shading " + Pdf::toPdf(shadeObject) + " 0 R\n");
        PutDoc(">>");
        writer.endObj(patObject);
@@ -8100,7 +8105,7 @@
                if (patternStackPos.count() != 0)
                        mpa.translate(patternStackPos.top().x(), 
patternStackPos.top().y());
        }
-       PutDoc("/Matrix [" + FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " " 
+ FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " + 
FToStr(mpa.dy()) + "]\n");
+       PutDoc("/Matrix [" + TransformToStr(mpa) + "]\n");
        PutDoc("/Shading " + Pdf::toPdf(shadeObject) + " 0 R\n");
        PutDoc(">>");
        writer.endObj(patObject);
@@ -8331,7 +8336,7 @@
                writer.startObj(patObject);
                PutDoc("<<\n/Type /Pattern\n");
                PutDoc("/PatternType 2\n");
-               PutDoc("/Matrix [" + FToStr(mpM.m11()) + " " + 
FToStr(mpM.m12()) + " " + FToStr(mpM.m21()) + " " + FToStr(mpM.m22()) + " " + 
FToStr(mpM.dx()) + " " + FToStr(mpM.dy()) + "]\n");
+               PutDoc("/Matrix [" + TransformToStr(mpM) + "]\n");
                PutDoc("/Shading\n");
                PutDoc("<<\n");
                if (GType == 6)
@@ -8434,7 +8439,7 @@
        writer.startObj(patObject);
        PutDoc("<<\n/Type /Pattern\n");
        PutDoc("/PatternType 2\n");
-       PutDoc("/Matrix [" + FToStr(mpa.m11()) + " " + FToStr(mpa.m12()) + " " 
+ FToStr(mpa.m21()) + " " + FToStr(mpa.m22()) + " " + FToStr(mpa.dx()) + " " + 
FToStr(mpa.dy()) + "]\n");
+       PutDoc("/Matrix [" + TransformToStr(mpa) +  "]\n");
        PutDoc("/Shading\n");
        PutDoc("<<\n");
        if (GType == 6)


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

Reply via email to