#ifdef KLEIN_H #error file included twice #endif #define KLEIN_H #ifdef KLEIN_IMPLEMENT #include #include #endif struct klein { unsigned long vertex_size; float *vertex, *normals; unsigned char dim; }; /* The klein format must have: 5 bytes with klein. 1 byte empty for expantions 1 byte with the dimention of the surface */ static inline int klein_export_file(struct klein klein, const char * filename); #ifdef KLEIN_IMPLEMENT static inline int klein_export_file(struct klein klein, const char * filename) { FILE *file = fopen(filename, "wb"); if (!file) return 1; fwrite("KLEIN", 1, 5, file); fwrite("\0", 1, 1, file); fwrite(&klein.dim, 1, 1, file); fwrite(&klein.vertex_size, 8, 1, file); fwrite(klein.vertex, 4, klein.vertex_size * klein.dim, file); fwrite(klein.normals, 4, klein.vertex_size * klein.dim, file); fclose(file); return 0; } #endif