diff options
author | rodri <rgl@antares-labs.eu> | 2020-04-12 23:53:26 +0000 |
---|---|---|
committer | rodri <rgl@antares-labs.eu> | 2020-04-12 23:53:26 +0000 |
commit | d7bb559d490e6a5ece5dd9256a6f7c11f550b13d (patch) | |
tree | 598c64628722b85fe83da9d2c070d1aa0391e3d0 /obj.h | |
download | libobj-d7bb559d490e6a5ece5dd9256a6f7c11f550b13d.tar.gz libobj-d7bb559d490e6a5ece5dd9256a6f7c11f550b13d.tar.bz2 libobj-d7bb559d490e6a5ece5dd9256a6f7c11f550b13d.zip |
standalone version release.
Diffstat (limited to 'obj.h')
-rw-r--r-- | obj.h | 92 |
1 files changed, 92 insertions, 0 deletions
@@ -0,0 +1,92 @@ +/* vertex types */ +enum { + OBJVGeometric, + OBJVTexture, + OBJVNormal, + OBJVParametric, + OBJNVERT +}; +/* element types */ +enum { + OBJEPoint, + OBJELine, + OBJEFace, + OBJECurve, + OBJECurve2, + OBJESurface +}; +/* grouping types */ +enum { + OBJGGlobal, + OBJGSmoothing, + OBJGMerging +}; +/* object hash table size */ +enum { + OBJHTSIZE = 17 +}; + +typedef struct OBJVertex OBJVertex; +typedef struct OBJVertexArray OBJVertexArray; +typedef struct OBJElem OBJElem; +//typedef struct OBJGroup OBJGroup; +typedef struct OBJObject OBJObject; +typedef struct OBJ OBJ; + +#pragma varargck type "O" OBJ* + +struct OBJVertex +{ + union { + struct { double x, y, z, w; }; /* geometric */ + struct { double u, v, vv; }; /* texture and parametric */ + struct { double i, j, k; }; /* normal */ + }; +}; + +struct OBJVertexArray +{ + OBJVertex *verts; + int nvert; +}; + +struct OBJElem +{ + int *indices; + int nindex; + int type; + OBJElem *next; +}; + +//struct OBJGroup +//{ +// char *name; +// int type; +// OBJElem *elem0; +// OBJGroup *next; +//}; +//struct OBJObject +//{ +// char *name; +// OBJGroup *grptab[OBJHTSIZE]; +// OBJObject *next; +//}; + +struct OBJObject +{ + char *name; + OBJElem *child; + OBJObject *next; +}; + +struct OBJ +{ + OBJVertexArray vertdata[OBJNVERT]; + OBJObject *objtab[OBJHTSIZE]; +}; + +OBJ *objparse(char*); +void objfree(OBJ*); + +int OBJfmt(Fmt*); +void OBJfmtinstall(void); |