From be877e12682b6f0e697b024f96a1dcaf4d0c8206 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sun, 29 Jun 2014 22:31:02 +0300 Subject: In renderers add copyImage function. For now it same with drawImage. --- src/render/surfacegraphics.cpp | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/render/surfacegraphics.cpp') diff --git a/src/render/surfacegraphics.cpp b/src/render/surfacegraphics.cpp index e6aee752f..8691274dd 100644 --- a/src/render/surfacegraphics.cpp +++ b/src/render/surfacegraphics.cpp @@ -77,6 +77,34 @@ bool SurfaceGraphics::drawImage(const Image *const image, #endif } +bool SurfaceGraphics::copyImage(const Image *const image, + int dstX, int dstY) +{ + FUNC_BLOCK("Graphics::drawImage", 1) + // Check that preconditions for blitting are met. + if (!mTarget || !image || !image->mSDLSurface) + return false; + + const SDL_Rect &imageRect = image->mBounds; + SDL_Rect dstRect; + SDL_Rect srcRect; + dstRect.x = static_cast(dstX); + dstRect.y = static_cast(dstY); + srcRect.x = static_cast(imageRect.x); + srcRect.y = static_cast(imageRect.y); + srcRect.w = static_cast(imageRect.w); + srcRect.h = static_cast(imageRect.h); + +#ifdef USE_SDL2 + // probably need change some flags + return !(SDL_BlitSurface(image->mSDLSurface, &srcRect, + mTarget, &dstRect) < 0); +#else + return !(SDL_BlitSurface(image->mSDLSurface, &srcRect, + mTarget, &dstRect) < 0); +#endif +} + void SurfaceGraphics::drawImageCached(const Image *const image, int x, int y) { -- cgit v1.2.3-70-g09d2