Author: jghali
Date: Wed Mar 18 22:25:47 2020
New Revision: 23513

URL: http://scribus.net/websvn/listing.php?repname=Scribus&sc=1&rev=23513
Log:
Simplify ScImgDataLoader_KRA::loadPicture() thanks to previous commit

Modified:
    trunk/Scribus/scribus/imagedataloaders/scimgdataloader_kra.cpp

Modified: trunk/Scribus/scribus/imagedataloaders/scimgdataloader_kra.cpp
URL: 
http://scribus.net/websvn/diff.php?repname=Scribus&rev=23513&path=/trunk/Scribus/scribus/imagedataloaders/scimgdataloader_kra.cpp
==============================================================================
--- trunk/Scribus/scribus/imagedataloaders/scimgdataloader_kra.cpp      
(original)
+++ trunk/Scribus/scribus/imagedataloaders/scimgdataloader_kra.cpp      Wed Mar 
18 22:25:47 2020
@@ -8,6 +8,8 @@
 #include <QFileInfo>
 #include <QByteArray>
 #include <QList>
+#include <QScopedPointer>
+
 #include "scimgdataloader_kra.h"
 #include "util_formats.h"
 
@@ -41,65 +43,25 @@
        m_imageInfoRecord.exifDataValid = false;
        m_imageInfoRecord.layerInfo.clear();
        m_imageInfoRecord.PDSpathData.clear();
-       ScZipHandler *uz = new ScZipHandler();
 
+       QScopedPointer<ScZipHandler> uz(new ScZipHandler());
        if (!uz->open(fn))
-       {
-               delete uz;
                return false;
-       }
 
        // if thumbnail is set to true, this function is loading the thumbnail 
image into the preview area
        // if thumbnail is set to false, this function is loading the main image
 
        if (thumbnail)
        {
-               if (uz->contains("preview.png"))
-               {
-                       QByteArray im;
+               if (!uz->contains("preview.png"))
+                       return false;
 
-                       if (uz->read("preview.png", im))
-                       {
-                               m_image = QImage::fromData(im);
+               QByteArray im;
+               if (!uz->read("preview.png", im))
+                       return false;
 
-                               if (uz->contains("maindoc.xml"))
-                               {
-                                       QByteArray f;
-                                       if (uz->read("maindoc.xml", f))
-                                       {
-                                               QDomDocument designMapDom;
-                                               if (designMapDom.setContent(f))
-                                               {
-                                                       QDomElement docElem = 
designMapDom.documentElement().firstChildElement("IMAGE");
-                                                       
m_imageInfoRecord.exifInfo.height = docElem.attribute("height", "0").toInt();
-                                                       
m_imageInfoRecord.exifInfo.width = docElem.attribute("width", "0").toInt();
+               m_image = QImage::fromData(im);
 
-                                                       // sanitize values for 
x-res and y-res. some older versions of Krita had resolutions like "76,0000023"
-                                                       QString xResClean = 
docElem.attribute("x-res", "72").replace(",", ".");
-                                                       QString yResClean = 
docElem.attribute("y-res", "72").replace(",", ".");
-
-                                                       // strip out all 
decimal stuff since we cannot have that.
-                                                       xResClean = 
xResClean.split(".").at(0);
-                                                       yResClean = 
yResClean.split(".").at(0);
-
-                                                       m_imageInfoRecord.xres 
= xResClean.toInt();
-                                                       m_imageInfoRecord.yres 
= yResClean.toInt();
-                                               }
-                                       }
-                               }
-                               m_imageInfoRecord.exifDataValid = true;
-                               m_imageInfoRecord.exifInfo.thumbnail = m_image;
-                       }
-                       else
-                       {
-
-                               delete uz;
-                               return false;
-                       }
-               }
-       }
-       else
-       {
                if (uz->contains("maindoc.xml"))
                {
                        QByteArray f;
@@ -112,8 +74,6 @@
                                        m_imageInfoRecord.exifInfo.height = 
docElem.attribute("height", "0").toInt();
                                        m_imageInfoRecord.exifInfo.width = 
docElem.attribute("width", "0").toInt();
 
-
-
                                        // sanitize values for x-res and y-res. 
some older versions of Krita had resolutions like "76,0000023"
                                        QString xResClean = 
docElem.attribute("x-res", "72").replace(",", ".");
                                        QString yResClean = 
docElem.attribute("y-res", "72").replace(",", ".");
@@ -122,46 +82,68 @@
                                        xResClean = xResClean.split(".").at(0);
                                        yResClean = yResClean.split(".").at(0);
 
-
                                        m_imageInfoRecord.xres = 
xResClean.toInt();
                                        m_imageInfoRecord.yres = 
yResClean.toInt();
-
-
-                                       m_image = 
QImage(m_imageInfoRecord.exifInfo.width, m_imageInfoRecord.exifInfo.height, 
QImage::Format_ARGB32_Premultiplied);
-                                       if (m_image.isNull())
-                                       {
-                                               uz->close();
-                                               delete uz;
-                                               return false;
-                                       }
-
-                                       // load the mergedimage.png into the 
painter
-                                       if (uz->contains("mergedimage.png"))
-                                       {
-                                               QByteArray im;
-
-                                               if (uz->read("mergedimage.png", 
im))
-                                               {
-                                                       m_image.fill( qRgba(0, 
0, 0, 0) );
-                                                       m_image = 
QImage::fromData(im);
-                                               }
-                                       }
-
-                                       m_image = 
m_image.convertToFormat(QImage::Format_ARGB32);
-                                       m_imageInfoRecord.valid = true;
-                                       m_image.setDotsPerMeterX((int) 
(m_imageInfoRecord.xres / 0.0254));
-                                       m_image.setDotsPerMeterY((int) 
(m_imageInfoRecord.yres / 0.0254));
-                                       m_imageInfoRecord.BBoxX = 0;
-                                       m_imageInfoRecord.BBoxH = 
m_image.height();
-                                       m_imageInfoRecord.colorspace = 
ColorSpaceRGB;
-                                       m_pixelFormat = Format_BGRA_8;
                                }
                        }
                }
