1 /* graphene-types.h: Shared types 2 * 3 * SPDX-License-Identifier: MIT 4 * 5 * Copyright 2014 Emmanuele Bassi 6 * 7 * Permission is hereby granted, free of charge, to any person obtaining a copy 8 * of this software and associated documentation files (the "Software"), to deal 9 * in the Software without restriction, including without limitation the rights 10 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 11 * copies of the Software, and to permit persons to whom the Software is 12 * furnished to do so, subject to the following conditions: 13 * 14 * The above copyright notice and this permission notice shall be included in 15 * all copies or substantial portions of the Software. 16 * 17 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 18 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 19 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 20 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 21 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 22 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 23 * THE SOFTWARE. 24 */ 25 26 #pragma once 27 28 #if !defined(GRAPHENE_H_INSIDE) && !defined(GRAPHENE_COMPILATION) 29 #error "Only graphene.h can be included directly." 30 #endif 31 32 #include "graphene-config.h" 33 #include "graphene-macros.h" 34 #include "graphene-version-macros.h" 35 36 GRAPHENE_BEGIN_DECLS 37 38 /** 39 * GRAPHENE_VEC2_LEN: 40 * 41 * Evaluates to the number of components of a #graphene_vec2_t. 42 * 43 * This symbol is useful when declaring a C array of floating 44 * point values to be used with graphene_vec2_init_from_float() and 45 * graphene_vec2_to_float(), e.g. 46 * 47 * |[ 48 * float v[GRAPHENE_VEC2_LEN]; 49 * 50 * // vec is defined elsewhere 51 * graphene_vec2_to_float (&vec, v); 52 * 53 * for (int i = 0; i < GRAPHENE_VEC2_LEN; i++) 54 * fprintf (stdout, "component %d: %g\n", i, v[i]); 55 * ]| 56 * 57 * Since: 1.0 58 */ 59 #define GRAPHENE_VEC2_LEN 2 60 61 /** 62 * GRAPHENE_VEC3_LEN: 63 * 64 * Evaluates to the number of components of a #graphene_vec3_t. 65 * 66 * This symbol is useful when declaring a C array of floating 67 * point values to be used with graphene_vec3_init_from_float() and 68 * graphene_vec3_to_float(), e.g. 69 * 70 * |[ 71 * float v[GRAPHENE_VEC3_LEN]; 72 * 73 * // vec is defined elsewhere 74 * graphene_vec3_to_float (&vec, v); 75 * 76 * for (int i = 0; i < GRAPHENE_VEC2_LEN; i++) 77 * fprintf (stdout, "component %d: %g\n", i, v[i]); 78 * ]| 79 * 80 * Since: 1.0 81 */ 82 #define GRAPHENE_VEC3_LEN 3 83 84 /** 85 * GRAPHENE_VEC4_LEN: 86 * 87 * Evaluates to the number of components of a #graphene_vec4_t. 88 * 89 * This symbol is useful when declaring a C array of floating 90 * point values to be used with graphene_vec4_init_from_float() and 91 * graphene_vec4_to_float(), e.g. 92 * 93 * |[ 94 * float v[GRAPHENE_VEC4_LEN]; 95 * 96 * // vec is defined elsewhere 97 * graphene_vec4_to_float (&vec, v); 98 * 99 * for (int i = 0; i < GRAPHENE_VEC4_LEN; i++) 100 * fprintf (stdout, "component %d: %g\n", i, v[i]); 101 * ]| 102 * 103 * Since: 1.0 104 */ 105 #define GRAPHENE_VEC4_LEN 4 106 107 typedef struct _graphene_vec2_t graphene_vec2_t; 108 typedef struct _graphene_vec3_t graphene_vec3_t; 109 typedef struct _graphene_vec4_t graphene_vec4_t; 110 111 typedef struct _graphene_matrix_t graphene_matrix_t; 112 113 typedef struct _graphene_point_t graphene_point_t; 114 typedef struct _graphene_size_t graphene_size_t; 115 typedef struct _graphene_rect_t graphene_rect_t; 116 117 typedef struct _graphene_point3d_t graphene_point3d_t; 118 typedef struct _graphene_quad_t graphene_quad_t; 119 typedef struct _graphene_quaternion_t graphene_quaternion_t; 120 typedef struct _graphene_euler_t graphene_euler_t; 121 122 typedef struct _graphene_plane_t graphene_plane_t; 123 typedef struct _graphene_frustum_t graphene_frustum_t; 124 typedef struct _graphene_sphere_t graphene_sphere_t; 125 typedef struct _graphene_box_t graphene_box_t; 126 typedef struct _graphene_triangle_t graphene_triangle_t; 127 typedef struct _graphene_ray_t graphene_ray_t; 128 129 GRAPHENE_END_DECLS 130