diff src/video/SDL_surface.c @ 532:058d47b7a3b4

Return an error with color fills on less than 8 bpp surfaces.
author Sam Lantinga <slouken@libsdl.org>
date Tue, 15 Oct 2002 05:22:50 +0000
parents 4314a501d7be
children b8d311d90021
line wrap: on
line diff
--- a/src/video/SDL_surface.c	Tue Oct 15 04:26:20 2002 +0000
+++ b/src/video/SDL_surface.c	Tue Oct 15 05:22:50 2002 +0000
@@ -524,6 +524,20 @@
 	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 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 */