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.sdlblendmode;
8 
9 import bindbc.sdl.config;
10 
11 static if(sdlSupport >= SDLSupport.sdl2012) {
12     enum SDL_BlendMode {
13         SDL_BLENDMODE_NONE = 0x00000000,
14         SDL_BLENDMODE_BLEND = 0x00000001,
15         SDL_BLENDMODE_ADD = 0x00000002,
16         SDL_BLENDMODE_MOD = 0x00000004,
17         SDL_BLENDMODE_MUL = 0x00000008,
18         SDL_BLENDMODE_INVALID = 0x7FFFFFFF,
19     }
20 }
21 else static if(sdlSupport >= SDLSupport.sdl206) {
22     enum SDL_BlendMode {
23         SDL_BLENDMODE_NONE = 0x00000000,
24         SDL_BLENDMODE_BLEND = 0x00000001,
25         SDL_BLENDMODE_ADD = 0x00000002,
26         SDL_BLENDMODE_MOD = 0x00000004,
27         SDL_BLENDMODE_INVALID = 0x7FFFFFFF,
28     }
29 }
30 else {
31     enum SDL_BlendMode {
32         SDL_BLENDMODE_NONE = 0x00000000,
33         SDL_BLENDMODE_BLEND = 0x00000001,
34         SDL_BLENDMODE_ADD = 0x00000002,
35         SDL_BLENDMODE_MOD = 0x00000004,
36     }
37 }
38 mixin(expandEnum!SDL_BlendMode);
39 
40 static if(sdlSupport >= SDLSupport.sdl206) {
41 
42     enum SDL_BlendOperation {
43         SDL_BLENDOPERATION_ADD = 0x1,
44         SDL_BLENDOPERATION_SUBTRACT = 0x2,
45         SDL_BLENDOPERATION_REV_SUBTRACT = 0x3,
46         SDL_BLENDOPERATION_MINIMUM = 0x4,
47         SDL_BLENDOPERATION_MAXIMUM = 0x5,
48     }
49     mixin(expandEnum!SDL_BlendOperation);
50 
51     enum SDL_BlendFactor {
52         SDL_BLENDFACTOR_ZERO = 0x1,
53         SDL_BLENDFACTOR_ONE = 0x2,
54         SDL_BLENDFACTOR_SRC_COLOR = 0x3,
55         SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4,
56         SDL_BLENDFACTOR_SRC_ALPHA = 0x5,
57         SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6,
58         SDL_BLENDFACTOR_DST_COLOR = 0x7,
59         SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8,
60         SDL_BLENDFACTOR_DST_ALPHA = 0x9,
61         SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA,
62     }
63     mixin(expandEnum!SDL_BlendFactor);
64 }
65 
66 static if(staticBinding) {
67     extern(C) @nogc nothrow {
68         static if(sdlSupport >= SDLSupport.sdl206) {
69             SDL_BlendMode SDL_ComposeCustomBlendMode(SDL_BlendFactor,SDL_BlendFactor,SDL_BlendOperation,SDL_BlendFactor,SDL_BlendFactor,SDL_BlendOperation);
70         }
71     }
72 }
73 else {
74     static if(sdlSupport >= SDLSupport.sdl206) {
75         extern(C) @nogc nothrow {
76             alias pSDL_ComposeCustomBlendMode = SDL_BlendMode function(SDL_BlendFactor,SDL_BlendFactor,SDL_BlendOperation,SDL_BlendFactor,SDL_BlendFactor,SDL_BlendOperation);
77         }
78 
79         __gshared {
80             pSDL_ComposeCustomBlendMode SDL_ComposeCustomBlendMode;
81         }
82     }
83 }