From 4f2800664baaf9e2ac1afec52ff7e184b9784ba5 Mon Sep 17 00:00:00 2001 From: "FeRD (Frank Dana)" Date: Wed, 8 Jan 2020 17:00:46 -0500 Subject: [PATCH] Change RESVG image format to ARGB32_Pre --- src/QtImageReader.cpp | 34 ++++++++++++++-------------------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/src/QtImageReader.cpp b/src/QtImageReader.cpp index 7163b0979..e2ee5d7ad 100644 --- a/src/QtImageReader.cpp +++ b/src/QtImageReader.cpp @@ -71,7 +71,7 @@ void QtImageReader::Open() if (!is_open) { bool success = true; - image = std::shared_ptr(new QImage()); + bool loaded = false; #if USE_RESVG == 1 // If defined and found in CMake, utilize the libresvg for parsing @@ -80,38 +80,32 @@ void QtImageReader::Open() if (path.toLower().endsWith(".svg") || path.toLower().endsWith(".svgz")) { ResvgRenderer renderer(path); - if (!renderer.isValid()) { - // Attempt to open file (old method using Qt5 limited SVG parsing) - success = image->load(path); - if (success) { - image = std::shared_ptr(new QImage(image->convertToFormat(QImage::Format_RGBA8888))); - } - } else { + if (renderer.isValid()) { - image = std::shared_ptr(new QImage(renderer.defaultSize(), QImage::Format_RGBA8888)); + image = std::shared_ptr(new QImage(renderer.defaultSize(), QImage::Format_ARGB32_Premultiplied)); image->fill(Qt::transparent); QPainter p(image.get()); renderer.render(&p); p.end(); + loaded = true; } + } +#endif - } else { - // Attempt to open file (old method) + if (!loaded) { + // Attempt to open file using Qt's build in image processing capabilities + image = std::shared_ptr(new QImage()); success = image->load(path); - if (success) - image = std::shared_ptr(new QImage(image->convertToFormat(QImage::Format_RGBA8888))); } -#else - // Attempt to open file using Qt's build in image processing capabilities - success = image->load(path); - if (success) - image = std::shared_ptr(new QImage(image->convertToFormat(QImage::Format_RGBA8888))); -#endif - if (!success) + if (!success) { // raise exception throw InvalidFile("File could not be opened.", path.toStdString()); + } + + // Convert to proper format + image = std::shared_ptr(new QImage(image->convertToFormat(QImage::Format_RGBA8888))); // Update image properties info.has_audio = false;