diff --git a/client/render/IImage.h b/client/render/IImage.h index 8f10dc5fd..cc7cf6889 100644 --- a/client/render/IImage.h +++ b/client/render/IImage.h @@ -111,12 +111,12 @@ public: virtual bool isTransparent(const Point & coords) const = 0; virtual void draw(SDL_Surface * where, SDL_Palette * palette, const Point & dest, const Rect * src, const ColorRGBA & colorMultiplier, uint8_t alpha, EImageBlitMode mode) const = 0; - virtual std::shared_ptr createImageReference(EImageBlitMode mode) const = 0; + [[nodiscard]] virtual std::shared_ptr createImageReference(EImageBlitMode mode) const = 0; - virtual std::shared_ptr horizontalFlip() const = 0; - virtual std::shared_ptr verticalFlip() const = 0; - virtual std::shared_ptr scaleInteger(int factor, SDL_Palette * palette, EImageBlitMode blitMode) const = 0; - virtual std::shared_ptr scaleTo(const Point & size, SDL_Palette * palette) const = 0; + [[nodiscard]] virtual std::shared_ptr horizontalFlip() const = 0; + [[nodiscard]] virtual std::shared_ptr verticalFlip() const = 0; + [[nodiscard]] virtual std::shared_ptr scaleInteger(int factor, SDL_Palette * palette, EImageBlitMode blitMode) const = 0; + [[nodiscard]] virtual std::shared_ptr scaleTo(const Point & size, SDL_Palette * palette) const = 0; virtual ~ISharedImage() = default; diff --git a/client/renderSDL/ImageScaled.cpp b/client/renderSDL/ImageScaled.cpp index c28d73025..82c02fee3 100644 --- a/client/renderSDL/ImageScaled.cpp +++ b/client/renderSDL/ImageScaled.cpp @@ -43,6 +43,9 @@ void ImageScaled::scaleInteger(int factor) void ImageScaled::scaleTo(const Point & size) { + if (source) + source = source->scaleTo(size, nullptr); + if (body) body = body->scaleTo(size * GH.screenHandler().getScalingFactor(), nullptr); } diff --git a/client/renderSDL/SDLImage.h b/client/renderSDL/SDLImage.h index c1f6fcf77..096eccf58 100644 --- a/client/renderSDL/SDLImage.h +++ b/client/renderSDL/SDLImage.h @@ -57,11 +57,11 @@ public: void exportBitmap(const boost::filesystem::path & path, SDL_Palette * palette) const override; Point dimensions() const override; bool isTransparent(const Point & coords) const override; - std::shared_ptr createImageReference(EImageBlitMode mode) const override; - std::shared_ptr horizontalFlip() const override; - std::shared_ptr verticalFlip() const override; - std::shared_ptr scaleInteger(int factor, SDL_Palette * palette, EImageBlitMode blitMode) const override; - std::shared_ptr scaleTo(const Point & size, SDL_Palette * palette) const override; + [[nodiscard]] std::shared_ptr createImageReference(EImageBlitMode mode) const override; + [[nodiscard]] std::shared_ptr horizontalFlip() const override; + [[nodiscard]] std::shared_ptr verticalFlip() const override; + [[nodiscard]] std::shared_ptr scaleInteger(int factor, SDL_Palette * palette, EImageBlitMode blitMode) const override; + [[nodiscard]] std::shared_ptr scaleTo(const Point & size, SDL_Palette * palette) const override; friend class SDLImageLoader; };