Laserlicht 10 місяців тому
батько
коміт
3beb78104e
1 змінених файлів з 3 додано та 9 видалено
  1. 3 9
      client/renderSDL/SDLImage.cpp

+ 3 - 9
client/renderSDL/SDLImage.cpp

@@ -278,12 +278,6 @@ void SDLImageShared::optimizeSurface()
 		margins.x += left;
 		margins.y += top;
 	}
-
-	if(preScaleFactor > 1 && preScaleFactor != GH.screenHandler().getScalingFactor())
-	{
-		margins.x = margins.x * GH.screenHandler().getScalingFactor() / preScaleFactor;
-		margins.y = margins.y * GH.screenHandler().getScalingFactor() / preScaleFactor;
-	}
 }
 
 std::shared_ptr<const ISharedImage> SDLImageShared::scaleInteger(int factor, SDL_Palette * palette, EImageBlitMode mode) const
@@ -309,15 +303,15 @@ std::shared_ptr<const ISharedImage> SDLImageShared::scaleInteger(int factor, SDL
 			scaled = CSDL_Ext::scaleSurfaceIntegerFactor(surf, factor, EScalingAlgorithm::XBRZ_ALPHA);
 	}
 	else
-		scaled = CSDL_Ext::scaleSurface(surf, (surf->w / preScaleFactor) * factor, (surf->h / preScaleFactor) * factor);
+		scaled = CSDL_Ext::scaleSurface(surf, (int) round((float)surf->w * factor / preScaleFactor), (int) round((float)surf->h * factor / preScaleFactor));
 
 	auto ret = std::make_shared<SDLImageShared>(scaled, preScaleFactor);
 
 	ret->fullSize.x = fullSize.x * factor;
 	ret->fullSize.y = fullSize.y * factor;
 
-	ret->margins.x = margins.x * factor;
-	ret->margins.y = margins.y * factor;
+	ret->margins.x = (int) round((float)margins.x * factor / preScaleFactor);
+	ret->margins.y = (int) round((float)margins.y * factor / preScaleFactor);
 	ret->optimizeSurface();
 
 	// erase our own reference