comparison 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
comparison
equal deleted inserted replaced
3258:e786366ea23b 3259:22ac66da0765
1 /**
2 * Automated SDL_Surface test.
3 *
4 * Written by Edgar Simo "bobbens"
5 *
6 * Released under Public Domain.
7 */
8
9
10 #include "SDL.h"
11 #include "SDL_at.h"
12
13 #include "common/common.h"
14
15
16 /**
17 * @brief Compares a surface and a surface image for equality.
18 */
19 int surface_compare( SDL_Surface *sur, const SurfaceImage_t *img )
20 {
21 int ret;
22 int i,j;
23 int bpp;
24 Uint8 *p, *pd;
25
26 /* Make sure size is the same. */
27 if ((sur->w != img->width) || (sur->h != img->height))
28 return -1;
29
30 SDL_LockSurface( sur );
31
32 ret = 0;
33 bpp = sur->format->BytesPerPixel;
34
35 /* Compare image - should be same format. */
36 for (j=0; j<sur->h; j++) {
37 for (i=0; i<sur->w; i++) {
38 p = (Uint8 *)sur->pixels + j * sur->pitch + i * bpp;
39 pd = (Uint8 *)img->pixel_data + (j*img->width + i) * img->bytes_per_pixel;
40 switch (bpp) {
41 case 1:
42 case 2:
43 case 3:
44 ret += 1;
45 printf("%d BPP not supported yet.\n",bpp);
46 break;
47
48 case 4:
49 ret += !( (p[0] == pd[0]) &&
50 (p[1] == pd[1]) &&
51 (p[2] == pd[2]) );
52 break;
53 }
54 }
55 }
56
57 SDL_UnlockSurface( sur );
58
59 return ret;
60 }