Mercurial > sdl-ios-xcode
comparison src/video/SDL_shape.c @ 4796:e8caf178d082
Added in Visual Studio patch.
author | Eli Gottlieb <eligottlieb@gmail.com> |
---|---|
date | Thu, 15 Jul 2010 01:41:38 -0400 |
parents | 6f0bc179771c |
children | a0e096916474 |
comparison
equal
deleted
inserted
replaced
4795:6f0bc179771c | 4796:e8caf178d082 |
---|---|
28 #include "SDL_surface.h" | 28 #include "SDL_surface.h" |
29 #include "SDL_shape.h" | 29 #include "SDL_shape.h" |
30 | 30 |
31 SDL_Window* SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags) { | 31 SDL_Window* SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags) { |
32 SDL_Window *result = SDL_CreateWindow(title,x,y,w,h,SDL_WINDOW_BORDERLESS | flags & !SDL_WINDOW_FULLSCREEN & !SDL_WINDOW_SHOWN); | 32 SDL_Window *result = SDL_CreateWindow(title,x,y,w,h,SDL_WINDOW_BORDERLESS | flags & !SDL_WINDOW_FULLSCREEN & !SDL_WINDOW_SHOWN); |
33 result->shaper = result->display->device->shape_driver.CreateShaper(result); | 33 if(result != NULL) { |
34 result->shaper->usershownflag = flags & SDL_WINDOW_SHOWN; | 34 result->shaper = result->display->device->shape_driver.CreateShaper(result); |
35 result->shaper->alphacutoff = 1; | 35 if(result->shaper != NULL) { |
36 result->shaper->hasshape = SDL_FALSE; | 36 result->shaper->usershownflag = flags & SDL_WINDOW_SHOWN; |
37 return result; | 37 result->shaper->alphacutoff = 1; |
38 result->shaper->hasshape = SDL_FALSE; | |
39 return result; | |
40 } | |
41 else { | |
42 SDL_DestroyWindow(result); | |
43 return NULL; | |
44 } | |
45 } | |
46 else | |
47 return NULL; | |
38 } | 48 } |
39 | 49 |
40 SDL_bool SDL_IsShapedWindow(const SDL_Window *window) { | 50 SDL_bool SDL_IsShapedWindow(const SDL_Window *window) { |
41 if(window == NULL) | 51 if(window == NULL) |
42 return SDL_FALSE; | 52 return SDL_FALSE; |
53 Uint32 bitmap_pixel; | 63 Uint32 bitmap_pixel; |
54 if(SDL_MUSTLOCK(shape)) | 64 if(SDL_MUSTLOCK(shape)) |
55 SDL_LockSurface(shape); | 65 SDL_LockSurface(shape); |
56 for(x = 0;x<shape->w;x++) | 66 for(x = 0;x<shape->w;x++) |
57 for(y = 0;y<shape->h;y++) { | 67 for(y = 0;y<shape->h;y++) { |
58 pixel = shape->pixels + (y*shape->pitch) + (x*shape->format->BytesPerPixel); | 68 pixel = (Uint8 *)(shape->pixels) + (y*shape->pitch) + (x*shape->format->BytesPerPixel); |
59 alpha = 0; | 69 alpha = 0; |
60 SDL_GetRGBA(*(Uint32*)pixel,shape->format,&r,&g,&b,&alpha); | 70 SDL_GetRGBA(*(Uint32*)pixel,shape->format,&r,&g,&b,&alpha); |
61 Uint32 bitmap_pixel = y*shape->w + x; | 71 bitmap_pixel = y*shape->w + x; |
62 bitmap[bitmap_pixel / ppb] |= (alpha >= alphacutoff ? value : 0) << ((ppb - 1) - (bitmap_pixel % ppb)); | 72 bitmap[bitmap_pixel / ppb] |= (alpha >= alphacutoff ? value : 0) << ((ppb - 1) - (bitmap_pixel % ppb)); |
63 } | 73 } |
64 if(SDL_MUSTLOCK(shape)) | 74 if(SDL_MUSTLOCK(shape)) |
65 SDL_UnlockSurface(shape); | 75 SDL_UnlockSurface(shape); |
66 } | 76 } |