1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-06-17 00:07:41 +02:00

fix for not loaded images

This commit is contained in:
Laserlicht
2024-11-03 22:17:29 +01:00
committed by GitHub
parent 11b437db62
commit 52aa4aeb82

View File

@ -299,7 +299,7 @@ std::shared_ptr<ISharedImage> RenderHandler::scaleImage(const ImageLocator & loc
if (locator.layer == EImageLayer::ALL && locator.playerColored != PlayerColor::CANNOT_DETERMINE)
handle->playerColored(locator.playerColored);
handle->scaleInteger(locator.scalingFactor);
handle->scaleInteger(locator.scalingFactor);
// TODO: try to optimize image size (possibly even before scaling?) - trim image borders if they are completely transparent
auto result = handle->getSharedImage();
@ -309,10 +309,24 @@ std::shared_ptr<ISharedImage> RenderHandler::scaleImage(const ImageLocator & loc
std::shared_ptr<IImage> RenderHandler::loadImage(const ImageLocator & locator, EImageBlitMode mode)
{
if (locator.scalingFactor == 0 && getScalingFactor() != 1 )
ImageLocator loc = locator;
if(loc.defFile && loc.scalingFactor == 0 && loc.preScaledFactor == 1)
{
auto unscaledLocator = locator;
auto scaledLocator = locator;
auto tmp = getScalePath(*loc.defFile);
loc.defFile = AnimationPath::builtin(tmp.first.getName());
loc.preScaledFactor = tmp.second;
}
if(loc.image && loc.scalingFactor == 0 && loc.preScaledFactor == 1)
{
auto tmp = getScalePath(*loc.image);
loc.image = ImagePath::builtin(tmp.first.getName());
loc.preScaledFactor = tmp.second;
}
if (loc.scalingFactor == 0 && getScalingFactor() != 1 )
{
auto unscaledLocator = loc;
auto scaledLocator = loc;
unscaledLocator.scalingFactor = 1;
scaledLocator.scalingFactor = getScalingFactor();
@ -321,16 +335,16 @@ std::shared_ptr<IImage> RenderHandler::loadImage(const ImageLocator & locator, E
return std::make_shared<ImageScaled>(scaledLocator, unscaledImage, mode);
}
if (locator.scalingFactor == 0)
if (loc.scalingFactor == 0)
{
auto scaledLocator = locator;
auto scaledLocator = loc;
scaledLocator.scalingFactor = getScalingFactor();
return loadImageImpl(scaledLocator)->createImageReference(mode);
}
else
{
return loadImageImpl(locator)->createImageReference(mode);
return loadImageImpl(loc)->createImageReference(mode);
}
}
@ -344,9 +358,7 @@ std::shared_ptr<IImage> RenderHandler::loadImage(const AnimationPath & path, int
std::shared_ptr<IImage> RenderHandler::loadImage(const ImagePath & path, EImageBlitMode mode)
{
auto tmp = getScalePath(path);
ImageLocator locator(ImagePath::builtin(tmp.first.getName()));
locator.preScaledFactor = tmp.second;
ImageLocator locator(path);
return loadImage(locator, mode);
}