comparison src/video/win32/SDL_win32shape.c @ 4852:c19c729eb201

Added hiding-as-positioning trick and finally fixed flags.
author egottlieb
date Sun, 15 Aug 2010 21:46:04 -0400
parents 5624fb0190b5
children 661cb2f7c22a
comparison
equal deleted inserted replaced
4851:5624fb0190b5 4852:c19c729eb201
48 CombineRectRegions(SDL_ShapeTree* node,void* closure) { 48 CombineRectRegions(SDL_ShapeTree* node,void* closure) {
49 char debug_str[200]; 49 char debug_str[200];
50 HRGN mask_region = *((HRGN*)closure),temp_region = NULL; 50 HRGN mask_region = *((HRGN*)closure),temp_region = NULL;
51 if(node->kind == OpaqueShape) { 51 if(node->kind == OpaqueShape) {
52 //Win32 API regions exclude their outline, so we widen the region by one pixel in each direction to include the real outline. 52 //Win32 API regions exclude their outline, so we widen the region by one pixel in each direction to include the real outline.
53 sprintf_s(&debug_str[0],200,"x: %u y: %u, x+w: %u, y+h: %u\n", 53 /* sprintf_s(&debug_str[0],200,"x: %u y: %u, x+w: %u, y+h: %u\n",
54 node->data.shape.x,node->data.shape.y, 54 node->data.shape.x,node->data.shape.y,
55 node->data.shape.x + node->data.shape.w,node->data.shape.y + node->data.shape.h); 55 node->data.shape.x + node->data.shape.w,node->data.shape.y + node->data.shape.h);*/
56 OutputDebugStringA(debug_str); 56 //OutputDebugStringA(debug_str);
57 OutputDebugStringA("Converting SDL_ShapeTree opaque node to Windows rectangle.\n");
58 temp_region = CreateRectRgn(node->data.shape.x - 1,node->data.shape.y - 1,node->data.shape.x + node->data.shape.w + 1,node->data.shape.y + node->data.shape.h + 1); 57 temp_region = CreateRectRgn(node->data.shape.x - 1,node->data.shape.y - 1,node->data.shape.x + node->data.shape.w + 1,node->data.shape.y + node->data.shape.h + 1);
59 if(mask_region != NULL) { 58 if(mask_region != NULL) {
60 CombineRgn(mask_region,mask_region,temp_region,RGN_OR); 59 CombineRgn(mask_region,mask_region,temp_region,RGN_OR);
61 DeleteObject(temp_region); 60 DeleteObject(temp_region);
62 } 61 }
98 if (data == NULL) 97 if (data == NULL)
99 return -1; 98 return -1;
100 99
101 if(data->mask_tree != NULL) 100 if(data->mask_tree != NULL)
102 SDL_FreeShapeTree(&data->mask_tree); 101 SDL_FreeShapeTree(&data->mask_tree);
103 102 if(window->shaper->hasshape == SDL_TRUE) {
104 window->shaper->userx = window->x; 103 window->shaper->userx = window->x;
105 window->shaper->usery = window->y; 104 window->shaper->usery = window->y;
106 SDL_SetWindowPosition(window,-1000,-1000); 105 SDL_SetWindowPosition(window,-1000,-1000);
106 }
107 107
108 return 0; 108 return 0;
109 } 109 }