From c9f8bba932022ffd90031713c51861587f86b244 Mon Sep 17 00:00:00 2001 From: Andrei Karas Date: Sat, 28 Dec 2013 23:06:17 +0300 Subject: Add cached draw methods into renderers. --- src/render/surfacegraphics.cpp | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'src/render/surfacegraphics.cpp') diff --git a/src/render/surfacegraphics.cpp b/src/render/surfacegraphics.cpp index 879d44f60..db2722164 100644 --- a/src/render/surfacegraphics.cpp +++ b/src/render/surfacegraphics.cpp @@ -80,3 +80,41 @@ bool SurfaceGraphics::drawImage2(const Image *const image, int srcX, int srcY, } #endif } + +void SurfaceGraphics::drawImageCached(const Image *const image, + int x, int y) +{ + FUNC_BLOCK("Graphics::drawImageCached", 1) + // Check that preconditions for blitting are met. + if (!mTarget || !image || !image->mSDLSurface) + return; + + const SDL_Rect &rect = image->mBounds; + + SDL_Rect dstRect; + SDL_Rect srcRect; + dstRect.x = static_cast(x); + dstRect.y = static_cast(y); + srcRect.x = static_cast(rect.x); + srcRect.y = static_cast(rect.y); + srcRect.w = static_cast(rect.w); + srcRect.h = static_cast(rect.h); + +#ifdef USE_SDL2 + SDL_BlitSurface(image->mSDLSurface, &srcRect, mTarget, &dstRect); +#else + if (mBlitMode == BLIT_NORMAL) + { + SDL_BlitSurface(image->mSDLSurface, &srcRect, mTarget, &dstRect); + } + else + { + SurfaceImageHelper::combineSurface(image->mSDLSurface, &srcRect, + mTarget, &dstRect); + } +#endif +} + +void SurfaceGraphics::completeCache() +{ +} -- cgit v1.2.3-60-g2f50