1 /*
2  * Copyright (c) 2007-2013 Scott Lembcke and Howling Moon Software
3  *
4  * Permission is hereby granted, free of charge, to any person obtaining a copy
5  * of this software and associated documentation files (the "Software"), to deal
6  * in the Software without restriction, including without limitation the rights
7  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8  * copies of the Software, and to permit persons to whom the Software is
9  * furnished to do so, subject to the following conditions:
10  *
11  * The above copyright notice and this permission notice shall be included in
12  * all copies or substantial portions of the Software.
13  *
14  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20  * SOFTWARE.
21  */
22 module demo.types;
23 
24 import glad.gl.all;
25 
26 import demo.dchip;
27 
28 /**
29     This module contains all the types which the various drawing modules use.
30     In the C source the types were duplicated across source files,
31     probably to avoid too many #include's.
32 */
33 
34 struct Color
35 {
36     float r = 0, g = 0, b = 0, a = 0;
37 }
38 
39 Color RGBAColor(float r, float g, float b, float a)
40 {
41     Color color = { r, g, b, a };
42     return color;
43 }
44 
45 Color LAColor(float l, float a)
46 {
47     Color color = { l, l, l, a };
48     return color;
49 }
50 
51 struct v2f
52 {
53     static v2f opCall(cpVect v)
54     {
55         v2f v2 = { cast(GLfloat)v.x, cast(GLfloat)v.y };
56         return v2;
57     }
58 
59     GLfloat x = 0, y = 0;
60 }
61 
62 struct Vertex
63 {
64     v2f vertex, aa_coord;
65     Color fill_color, outline_color;
66 }
67 
68 struct Triangle
69 {
70     Vertex a, b, c;
71 }