1
2 // Copyright Michael D. Parker 2018.
3 // Distributed under the Boost Software License, Version 1.0.
4 // (See accompanying file LICENSE_1_0.txt or copy at
5 // http://www.boost.org/LICENSE_1_0.txt)
6
7 module bindbc.sdl.bind.sdlshape;
8
9 import bindbc.sdl.config;
10 import bindbc.sdl.bind.sdlpixels : SDL_Color;
11 import bindbc.sdl.bind.sdlstdinc : SDL_bool;
12 import bindbc.sdl.bind.sdlsurface : SDL_Surface;
13 import bindbc.sdl.bind.sdlvideo : SDL_Window;
14
15 enum {
16 SDL_NONSHAPEABLE_WINDOW = -1,
17 SDL_INVALID_SHAPE_ARGUMENT = -2,
18 SDL_WINDOW_LACKS_SHAPE = -3,
19 }
20
21 enum WindowShapeMode {
22 ShapeModeDefault,
23 ShapeModeBinarizeAlpha,
24 ShapeModeReverseBinarizeAlpha,
25 ShapeModeColorKey
26 }
27 mixin(expandEnum!WindowShapeMode);
28
29 enum SDL_SHAPEMODEALPHA(WindowShapeMode mode) = (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha);
30
31 union SDL_WindowShapeParams {
32 ubyte binarizationCutoff;
33 SDL_Color colorKey;
34 }
35
36 struct SDL_WindowShapeMode {
37 WindowShapeMode mode;
38 SDL_WindowShapeParams parameters;
39 }
40
41 version(BindSDL_Static) {
42 extern(C) @nogc nothrow {
43 SDL_Window* SDL_CreateShapedWindow(const(char)*,uint,uint,uint,uint,uint);
44 SDL_bool SDL_IsShapedWindow(const(SDL_Window)*);
45 int SDL_SetWindowShape(SDL_Window*,SDL_Surface*,SDL_WindowShapeMode*);
46 int SDL_GetShapedWindowMode(SDL_Window*,SDL_WindowShapeMode*);
47 }
48 }
49 else {
50 extern(C) @nogc nothrow {
51 alias pSDL_CreateShapedWindow = SDL_Window* function(const(char)*,uint,uint,uint,uint,uint);
52 alias pSDL_IsShapedWindow = SDL_bool function(const(SDL_Window)*);
53 alias pSDL_SetWindowShape = int function(SDL_Window*,SDL_Surface*,SDL_WindowShapeMode*);
54 alias pSDL_GetShapedWindowMode = int function(SDL_Window*,SDL_WindowShapeMode*);
55 }
56
57 __gshared {
58 pSDL_CreateShapedWindow SDL_CreateShapedWindow;
59 pSDL_IsShapedWindow SDL_IsShapedWindow;
60 pSDL_SetWindowShape SDL_SetWindowShape;
61 pSDL_GetShapedWindowMode SDL_GetShapedWindowMode;
62 }
63 }