face mirroring
[henge/apc.git] / src / ir.h
index 3dd4264..b19b2d3 100644 (file)
--- a/src/ir.h
+++ b/src/ir.h
 #include <unitypes.h>\r
 #include "apc.h"\r
 \r
-struct ir_frameinfo_t\r
-{ int facing, w, h; };\r
-typedef union  ir_setdata_t*   ir_setdata;\r
-typedef struct ir_frameinfo_t* ir_frameinfo;\r
-typedef struct ir_set_t*       ir_set;\r
-typedef struct ir_class_t*     ir_class;\r
-typedef struct ir_setld_t*     ir_setld;\r
-typedef struct ir_classld_t*   ir_classld;\r
+typedef union  ir_setdata_t*    ir_setdata;\r
+typedef struct ir_frameinfo_t*  ir_frameinfo;\r
+typedef struct ir_set_t*        ir_set;\r
+typedef struct ir_class_t*      ir_class;\r
+typedef struct ir_setld_t*      ir_setld;\r
+typedef struct ir_classld_t*    ir_classld;\r
+typedef struct ir_facinglist_t* facinglist;\r
 /* Classes and Sets\r
    Classes are rooted at a special root class, representing the current working\r
    directory at scan-time, named ".".  The root class can always be identified\r
@@ -86,28 +85,36 @@ enum ltype { OLINK, MLINK, VLINK, ALINK };
 void       ir_set_assign_data(ir_set,ir_setdata);\r
 void       ir_set_assign_ref(ir_set,uint32_t);\r
 void       ir_data_assign_path(ir_setdata,const uint8_t*);\r
-ir_setdata ir_framesheet(const uint8_t*, apc_facing, int,int);\r
-ir_setdata ir_mapsheet(const uint8_t*, apc_facing, int,int);\r
+ir_setdata ir_framesheet(const uint8_t*,facinglist,int,int);\r
+ir_setdata ir_mapsheet(const uint8_t*,facinglist,int,int);\r
 ir_setdata ir_audio(const uint8_t*);\r
 ir_setdata ir_link(enum ltype,ir_setld,const uint8_t*);\r
+/* Facing Lists for creating frame/mapsheets */\r
+facinglist ir_facinglist(apc_facing);\r
+facinglist ir_facinglist_push(facinglist,apc_facing);\r
 /* Output */\r
-framebox     ir_set_framebox(ir_set);\r
-audiodata    ir_set_audio(ir_set);\r
-linkdata     ir_set_link(ir_set);\r
-enum ltype   ir_linkdata_type(linkdata);\r
-uint32_t     ir_linkdata_ref(linkdata);\r
-ir_set       ir_linkdata_set(linkdata);\r
-void         ir_linkdata_assign_set(linkdata,ir_set);\r
-void         ir_linkdata_assign_type(linkdata,enum ltype);\r
-uint8_t*     ir_linkdata_dlink_name(linkdata);\r
-ir_setdata   ir_setdata_nextsib(ir_setdata);\r
-uint8_t*     ir_setdata_name(ir_setdata);\r
-uint8_t*     ir_setdata_filename(ir_setdata);\r
-long         ir_setdata_fpos(ir_setdata);\r
-void         ir_setdata_assign_fpos(ir_setdata,long);\r
-framedata    ir_framebox_framesheet(framebox,apc_facing);\r
-framedata    ir_framebox_mapsheet(framebox,apc_facing);\r
-ir_frameinfo ir_framedata_frameinfo(framedata);\r
+framebox   ir_set_framebox(ir_set);\r
+audiodata  ir_set_audio(ir_set);\r
+linkdata   ir_set_link(ir_set);\r
+enum ltype ir_linkdata_type(linkdata);\r
+uint32_t   ir_linkdata_ref(linkdata);\r
+ir_set     ir_linkdata_set(linkdata);\r
+void       ir_linkdata_assign_set(linkdata,ir_set);\r
+void       ir_linkdata_assign_type(linkdata,enum ltype);\r
+uint8_t*   ir_linkdata_dlink_name(linkdata);\r
+ir_setdata ir_setdata_nextsib(ir_setdata);\r
+uint8_t*   ir_setdata_name(ir_setdata);\r
+uint8_t*   ir_setdata_filename(ir_setdata);\r
+long       ir_setdata_fpos(ir_setdata);\r
+void       ir_setdata_assign_fpos(ir_setdata,long);\r
+void       ir_setdata_assign_name(ir_setdata,uint8_t*);\r
+/* Framedata */\r
+framedata  ir_framebox_framesheet(framebox,apc_facing);\r
+framedata  ir_framebox_mapsheet(framebox,apc_facing);\r
+int        ir_framedata_width(framedata);\r
+int        ir_framedata_height(framedata);\r
+apc_facing ir_framedata_firstfacing(framedata);\r
+apc_facing ir_framedata_nextfacing(framedata);\r
 /* Reference Linking Data \r
    Create linking data to sets or classes that will be resolved at a later\r
    stage.  Class references can be created from an ir_class object, if\r