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 }