+               m_imageInfoRecord.exifInfo.thumbnail = m_image;
+               m_imageInfoRecord.exifDataValid = true;
+               return true;
        }
+
+       if (!uz->contains("maindoc.xml"))
+               return false;
+
+       QByteArray f;
+       if (!uz->read("maindoc.xml", f))
+               return false;
+
+       QDomDocument designMapDom;
+       if (!designMapDom.setContent(f))
+               return false;
+
+       QDomElement docElem = 
designMapDom.documentElement().firstChildElement("IMAGE");
+       m_imageInfoRecord.exifInfo.height = docElem.attribute("height", 
"0").toInt();
+       m_imageInfoRecord.exifInfo.width = docElem.attribute("width", 
"0").toInt();
+
+       // sanitize values for x-res and y-res. some older versions of Krita 
had resolutions like "76,0000023"
+       QString xResClean = docElem.attribute("x-res", "72").replace(",", ".");
+       QString yResClean = docElem.attribute("y-res", "72").replace(",", ".");
+
+       // strip out all decimal stuff since we cannot have that.
+       xResClean = xResClean.split(".").at(0);
+       yResClean = yResClean.split(".").at(0);
+
+       m_imageInfoRecord.xres = xResClean.toInt();
+       m_imageInfoRecord.yres = yResClean.toInt();
+
+       m_image = QImage(m_imageInfoRecord.exifInfo.width, 
m_imageInfoRecord.exifInfo.height, QImage::Format_ARGB32_Premultiplied);
+       if (m_image.isNull())
+               return false;
+
+       // load the mergedimage.png into the painter
+       if (!uz->contains("mergedimage.png"))
+               return false;
+
+       QByteArray im;
+       if (!uz->read("mergedimage.png", im))
+               return false;
+       
+       m_image.fill( qRgba(0, 0, 0, 0) );
+       m_image = QImage::fromData(im);
+
+       m_image = m_image.convertToFormat(QImage::Format_ARGB32);
+       m_imageInfoRecord.valid = true;
+       m_image.setDotsPerMeterX((int) (m_imageInfoRecord.xres / 0.0254));
+       m_image.setDotsPerMeterY((int) (m_imageInfoRecord.yres / 0.0254));
+       m_imageInfoRecord.BBoxX = 0;
+       m_imageInfoRecord.BBoxH = m_image.height();
+       m_imageInfoRecord.colorspace = ColorSpaceRGB;
+       m_pixelFormat = Format_BGRA_8;
+
        uz->close();
-       delete uz;
-       return true; //TODO: I think this should be false!
+       return true;
 }
 
 bool ScImgDataLoader_KRA::preloadAlphaChannel(const QString& fn, int /*page*/, 
int res, bool& hasAlpha)


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

Reply via email to