#ifndef STLFILE_H #define STLFILE_H #include #include #include #include #include #include "util.h" enum { KW_INVALID = -1, KW_UNKNOWN, KW_SOLID_BEGIN, KW_SOLID_END, KW_FACET_BEGIN, KW_FACET_END, KW_LOOP_BEGIN, KW_LOOP_END, KW_VERTEX }; enum { STATE_SOLID, STATE_FACET, STATE_LOOP }; enum { TYPE_ASCII, TYPE_BIN }; struct stack { int *data; size_t count, cap; }; struct parseinfo { char header[80], *hash, *modelname; unsigned int loopcount; float bbmin[3], bbmax[3]; int type, valid; }; int parse_file(struct parseinfo *info, char *buf, size_t len); int save_info(struct parseinfo *info, FILE *f); int load_info(struct parseinfo *info, FILE *f); void print_info(struct parseinfo *info); void free_info(struct parseinfo *info); #endif /* STLFILE_H */