void Draw (SDL_Surface *screen, int start) { SDL_Surface *picture, *picture_again; char *bmpfile; /* --------- 8 bit test -------- */ start=0; if (start<=6) { /* Message */ fprintf(stderr,"Loading 8bit image\n"); /* Load the image into a surface */ bmpfile = "sample8.bmp"; fprintf(stderr, "Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } sprintf(messageText, "1. rotozoom: Rotating and zooming"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_OFF); sprintf(messageText, "2. rotozoom: Just zooming (angle=0)"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_OFF); sprintf(messageText, "3. zoom: Just zooming\n"); ZoomPicture(screen,picture,SMOOTHING_OFF); sprintf(messageText, "4. rotozoom: Rotating and zooming, interpolation on but unused"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_ON); sprintf(messageText, "5. rotozoom: Just zooming (angle=0), interpolation on but unused"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON); sprintf(messageText, "6. zoom: Just zooming, interpolation on but unused"); ZoomPicture(screen,picture,SMOOTHING_ON); /* Free the picture */ SDL_FreeSurface(picture); } /* -------- 24 bit test --------- */ if (start<=12) { /* Message */ fprintf(stderr,"Loading 24bit image\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; fprintf(stderr, "Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } sprintf(messageText, "7. rotozoom: Rotating and zooming, no interpolation"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_OFF); sprintf(messageText, "8. rotozoom: Just zooming (angle=0), no interpolation"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_OFF); sprintf(messageText, "9. zoom: Just zooming, no interpolation"); ZoomPicture(screen,picture,SMOOTHING_OFF); sprintf(messageText, "10. rotozoom: Rotating and zooming, with interpolation"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_ON); sprintf(messageText, "11. rotozoom: Just zooming (angle=0), with interpolation\n"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON); sprintf(messageText, "12. zoom: Just zooming, with interpolation"); ZoomPicture(screen,picture,SMOOTHING_ON); /* Free the picture */ SDL_FreeSurface(picture); } /* -------- 32 bit test --------- */ if (start<=16) { /* Message */ fprintf(stderr,"Loading 24bit image\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; fprintf(stderr, "Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* New source surface is 32bit with defined RGBA ordering */ /* Much faster to do this once rather than the routine on the fly */ fprintf(stderr,"Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); SDL_BlitSurface(picture,NULL,picture_again,NULL); /* Message */ sprintf(messageText, "13. Rotating and zooming, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_OFF,SMOOTHING_ON); /* Message */ sprintf(messageText, "14. Just zooming (angle=0), with interpolation"); RotatePicture(screen,picture_again,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON); SDL_FreeSurface(picture_again); /* New source surface is 32bit with defined ABGR ordering */ /* Much faster to do this once rather than the routine on the fly */ fprintf(stderr,"Converting 24bit image into 32bit ABGR surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); SDL_BlitSurface(picture,NULL,picture_again,NULL); /* Message */ sprintf(messageText, "15. Rotating and zooming, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_OFF,SMOOTHING_ON); /* Message */ sprintf(messageText, "16. Just zooming (angle=0), with interpolation"); RotatePicture(screen,picture_again,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON); SDL_FreeSurface(picture_again); /* Free the picture */ SDL_FreeSurface(picture); } /* -------- 32 bit flip test --------- */ if (start<=22) { /* Message */ fprintf(stderr,"Loading 24bit image\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; fprintf(stderr, "Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Excercise flipping functions on 32bit RGBA */ fprintf(stderr,"Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); SDL_BlitSurface(picture,NULL,picture_again,NULL); /* Message */ sprintf(messageText, "17. Rotating with x-flip, no interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_X,SMOOTHING_OFF); /* Message */ sprintf(messageText, "18. Rotating with y-flip, no interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_Y,SMOOTHING_OFF); /* Message */ sprintf(messageText, "19. Rotating with xy-flip, no interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_XY,SMOOTHING_OFF); /* Message */ sprintf(messageText, "20. Rotating with x-flip, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_X,SMOOTHING_ON); /* Message */ sprintf(messageText, "21. Rotating with y-flip, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_Y,SMOOTHING_ON); /* Message */ sprintf(messageText, "22. Rotating with xy-flip, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_XY,SMOOTHING_ON); /* Free the pictures */ SDL_FreeSurface(picture); SDL_FreeSurface(picture_again); } if (start<=24) { /* Message */ fprintf(stderr,"Loading 24bit image\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; fprintf(stderr, "Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Excercise flipping functions on 32bit RGBA */ fprintf(stderr,"Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); SDL_BlitSurface(picture,NULL,picture_again,NULL); sprintf(messageText, "23. CustomTest, values from commandline (32bit)"); CustomTest(screen, picture_again, custom_angle, custom_fx, custom_fy, custom_smooth); SDL_FreeSurface(picture_again); /* Free the picture */ SDL_FreeSurface(picture); /* Message */ fprintf(stderr,"Loading 8bit image\n"); /* Load the image into a surface */ bmpfile = "sample8.bmp"; fprintf(stderr, "Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } sprintf(messageText, "24. CustomTest, values from commandline (8bit)"); CustomTest(screen, picture, custom_angle, custom_fx, custom_fy, custom_smooth); /* Free the picture */ SDL_FreeSurface(picture); } if (start<=25) { /* Message */ fprintf(stderr,"Loading 24bit image\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; fprintf(stderr, "Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* New source surface is 32bit with defined RGBA ordering */ fprintf(stderr,"Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, 0x000000ff, 0x0000ff00, 0x00ff0000, 0xff000000); SDL_BlitSurface(picture,NULL,picture_again,NULL); /* Excercise rotate90 function on 32bit RGBA */ sprintf(messageText, "25. rotate90: Rotate 90 degrees clockwise (32bit)"); RotatePicture90Degrees(screen, picture_again); /* Free the pictures */ SDL_FreeSurface(picture); SDL_FreeSurface(picture_again); } return; }
void Draw (SDL_Surface *screen, int start, int end) { SDL_Surface *picture, *picture_again; char *bmpfile; /* Define masking bytes */ #if SDL_BYTEORDER == SDL_BIG_ENDIAN Uint32 rmask = 0xff000000; Uint32 gmask = 0x00ff0000; Uint32 bmask = 0x0000ff00; Uint32 amask = 0x000000ff; #else Uint32 amask = 0xff000000; Uint32 bmask = 0x00ff0000; Uint32 gmask = 0x0000ff00; Uint32 rmask = 0x000000ff; #endif /* --------- 8 bit tests -------- */ if (start<=6) { /* Message */ printf("8 bit tests ...\n"); /* Load the image into a surface */ bmpfile = "sample8.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Add white frame */ rectangleColor(picture, 0, 0, picture->w-1, picture->h-1, 0xffffffff); if (start <= 1) { sprintf(messageText, "1. rotozoom: Rotating and zooming"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_OFF,POSITION_CENTER); } if (end == 1) goto done8bit; if (start <= 2) { sprintf(messageText, "2. rotozoom: Just zooming (angle=0)"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_OFF,POSITION_CENTER); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_OFF,POSITION_BOTTOMRIGHT); } if (end == 2) goto done8bit; if (start <= 3) { sprintf(messageText, "3. zoom: Just zooming"); ZoomPicture(screen,picture,SMOOTHING_OFF); } if (end == 3) goto done8bit; if (start <= 4) { sprintf(messageText, "4. rotozoom: Rotating and zooming, interpolation on but unused"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); } if (end == 4) goto done8bit; if (start <= 5) { sprintf(messageText, "5. rotozoom: Just zooming (angle=0), interpolation on but unused"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_BOTTOMRIGHT); } if (end == 5) goto done8bit; if (start <= 6) { sprintf(messageText, "6. zoom: Just zooming, interpolation on but unused"); ZoomPicture(screen,picture,SMOOTHING_ON); } if (end == 6) goto done8bit; done8bit: /* Free the picture */ SDL_FreeSurface(picture); if (end <= 6) return; } /* -------- 24 bit test --------- */ if (start<=12) { /* Message */ printf("24 bit tests ...\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Add white frame */ rectangleColor(picture, 0, 0, picture->w-1, picture->h-1, 0xffffffff); if (start <= 7) { sprintf(messageText, "7. rotozoom: Rotating and zooming, no interpolation"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_OFF,POSITION_CENTER); } if (end == 7) goto done24bit; if (start <= 8) { sprintf(messageText, "8a. rotozoom: Just zooming (angle=0), no interpolation, centered"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_OFF,POSITION_CENTER); sprintf(messageText, "8b. rotozoom: Just zooming (angle=0), no interpolation, corner"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_OFF,POSITION_BOTTOMRIGHT); sprintf(messageText, "8c. rotozoom: Just zooming (angle=0), X flip, no interpolation, centered"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_X,SMOOTHING_OFF,POSITION_CENTER); sprintf(messageText, "8d. rotozoom: Just zooming (angle=0), Y flip, no interpolation, centered"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_Y,SMOOTHING_OFF,POSITION_CENTER); sprintf(messageText, "8e. rotozoom: Just zooming (angle=0), XY flip, no interpolation, centered"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_XY,SMOOTHING_OFF,POSITION_CENTER); } if (end == 8) goto done24bit; if (start <= 9) { sprintf(messageText, "9. zoom: Just zooming, no interpolation"); ZoomPicture(screen,picture,SMOOTHING_OFF); } if (end == 9) goto done24bit; if (start <= 10) { sprintf(messageText, "10. rotozoom: Rotating and zooming, with interpolation"); RotatePicture(screen,picture,ROTATE_ON,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); } if (end == 10) goto done24bit; if (start <= 11) { sprintf(messageText, "11a. rotozoom: Just zooming (angle=0), with interpolation, centered"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); sprintf(messageText, "11b. rotozoom: Just zooming (angle=0), with interpolation, corner"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_BOTTOMRIGHT); sprintf(messageText, "11c. rotozoom: Just zooming (angle=0), X flip, with interpolation, corner"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_X,SMOOTHING_ON,POSITION_CENTER); sprintf(messageText, "11d. rotozoom: Just zooming (angle=0), Y flip, with interpolation, corner"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_Y,SMOOTHING_ON,POSITION_CENTER); sprintf(messageText, "11e. rotozoom: Just zooming (angle=0), XY flip, with interpolation, corner"); RotatePicture(screen,picture,ROTATE_OFF,FLIP_XY,SMOOTHING_ON,POSITION_CENTER); } if (end == 11) goto done24bit; if (start <= 12) { sprintf(messageText, "12. zoom: Just zooming, with interpolation"); ZoomPicture(screen,picture,SMOOTHING_ON); } if (end == 12) goto done24bit; done24bit: /* Free the picture */ SDL_FreeSurface(picture); if (end <= 12) return; } /* -------- 32 bit test --------- */ if (start<=16) { /* Message */ printf("32 bit tests ...\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Add white frame */ rectangleColor(picture, 0, 0, picture->w-1, picture->h-1, 0xffffffff); /* New source surface is 32bit with defined RGBA ordering */ /* Much faster to do this once rather than the routine on the fly */ fprintf(stderr,"Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, rmask, gmask, bmask, amask); if (picture_again == NULL) goto done32bit; SDL_BlitSurface(picture,NULL,picture_again,NULL); if (start <= 13) { sprintf(messageText, "13. Rotating and zooming, with interpolation (RGBA source)"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); } if (end == 13) goto done32bit; if (start <= 14) { sprintf(messageText, "14. Just zooming (angle=0), with interpolation (RGBA source)"); RotatePicture(screen,picture_again,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); RotatePicture(screen,picture_again,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_BOTTOMRIGHT); } if (end == 14) goto done32bit; SDL_FreeSurface(picture_again); picture_again=NULL; /* New source surface is 32bit with defined ABGR ordering */ /* Much faster to do this once rather than the routine on the fly */ fprintf(stderr,"Converting 24bit image into 32bit ABGR surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, amask, bmask, gmask, rmask); if (picture_again == NULL) goto done32bit; SDL_BlitSurface(picture,NULL,picture_again,NULL); if (start <= 14) { sprintf(messageText, "15. Rotating and zooming, with interpolation (ABGR source)"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); } if (end == 14) goto done32bit; if (start <= 14) { sprintf(messageText, "16. Just zooming (angle=0), with interpolation (ABGR source)"); RotatePicture(screen,picture_again,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_CENTER); RotatePicture(screen,picture_again,ROTATE_OFF,FLIP_OFF,SMOOTHING_ON,POSITION_BOTTOMRIGHT); } if (end == 14) goto done32bit; done32bit: /* Free the picture */ SDL_FreeSurface(picture); if (picture_again) SDL_FreeSurface(picture_again); if (end <= 16) return; } /* -------- 32 bit flip test --------- */ if (start<=22) { /* Message */ printf("32 bit flip tests ...\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Add white frame */ rectangleColor(picture, 0, 0, picture->w-1, picture->h-1, 0xffffffff); /* Excercise flipping functions on 32bit RGBA */ printf("Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, rmask, gmask, bmask, amask); if (picture_again == NULL) goto doneflip; SDL_BlitSurface(picture,NULL,picture_again,NULL); if (start <= 17) { sprintf(messageText, "17. Rotating with x-flip, no interpolation (RGBA source)"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_X,SMOOTHING_OFF,POSITION_CENTER); } if (end == 17) goto doneflip; if (start <= 18) { sprintf(messageText, "18. Rotating with y-flip, no interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_Y,SMOOTHING_OFF,POSITION_CENTER); } if (end == 18) goto doneflip; if (start <= 19) { sprintf(messageText, "19. Rotating with xy-flip, no interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_XY,SMOOTHING_OFF,POSITION_CENTER); } if (end == 19) goto doneflip; if (start <= 20) { sprintf(messageText, "20. Rotating with x-flip, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_X,SMOOTHING_ON,POSITION_CENTER); } if (end == 20) goto doneflip; if (start <= 21) { sprintf(messageText, "21. Rotating with y-flip, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_Y,SMOOTHING_ON,POSITION_CENTER); } if (end == 21) goto doneflip; if (start <= 22) { sprintf(messageText, "22. Rotating with xy-flip, with interpolation"); RotatePicture(screen,picture_again,ROTATE_ON,FLIP_XY,SMOOTHING_ON,POSITION_CENTER); } if (end == 22) goto doneflip; doneflip: /* Free the pictures */ SDL_FreeSurface(picture); if (picture_again) SDL_FreeSurface(picture_again); if (end <= 22) return; } if (start<=24) { /* Message */ printf("Loading 24bit image\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Add white frame */ rectangleColor(picture, 0, 0, picture->w-1, picture->h-1, 0xffffffff); /* Excercise flipping functions on 32bit RGBA */ fprintf(stderr,"Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, rmask, gmask, bmask, amask); SDL_BlitSurface(picture,NULL,picture_again,NULL); sprintf(messageText, "23. CustomTest, values from commandline (32bit)"); CustomTest(screen, picture_again, custom_angle, custom_fx, custom_fy, custom_smooth); SDL_FreeSurface(picture_again); /* Free the picture */ SDL_FreeSurface(picture); /* Message */ printf("Loading 8bit image\n"); /* Load the image into a surface */ bmpfile = "sample8.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } sprintf(messageText, "24. CustomTest, values from commandline (8bit)"); CustomTest(screen, picture, custom_angle, custom_fx, custom_fy, custom_smooth); /* Free the picture */ SDL_FreeSurface(picture); if (end <= 24) return; } if (start<=25) { /* Message */ printf("Loading 24bit image\n"); /* Load the image into a surface */ bmpfile = "sample24.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } /* Add white frame */ rectangleColor(picture, 0, 0, picture->w-1, picture->h-1, 0xffffffff); /* New source surface is 32bit with defined RGBA ordering */ printf("Converting 24bit image into 32bit RGBA surface ...\n"); picture_again = SDL_CreateRGBSurface(SDL_SWSURFACE, picture->w, picture->h, 32, rmask, gmask, bmask, amask); if (picture_again == NULL) goto donerotate90; SDL_BlitSurface(picture,NULL,picture_again,NULL); /* Excercise rotate90 function on 32bit RGBA */ sprintf(messageText, "25. rotate90: Rotate 90 degrees clockwise (32bit)"); RotatePicture90Degrees(screen, picture_again); donerotate90: /* Free the pictures */ SDL_FreeSurface(picture); if (picture_again) SDL_FreeSurface(picture_again); if (end <= 25) return; } if (start<=26) { /* Run accuracy test */ sprintf(messageText, "26. accuracy: zoom by factor of 2"); AccuracyTest1(screen); if (end <= 26) return; } if (start <= 27) { /* Load the image into a surface */ bmpfile = "sample2x2.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } sprintf(messageText, "27a. zoom accuracy: zoom 2x2 bitmap"); AccuracyTest2(screen, picture); /* Free the pictures */ SDL_FreeSurface(picture); /* Load the image into a surface */ bmpfile = "sample3x3.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } sprintf(messageText, "27b. zoom accuracy: zoom 3x3 bitmap"); AccuracyTest2(screen, picture); /* Free the pictures */ SDL_FreeSurface(picture); /* Load the image into a surface */ bmpfile = "sample16x16.bmp"; printf("Loading picture: %s\n", bmpfile); picture = SDL_LoadBMP(bmpfile); if ( picture == NULL ) { fprintf(stderr, "Couldn't load %s: %s\n", bmpfile, SDL_GetError()); return; } sprintf(messageText, "27c. zoom accuracy: zoom 16x16 bitmap"); AccuracyTest2(screen, picture); /* Free the pictures */ SDL_FreeSurface(picture); if (end <= 27) return; } return; }