/************************************************************** * * ======== kalmia ======== * * a COLLADA importer library * copyright (c) 2022 kate swanson (sanine) * * This is anti-capitalist software, released for free use by individuals and * organizations that do not operate by capitalist principles. * * Permission is hereby granted, free of charge, to any person or * organization (the "User") obtaining a copy of this software and associated * documentation files (the "Software"), to use, copy, modify, merge, * distribute, and/or sell copies of the Software, subject to the following * conditions: * * 1. The above copyright notice and this permission notice shall be included * in all copies or modified versions of the Software. * * 2. The User is one of the following: * a. An individual person, laboring for themselves * b. A non-profit organization * c. An educational institution * d. An organization that seeks shared profit for all of its members, and * allows non-members to set the cost of their labor * * 3. If the User is an organization with owners, then all owners are workers * and all workers are owners with equal equity and/or equal vote. * * 4. If the User is an organization, then the User is not law enforcement or * military, or working for or under either. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT EXPRESS OR IMPLIED WARRANTY OF * ANY KIND, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * * https://anticapitalist.software/ * https://sanine.net * ****************************************************************/ #ifndef KALMIA_H #define KALMIA_H #include /* kalmia uses semantic versioning (semver.org) */ #define KALMIA_VERSION_MAJOR 0 #define KALMIA_VERSION_MINOR 0 #define KALMIA_VERSION_PATCH 0 /* determine precision */ #ifdef KALMIA_USE_DOUBLE typedef double ka_real_t; #define KA_STR_TO_REAL(nptr, end) strtod(nptr, end) #else typedef float ka_real_t; #define KA_STR_TO_REAL(nptr, end) strtof(nptr, end) #endif /**************** geometry types ****************/ struct ka_float_array_t { char *id; size_t count; ka_real_t *data; }; struct ka_param_t { char *name; char *type; }; struct ka_accessor_t { size_t count; size_t offset; char *source; size_t stride; struct ka_param_t *param; size_t param_count; }; struct ka_technique_common_t { struct ka_accessor_t accessor; }; struct ka_source_t { char *id; struct ka_float_array_t float_array; struct ka_technique_common_t technique_common; }; struct ka_vertices_t { }; struct ka_triangles_t { }; struct ka_mesh_t { struct ka_source_t *source; size_t source_count; struct ka_vertices_t vertices; struct ka_triangles_t *triangles; size_t triangles_count; }; struct ka_geometry_t { struct ka_mesh_t mesh; }; typedef ka_real_t ka_matrix_t[16]; #endif