#include #include #include #include #include #include #include #include #define SHAPED_WINDOW_X 150 #define SHAPED_WINDOW_Y 150 #define SHAPED_WINDOW_DIMENSION 640 void render(SDL_Window* window,SDL_Texture *texture,SDL_Rect texture_dimensions) { SDL_SelectRenderer(window); //Clear render-target to blue. SDL_SetRenderDrawColor(0x00,0x00,0xff,0xff); SDL_RenderClear(); //Render the texture. SDL_RenderCopy(texture,&texture_dimensions,&texture_dimensions); SDL_RenderPresent(); } int main(int argc,char** argv) { if(argc < 2) { printf("SDL_Shape requires at least one bitmap file as argument.\n"); exit(-1); } if(SDL_VideoInit(NULL,0) == -1) { printf("Could not initialize SDL video.\n"); exit(-2); } Uint8 num_pictures = argc - 1; SDL_Surface **pictures = malloc(sizeof(SDL_Surface*)*num_pictures); int i = 0; for(i=0;i= num_pictures) current_picture = 0; SDL_QueryTexture(textures[current_picture],&format,&access,&texture_dimensions.w,&texture_dimensions.h); SDL_SetWindowSize(window,texture_dimensions.w,texture_dimensions.h); SDL_SetWindowShape(window,pictures[current_picture],&mode); render(window,textures[current_picture],texture_dimensions); } if(event.type == SDL_QUIT) should_exit = 1; event_pending = 0; } } //Free the textures. for(i=0;i