diff test/automated/common/common.c @ 3259:22ac66da0765

Merged Edgar's code changes from Google Summer of Code 2009
author Sam Lantinga <slouken@libsdl.org>
date Mon, 07 Sep 2009 05:06:34 +0000
parents
children 0acec8c9f5c9
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/automated/common/common.c	Mon Sep 07 05:06:34 2009 +0000
@@ -0,0 +1,60 @@
+/**
+ * Automated SDL_Surface test.
+ *
+ * Written by Edgar Simo "bobbens"
+ *
+ * Released under Public Domain.
+ */
+
+
+#include "SDL.h"
+#include "SDL_at.h"
+
+#include "common/common.h"
+
+
+/**
+ * @brief Compares a surface and a surface image for equality.
+ */
+int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img )
+{
+   int ret;
+   int i,j;
+   int bpp;
+   Uint8 *p, *pd;
+
+   /* Make sure size is the same. */
+   if ((sur->w != img->width) || (sur->h != img->height))
+      return -1;
+
+   SDL_LockSurface( sur );
+
+   ret = 0;
+   bpp = sur->format->BytesPerPixel;
+
+   /* Compare image - should be same format. */
+   for (j=0; j<sur->h; j++) {
+      for (i=0; i<sur->w; i++) {
+         p  = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
+         pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
+         switch (bpp) {
+            case 1:
+            case 2:
+            case 3:
+               ret += 1;
+               printf("%d BPP not supported yet.\n",bpp);
+               break;
+
+            case 4:
+               ret += !( (p[0] == pd[0]) &&
+                         (p[1] == pd[1]) &&
+                         (p[2] == pd[2]) );
+               break;
+         }
+      }
+   }
+
+   SDL_UnlockSurface( sur );
+
+   return ret;
+}