Skip to content

Commit

Permalink
Implemented Texture color modification
Browse files Browse the repository at this point in the history
  • Loading branch information
Grumbel committed Jul 31, 2014
1 parent 8ea2f20 commit 88effe6
Showing 1 changed file with 16 additions and 2 deletions.
18 changes: 16 additions & 2 deletions src/video/sdl/sdl_renderer.cpp
Expand Up @@ -93,7 +93,7 @@ SDLRenderer::~SDLRenderer()
void
SDLRenderer::draw_surface(const DrawingRequest& request)
{
//FIXME: support parameters request.alpha, request.angle, request.blend
//FIXME: support parameters request.angle, request.blend
const Surface* surface = (const Surface*) request.request_data;
boost::shared_ptr<SDLTexture> sdltexture = boost::dynamic_pointer_cast<SDLTexture>(surface->get_texture());

Expand All @@ -103,6 +103,13 @@ SDLRenderer::draw_surface(const DrawingRequest& request)
dst_rect.w = sdltexture->get_image_width();
dst_rect.h = sdltexture->get_image_height();

Uint8 r = static_cast<Uint8>(request.color.red * 255);
Uint8 g = static_cast<Uint8>(request.color.green * 255);
Uint8 b = static_cast<Uint8>(request.color.blue * 255);
Uint8 a = static_cast<Uint8>(request.color.alpha * request.alpha * 255);
SDL_SetTextureColorMod(sdltexture->get_texture(), r, g, b);
SDL_SetTextureAlphaMod(sdltexture->get_texture(), a);

if (surface->get_flipx())
{
SDL_RenderCopyEx(renderer, sdltexture->get_texture(), NULL, &dst_rect, 0, NULL, SDL_FLIP_HORIZONTAL);
Expand Down Expand Up @@ -130,7 +137,7 @@ SDLRenderer::draw_surface(const DrawingRequest& request)
void
SDLRenderer::draw_surface_part(const DrawingRequest& request)
{
//FIXME: support parameters request.alpha, request.angle, request.blend
//FIXME: support parameters request.angle, request.blend
const SurfacePartRequest* surface = (const SurfacePartRequest*) request.request_data;
const SurfacePartRequest* surfacepartrequest = (SurfacePartRequest*) request.request_data;

Expand All @@ -148,6 +155,13 @@ SDLRenderer::draw_surface_part(const DrawingRequest& request)
dst_rect.w = surfacepartrequest->size.x;
dst_rect.h = surfacepartrequest->size.y;

Uint8 r = static_cast<Uint8>(request.color.red * 255);
Uint8 g = static_cast<Uint8>(request.color.green * 255);
Uint8 b = static_cast<Uint8>(request.color.blue * 255);
Uint8 a = static_cast<Uint8>(request.color.alpha * request.alpha * 255);
SDL_SetTextureColorMod(sdltexture->get_texture(), r, g, b);
SDL_SetTextureAlphaMod(sdltexture->get_texture(), a);

if (surface->surface->get_flipx())
{
SDL_RenderCopyEx(renderer, sdltexture->get_texture(), &src_rect, &dst_rect, 0, NULL, SDL_FLIP_HORIZONTAL);
Expand Down

0 comments on commit 88effe6

Please sign in to comment.