From ccd2d08ddfaed989ac89bac1f395adc7940fd00b Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Tue, 15 Oct 2002 05:22:50 +0000 Subject: [PATCH] Return an error with color fills on less than 8 bpp surfaces. --- src/video/SDL_surface.c | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/video/SDL_surface.c b/src/video/SDL_surface.c index 0d444b0af..1a77f5687 100644 --- a/src/video/SDL_surface.c +++ b/src/video/SDL_surface.c @@ -524,6 +524,20 @@ int SDL_UpperBlit (SDL_Surface *src, SDL_Rect *srcrect, return 0; } +static int SDL_FillRect1(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) +{ + /* FIXME: We have to worry about packing order.. *sigh* */ + SDL_SetError("1-bpp rect fill not yet implemented"); + return -1; +} + +static int SDL_FillRect4(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) +{ + /* FIXME: We have to worry about packing order.. *sigh* */ + SDL_SetError("4-bpp rect fill not yet implemented"); + return -1; +} + /* * This function performs a fast fill of the given rectangle with 'color' */ @@ -534,6 +548,22 @@ int SDL_FillRect(SDL_Surface *dst, SDL_Rect *dstrect, Uint32 color) int x, y; Uint8 *row; + /* This function doesn't work on surfaces < 8 bpp */ + if ( dst->format->BitsPerPixel < 8 ) { + switch(dst->format->BitsPerPixel) { + case 1: + return SDL_FillRect1(dst, dstrect, color); + break; + case 4: + return SDL_FillRect4(dst, dstrect, color); + break; + default: + SDL_SetError("Fill rect on unsupported surface format"); + return(-1); + break; + } + } + /* If 'dstrect' == NULL, then fill the whole surface */ if ( dstrect ) { /* Perform clipping */