|
|
|
|
@ -51,6 +51,12 @@ namespace ImageProcessingAtom
|
|
|
|
|
|
|
|
|
|
ImagePreviewer::~ImagePreviewer()
|
|
|
|
|
{
|
|
|
|
|
AZ::SystemTickBus::Handler::BusDisconnect();
|
|
|
|
|
|
|
|
|
|
if (m_createDisplayTextureResult.isRunning())
|
|
|
|
|
{
|
|
|
|
|
m_createDisplayTextureResult.waitForFinished();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ImagePreviewer::Clear() const
|
|
|
|
|
@ -215,7 +221,11 @@ namespace ImageProcessingAtom
|
|
|
|
|
m_fileinfo = QString::fromUtf8(product->GetName().c_str());
|
|
|
|
|
m_fileinfo += GetFileSize(product->GetRelativePath().c_str());
|
|
|
|
|
|
|
|
|
|
AZ::Data::Asset<AZ::RPI::StreamingImageAsset> imageAsset = Utils::LoadImageAsset(product->GetAssetId());
|
|
|
|
|
CreateAndDisplayTextureItemAsync(
|
|
|
|
|
[assetId = product->GetAssetId()]
|
|
|
|
|
() -> CreateDisplayTextureResult
|
|
|
|
|
{
|
|
|
|
|
AZ::Data::Asset<AZ::RPI::StreamingImageAsset> imageAsset = Utils::LoadImageAsset(assetId);
|
|
|
|
|
IImageObjectPtr image = Utils::LoadImageFromImageAsset(imageAsset);
|
|
|
|
|
|
|
|
|
|
if (image)
|
|
|
|
|
@ -224,11 +234,16 @@ namespace ImageProcessingAtom
|
|
|
|
|
AZStd::string productInfo;
|
|
|
|
|
GetImageInfoString(imageAsset, productInfo);
|
|
|
|
|
|
|
|
|
|
m_fileinfo += QStringLiteral("\r\n");
|
|
|
|
|
m_fileinfo += productInfo.c_str();
|
|
|
|
|
QString fileInfo = QStringLiteral("\r\n");
|
|
|
|
|
fileInfo += productInfo.c_str();
|
|
|
|
|
|
|
|
|
|
m_previewImageObject = ConvertImageForPreview(image);
|
|
|
|
|
return { ConvertImageForPreview(image), fileInfo };
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return { nullptr, "" };
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
DisplayTextureItem();
|
|
|
|
|
}
|
|
|
|
|
@ -239,7 +254,11 @@ namespace ImageProcessingAtom
|
|
|
|
|
m_fileinfo = QString::fromUtf8(source->GetName().c_str());
|
|
|
|
|
m_fileinfo += GetFileSize(source->GetFullPath().c_str());
|
|
|
|
|
|
|
|
|
|
IImageObjectPtr image = IImageObjectPtr(LoadImageFromFile(source->GetFullPath()));
|
|
|
|
|
CreateAndDisplayTextureItemAsync(
|
|
|
|
|
[fullPath = source->GetFullPath()]
|
|
|
|
|
() -> CreateDisplayTextureResult
|
|
|
|
|
{
|
|
|
|
|
IImageObjectPtr image = IImageObjectPtr(LoadImageFromFile(fullPath));
|
|
|
|
|
|
|
|
|
|
if (image)
|
|
|
|
|
{
|
|
|
|
|
@ -247,11 +266,16 @@ namespace ImageProcessingAtom
|
|
|
|
|
AZStd::string sourceInfo;
|
|
|
|
|
GetImageInfoString(image, sourceInfo);
|
|
|
|
|
|
|
|
|
|
m_fileinfo += QStringLiteral("\r\n");
|
|
|
|
|
m_fileinfo += sourceInfo.c_str();
|
|
|
|
|
QString fileInfo = QStringLiteral("\r\n");
|
|
|
|
|
fileInfo += sourceInfo.c_str();
|
|
|
|
|
|
|
|
|
|
m_previewImageObject = ConvertImageForPreview(image);
|
|
|
|
|
return { ConvertImageForPreview(image), fileInfo };
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
return { nullptr, "" };
|
|
|
|
|
}
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
DisplayTextureItem();
|
|
|
|
|
}
|
|
|
|
|
@ -289,6 +313,27 @@ namespace ImageProcessingAtom
|
|
|
|
|
updateGeometry();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template<class CreateFn>
|
|
|
|
|
void ImagePreviewer::CreateAndDisplayTextureItemAsync(CreateFn create)
|
|
|
|
|
{
|
|
|
|
|
AZ::SystemTickBus::Handler::BusConnect();
|
|
|
|
|
m_createDisplayTextureResult = QtConcurrent::run(AZStd::move(create));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ImagePreviewer::OnSystemTick()
|
|
|
|
|
{
|
|
|
|
|
if (m_createDisplayTextureResult.isFinished())
|
|
|
|
|
{
|
|
|
|
|
CreateDisplayTextureResult result = m_createDisplayTextureResult.result();
|
|
|
|
|
m_previewImageObject = AZStd::move(result.first);
|
|
|
|
|
m_fileinfo += result.second;
|
|
|
|
|
|
|
|
|
|
AZ::SystemTickBus::Handler::BusDisconnect();
|
|
|
|
|
|
|
|
|
|
DisplayTextureItem();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ImagePreviewer::PreviewSubImage(uint32_t mip)
|
|
|
|
|
{
|
|
|
|
|
QImage previewImage = GetSubImagePreview(m_previewImageObject, mip);
|
|
|
|
|
|