Materials: Add support for embedded images
Adds support for file types other than PNG to embedded images in materials. Adds checks to prevent crashing when an unsupported image type is used.
This commit is contained in:
committed by
Chris Hennes
parent
21eff41238
commit
3515db4a3b
@@ -126,7 +126,7 @@ void BaseDelegate::paintImage(QPainter* painter,
|
||||
QImage img;
|
||||
if (!propertyValue.isEmpty()) {
|
||||
QByteArray by = QByteArray::fromBase64(propertyValue.toUtf8());
|
||||
img = QImage::fromData(by, "PNG").scaled(64, 64, Qt::KeepAspectRatio);
|
||||
img = QImage::fromData(by).scaled(64, 64, Qt::KeepAspectRatio);
|
||||
}
|
||||
QRect target(option.rect);
|
||||
if (target.width() > target.height()) {
|
||||
|
||||
@@ -134,7 +134,7 @@ ImageEdit::ImageEdit(const QString& propertyName,
|
||||
QString value = _property->getString();
|
||||
if (!value.isEmpty()) {
|
||||
QByteArray by = QByteArray::fromBase64(value.toUtf8());
|
||||
QImage img = QImage::fromData(by, "PNG");
|
||||
QImage img = QImage::fromData(by);
|
||||
_pixmap = QPixmap::fromImage(img);
|
||||
}
|
||||
showPixmap();
|
||||
|
||||
@@ -940,12 +940,11 @@ bool MaterialsEditor::updateTexturePreview() const
|
||||
try {
|
||||
auto property = _material->getAppearanceProperty(QStringLiteral("TextureImage"));
|
||||
if (!property->isNull()) {
|
||||
// Base::Console().log("Has 'TextureImage'\n");
|
||||
auto propertyValue = property->getString();
|
||||
if (!propertyValue.isEmpty()) {
|
||||
QByteArray by = QByteArray::fromBase64(propertyValue.toUtf8());
|
||||
image = QImage::fromData(by, "PNG"); //.scaled(64, 64, Qt::KeepAspectRatio);
|
||||
hasImage = true;
|
||||
image = QImage::fromData(by);
|
||||
hasImage = !image.isNull();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -962,9 +961,11 @@ bool MaterialsEditor::updateTexturePreview() const
|
||||
if (!image.load(filePath)) {
|
||||
Base::Console().log("Unable to load image '%s'\n",
|
||||
filePath.toStdString().c_str());
|
||||
// return; // ???
|
||||
hasImage = false;
|
||||
}
|
||||
else {
|
||||
hasImage = !image.isNull();
|
||||
}
|
||||
hasImage = true;
|
||||
}
|
||||
}
|
||||
catch (const Materials::PropertyNotFound&) {
|
||||
|
||||
Reference in New Issue
Block a user