Skip to content

Commit 0b4885b

Browse files
committed
Change RESVG image format to ARGB32_Pre
1 parent 187b205 commit 0b4885b

File tree

1 file changed

+14
-20
lines changed

1 file changed

+14
-20
lines changed

src/QtImageReader.cpp

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ void QtImageReader::Open()
7171
if (!is_open)
7272
{
7373
bool success = true;
74-
image = std::shared_ptr<QImage>(new QImage());
74+
bool loaded = false;
7575

7676
#if USE_RESVG == 1
7777
// If defined and found in CMake, utilize the libresvg for parsing
@@ -80,38 +80,32 @@ void QtImageReader::Open()
8080
if (path.toLower().endsWith(".svg") || path.toLower().endsWith(".svgz")) {
8181

8282
ResvgRenderer renderer(path);
83-
if (!renderer.isValid()) {
84-
// Attempt to open file (old method using Qt5 limited SVG parsing)
85-
success = image->load(path);
86-
if (success) {
87-
image = std::shared_ptr<QImage>(new QImage(image->convertToFormat(QImage::Format_RGBA8888)));
88-
}
89-
} else {
83+
if (renderer.isValid()) {
9084

91-
image = std::shared_ptr<QImage>(new QImage(renderer.defaultSize(), QImage::Format_RGBA8888));
85+
image = std::shared_ptr<QImage>(new QImage(renderer.defaultSize(), QImage::Format_ARGB32_Premultiplied));
9286
image->fill(Qt::transparent);
9387

9488
QPainter p(image.get());
9589
renderer.render(&p);
9690
p.end();
91+
loaded = true;
9792
}
93+
}
94+
#endif
9895

99-
} else {
100-
// Attempt to open file (old method)
96+
if (!loaded) {
97+
// Attempt to open file using Qt's build in image processing capabilities
98+
image = std::shared_ptr<QImage>(new QImage());
10199
success = image->load(path);
102-
if (success)
103-
image = std::shared_ptr<QImage>(new QImage(image->convertToFormat(QImage::Format_RGBA8888)));
104100
}
105-
#else
106-
// Attempt to open file using Qt's build in image processing capabilities
107-
success = image->load(path);
108-
if (success)
109-
image = std::shared_ptr<QImage>(new QImage(image->convertToFormat(QImage::Format_RGBA8888)));
110-
#endif
111101

112-
if (!success)
102+
if (!success) {
113103
// raise exception
114104
throw InvalidFile("File could not be opened.", path.toStdString());
105+
}
106+
107+
// Convert to proper format
108+
image = std::shared_ptr<QImage>(new QImage(image->convertToFormat(QImage::Format_RGBA8888)));
115109

116110
// Update image properties
117111
info.has_audio = false;

0 commit comments

Comments
 (0)