Mercurial > sdl-ios-xcode
diff src/video/dummy/SDL_nullrender.c @ 2888:32e8bbba1e94
Added stubs for software implementations of blending fills and line drawing
author | Sam Lantinga <slouken@libsdl.org> |
---|---|
date | Sat, 20 Dec 2008 13:14:28 +0000 |
parents | 9dde605c7540 |
children | 133601e3b255 |
line wrap: on
line diff
--- a/src/video/dummy/SDL_nullrender.c Sat Dec 20 12:32:53 2008 +0000 +++ b/src/video/dummy/SDL_nullrender.c Sat Dec 20 13:14:28 2008 +0000 @@ -32,6 +32,9 @@ static SDL_Renderer *SDL_DUMMY_CreateRenderer(SDL_Window * window, Uint32 flags); static int SDL_DUMMY_SetDrawColor(SDL_Renderer * renderer); +static int SDL_DUMMY_SetDrawBlendMode(SDL_Renderer * renderer); +static int SDL_DUMMY_RenderLine(SDL_Renderer * renderer, int x1, int y1, + int x2, int y2); static int SDL_DUMMY_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect); static int SDL_DUMMY_RenderCopy(SDL_Renderer * renderer, @@ -90,6 +93,8 @@ SDL_zerop(data); renderer->SetDrawColor = SDL_DUMMY_SetDrawColor; + renderer->SetDrawBlendMode = SDL_DUMMY_SetDrawBlendMode; + renderer->RenderLine = SDL_DUMMY_RenderLine; renderer->RenderFill = SDL_DUMMY_RenderFill; renderer->RenderCopy = SDL_DUMMY_RenderCopy; renderer->RenderPresent = SDL_DUMMY_RenderPresent; @@ -132,18 +137,54 @@ } static int +SDL_DUMMY_SetDrawBlendMode(SDL_Renderer * renderer) +{ + return 0; +} + +static int +SDL_DUMMY_RenderLine(SDL_Renderer * renderer, int x1, int y1, int x2, int y2) +{ + SDL_DUMMY_RenderData *data = + (SDL_DUMMY_RenderData *) renderer->driverdata; + SDL_Surface *target = data->screens[data->current_screen]; + int status; + + if (renderer->blendMode == SDL_BLENDMODE_NONE) { + Uint32 color = + SDL_MapRGBA(target->format, renderer->r, renderer->g, renderer->b, + renderer->a); + + status = SDL_DrawLine(target, x1, y1, x2, y2, color); + } else { + status = + SDL_BlendLine(target, x1, y1, x2, y2, renderer->blendMode, + renderer->r, renderer->g, renderer->b, renderer->a); + } + return status; +} + +static int SDL_DUMMY_RenderFill(SDL_Renderer * renderer, const SDL_Rect * rect) { SDL_DUMMY_RenderData *data = (SDL_DUMMY_RenderData *) renderer->driverdata; SDL_Surface *target = data->screens[data->current_screen]; - Uint32 color; SDL_Rect real_rect = *rect; + int status; + + if (renderer->blendMode == SDL_BLENDMODE_NONE) { + Uint32 color = + SDL_MapRGBA(target->format, renderer->r, renderer->g, renderer->b, + renderer->a); - color = SDL_MapRGBA(target->format, - renderer->r, renderer->g, renderer->b, renderer->a); - - return SDL_FillRect(target, &real_rect, color); + status = SDL_FillRect(target, &real_rect, color); + } else { + status = + SDL_BlendRect(target, &real_rect, renderer->blendMode, + renderer->r, renderer->g, renderer->b, renderer->a); + } + return status; } static int