test/testalpha.c
changeset 2799 bbf3aac2672a
parent 2797 c81150fedf6f
child 2806 938aa47f903a
equal deleted inserted replaced
2798:5f3831f1c3ea 2799:bbf3aac2672a
    23 /* Fill the screen with a gradient */
    23 /* Fill the screen with a gradient */
    24 static void
    24 static void
    25 FillBackground(SDL_Surface * screen)
    25 FillBackground(SDL_Surface * screen)
    26 {
    26 {
    27     Uint8 *buffer;
    27     Uint8 *buffer;
    28     Uint16 *buffer16;
       
    29     Uint16 color;
       
    30     Uint8 gradient;
    28     Uint8 gradient;
    31     int i, k;
    29     int i, k;
    32 
    30 
    33     /* Set the surface pixels and refresh! */
    31     /* Set the surface pixels and refresh! */
    34     if (SDL_LockSurface(screen) < 0) {
    32     if (SDL_LockSurface(screen) < 0) {
    35         fprintf(stderr, "Couldn't lock the display surface: %s\n",
    33         fprintf(stderr, "Couldn't lock the display surface: %s\n",
    36                 SDL_GetError());
    34                 SDL_GetError());
    37         quit(2);
    35         quit(2);
    38     }
    36     }
    39     buffer = (Uint8 *) screen->pixels;
    37     buffer = (Uint8 *) screen->pixels;
    40     if (screen->format->BytesPerPixel != 2) {
    38     switch (screen->format->BytesPerPixel) {
    41         for (i = 0; i < screen->h; ++i) {
    39         case 1:
    42             memset(buffer, (i * 255) / screen->h,
    40         case 3:
    43                    screen->w * screen->format->BytesPerPixel);
    41             for (i = 0; i < screen->h; ++i) {
    44             buffer += screen->pitch;
    42                 memset(buffer, (i * 255) / screen->h,
    45         }
    43                        screen->w * screen->format->BytesPerPixel);
    46     } else {
    44                 buffer += screen->pitch;
    47         for (i = 0; i < screen->h; ++i) {
       
    48             gradient = ((i * 255) / screen->h);
       
    49             color =
       
    50                 (Uint16) SDL_MapRGB(screen->format, gradient, gradient,
       
    51                                     gradient);
       
    52             buffer16 = (Uint16 *) buffer;
       
    53             for (k = 0; k < screen->w; k++) {
       
    54                 *(buffer16 + k) = color;
       
    55             }
    45             }
    56             buffer += screen->pitch;
    46             break;
    57         }
    47         case 2:
       
    48             for (i = 0; i < screen->h; ++i) {
       
    49                 Uint16 *buffer16;
       
    50                 Uint16 color;
       
    51 
       
    52                 gradient = ((i * 255) / screen->h);
       
    53                 color = (Uint16) SDL_MapRGB(screen->format,
       
    54                                             gradient, gradient, gradient);
       
    55                 buffer16 = (Uint16 *) buffer;
       
    56                 for (k = 0; k < screen->w; k++) {
       
    57                     *buffer16++ = color;
       
    58                 }
       
    59                 buffer += screen->pitch;
       
    60             }
       
    61             break;
       
    62         case 4:
       
    63             for (i = 0; i < screen->h; ++i) {
       
    64                 Uint32 *buffer32;
       
    65                 Uint32 color;
       
    66 
       
    67                 gradient = ((i * 255) / screen->h);
       
    68                 color = SDL_MapRGB(screen->format,
       
    69                                    gradient, gradient, gradient);
       
    70                 buffer32 = (Uint32 *) buffer;
       
    71                 for (k = 0; k < screen->w; k++) {
       
    72                     *buffer32++ = color;
       
    73                 }
       
    74                 buffer += screen->pitch;
       
    75             }
       
    76             break;
    58     }
    77     }
    59 
    78 
    60     SDL_UnlockSurface(screen);
    79     SDL_UnlockSurface(screen);
    61     SDL_UpdateRect(screen, 0, 0, 0, 0);
    80     SDL_UpdateRect(screen, 0, 0, 0, 0);
    62 }
    81 }