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:
@ -299,7 +299,7 @@ std::shared_ptr<ISharedImage> RenderHandler::scaleImage(const ImageLocator & loc
|
|||||||
if (locator.layer == EImageLayer::ALL && locator.playerColored != PlayerColor::CANNOT_DETERMINE)
|
if (locator.layer == EImageLayer::ALL && locator.playerColored != PlayerColor::CANNOT_DETERMINE)
|
||||||
handle->playerColored(locator.playerColored);
|
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
|
// TODO: try to optimize image size (possibly even before scaling?) - trim image borders if they are completely transparent
|
||||||
auto result = handle->getSharedImage();
|
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)
|
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 tmp = getScalePath(*loc.defFile);
|
||||||
auto scaledLocator = locator;
|
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;
|
unscaledLocator.scalingFactor = 1;
|
||||||
scaledLocator.scalingFactor = getScalingFactor();
|
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);
|
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();
|
scaledLocator.scalingFactor = getScalingFactor();
|
||||||
|
|
||||||
return loadImageImpl(scaledLocator)->createImageReference(mode);
|
return loadImageImpl(scaledLocator)->createImageReference(mode);
|
||||||
}
|
}
|
||||||
else
|
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)
|
std::shared_ptr<IImage> RenderHandler::loadImage(const ImagePath & path, EImageBlitMode mode)
|
||||||
{
|
{
|
||||||
auto tmp = getScalePath(path);
|
ImageLocator locator(path);
|
||||||
ImageLocator locator(ImagePath::builtin(tmp.first.getName()));
|
|
||||||
locator.preScaledFactor = tmp.second;
|
|
||||||
return loadImage(locator, mode);
|
return loadImage(locator, mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user