1 /+ 2 + Copyright 2022 – 2023 Aya Partridge 3 + Copyright 2018 - 2022 Michael D. Parker 4 + Distributed under the Boost Software License, Version 1.0. 5 + (See accompanying file LICENSE_1_0.txt or copy at 6 + http://www.boost.org/LICENSE_1_0.txt) 7 +/ 8 module sdl.shape; 9 10 import bindbc.sdl.config; 11 import bindbc.sdl.codegen; 12 13 import sdl.pixels: SDL_Color; 14 import sdl.stdinc: SDL_bool; 15 import sdl.surface: SDL_Surface; 16 import sdl.video: SDL_Window, SDL_WindowFlags; 17 18 enum{ 19 SDL_NONSHAPEABLE_WINDOW = -1, 20 SDL_INVALID_SHAPE_ARGUMENT = -2, 21 SDL_WINDOW_LACKS_SHAPE = -3, 22 } 23 24 alias WindowShapeMode = int; 25 enum: WindowShapeMode{ 26 ShapeModeDefault = 0, 27 ShapeModeBinarizeAlpha = 1, 28 ShapeModeReverseBinarizeAlpha = 2, 29 ShapeModeColorKey = 3, 30 31 ShapeModeColourKey = ShapeModeColorKey, 32 } 33 34 enum SDL_SHAPEMODEALPHA(WindowShapeMode mode) = (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha); 35 36 union SDL_WindowShapeParams{ 37 ubyte binarizationCutoff; 38 SDL_Color colorKey; 39 alias colourKey = colorKey; 40 } 41 42 struct SDL_WindowShapeMode{ 43 WindowShapeMode mode; 44 SDL_WindowShapeParams parameters; 45 } 46 47 mixin(joinFnBinds((){ 48 string[][] ret; 49 ret ~= makeFnBinds([ 50 [q{SDL_Window*}, q{SDL_CreateShapedWindow}, q{const(char)* title, uint x, uint y, uint w, uint h, SDL_WindowFlags flags}], 51 [q{SDL_bool}, q{SDL_IsShapedWindow}, q{const(SDL_Window)* window}], 52 [q{int}, q{SDL_SetWindowShape}, q{SDL_Window* window, SDL_Surface* shape, SDL_WindowShapeMode* shape_mode}], 53 [q{int}, q{SDL_GetShapedWindowMode}, q{SDL_Window* window, SDL_WindowShapeMode* shape_mode}], 54 ]); 55 return ret; 56 }()));