1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-04-15 11:46:56 +02:00

Fix corrupted display of H3 fonts when xbrz is in use

This commit is contained in:
Ivan Savenko 2025-01-26 11:18:21 +00:00
parent 3965c6a0a1
commit a4052d0cf4
3 changed files with 18 additions and 9 deletions

View File

@ -252,7 +252,7 @@ SDLImageShared::SDLImageShared(const SDLImageShared * from, int integerScaleFact
upscalingInProgress = true;
auto scaler = std::make_shared<SDLImageScaler>(from->surf, Rect(from->margins, from->fullSize));
auto scaler = std::make_shared<SDLImageScaler>(from->surf, Rect(from->margins, from->fullSize), true);
const auto & scalingTask = [this, algorithm, scaler]()
{
@ -278,7 +278,7 @@ std::shared_ptr<const ISharedImage> SDLImageShared::scaleTo(const Point & size,
if (palette && surf->format->palette)
SDL_SetSurfacePalette(surf, palette);
SDLImageScaler scaler(surf, Rect(margins, fullSize));
SDLImageScaler scaler(surf, Rect(margins, fullSize), true);
scaler.scaleSurface(size, EScalingAlgorithm::XBRZ_ALPHA);

View File

@ -196,16 +196,25 @@ void SDLImageScaler::scaleSurfaceIntegerFactor(int factor, EScalingAlgorithm alg
}
SDLImageScaler::SDLImageScaler(SDL_Surface * surf)
:SDLImageScaler(surf, Rect(0,0,surf->w, surf->h))
:SDLImageScaler(surf, Rect(0,0,surf->w, surf->h), false)
{
}
SDLImageScaler::SDLImageScaler(SDL_Surface * surf, const Rect & virtualDimensions)
SDLImageScaler::SDLImageScaler(SDL_Surface * surf, const Rect & virtualDimensions, bool optimizeImage)
{
SDLImageOptimizer optimizer(surf, virtualDimensions);
optimizer.optimizeSurface(screen);
intermediate = optimizer.acquireResultSurface();
virtualDimensionsInput = optimizer.getResultDimensions();
if (optimizeImage)
{
SDLImageOptimizer optimizer(surf, virtualDimensions);
optimizer.optimizeSurface(screen);
intermediate = optimizer.acquireResultSurface();
virtualDimensionsInput = optimizer.getResultDimensions();
}
else
{
intermediate = surf;
intermediate->refcount += 1;
virtualDimensionsInput = virtualDimensions;
}
if (intermediate == surf)
{

View File

@ -43,7 +43,7 @@ class SDLImageScaler : boost::noncopyable
public:
SDLImageScaler(SDL_Surface * surf);
SDLImageScaler(SDL_Surface * surf, const Rect & virtualDimensions);
SDLImageScaler(SDL_Surface * surf, const Rect & virtualDimensions, bool optimizeImage);
~SDLImageScaler();
/// Performs upscaling or downscaling to a requested dimensions