X-Git-Url: https://git.kengrimes.com/?p=henge%2Fapc.git;a=blobdiff_plain;f=src%2Fir.h;fp=src%2Fir.h;h=b19b2d32bee2b06cf62524f3e07764e6dd438ccb;hp=3dd4264a74677af5fb698bca95b794322f152037;hb=b14fd3a9556894089856bbee50ebe727d9b64635;hpb=d6c67861eaed9dc64d8bf2c1ddd91bf7a1f458fe diff --git a/src/ir.h b/src/ir.h index 3dd4264..b19b2d3 100644 --- a/src/ir.h +++ b/src/ir.h @@ -22,14 +22,13 @@ #include #include "apc.h" -struct ir_frameinfo_t -{ int facing, w, h; }; -typedef union ir_setdata_t* ir_setdata; -typedef struct ir_frameinfo_t* ir_frameinfo; -typedef struct ir_set_t* ir_set; -typedef struct ir_class_t* ir_class; -typedef struct ir_setld_t* ir_setld; -typedef struct ir_classld_t* ir_classld; +typedef union ir_setdata_t* ir_setdata; +typedef struct ir_frameinfo_t* ir_frameinfo; +typedef struct ir_set_t* ir_set; +typedef struct ir_class_t* ir_class; +typedef struct ir_setld_t* ir_setld; +typedef struct ir_classld_t* ir_classld; +typedef struct ir_facinglist_t* facinglist; /* Classes and Sets Classes are rooted at a special root class, representing the current working directory at scan-time, named ".". The root class can always be identified @@ -86,28 +85,36 @@ enum ltype { OLINK, MLINK, VLINK, ALINK }; void ir_set_assign_data(ir_set,ir_setdata); void ir_set_assign_ref(ir_set,uint32_t); void ir_data_assign_path(ir_setdata,const uint8_t*); -ir_setdata ir_framesheet(const uint8_t*, apc_facing, int,int); -ir_setdata ir_mapsheet(const uint8_t*, apc_facing, int,int); +ir_setdata ir_framesheet(const uint8_t*,facinglist,int,int); +ir_setdata ir_mapsheet(const uint8_t*,facinglist,int,int); ir_setdata ir_audio(const uint8_t*); ir_setdata ir_link(enum ltype,ir_setld,const uint8_t*); +/* Facing Lists for creating frame/mapsheets */ +facinglist ir_facinglist(apc_facing); +facinglist ir_facinglist_push(facinglist,apc_facing); /* Output */ -framebox ir_set_framebox(ir_set); -audiodata ir_set_audio(ir_set); -linkdata ir_set_link(ir_set); -enum ltype ir_linkdata_type(linkdata); -uint32_t ir_linkdata_ref(linkdata); -ir_set ir_linkdata_set(linkdata); -void ir_linkdata_assign_set(linkdata,ir_set); -void ir_linkdata_assign_type(linkdata,enum ltype); -uint8_t* ir_linkdata_dlink_name(linkdata); -ir_setdata ir_setdata_nextsib(ir_setdata); -uint8_t* ir_setdata_name(ir_setdata); -uint8_t* ir_setdata_filename(ir_setdata); -long ir_setdata_fpos(ir_setdata); -void ir_setdata_assign_fpos(ir_setdata,long); -framedata ir_framebox_framesheet(framebox,apc_facing); -framedata ir_framebox_mapsheet(framebox,apc_facing); -ir_frameinfo ir_framedata_frameinfo(framedata); +framebox ir_set_framebox(ir_set); +audiodata ir_set_audio(ir_set); +linkdata ir_set_link(ir_set); +enum ltype ir_linkdata_type(linkdata); +uint32_t ir_linkdata_ref(linkdata); +ir_set ir_linkdata_set(linkdata); +void ir_linkdata_assign_set(linkdata,ir_set); +void ir_linkdata_assign_type(linkdata,enum ltype); +uint8_t* ir_linkdata_dlink_name(linkdata); +ir_setdata ir_setdata_nextsib(ir_setdata); +uint8_t* ir_setdata_name(ir_setdata); +uint8_t* ir_setdata_filename(ir_setdata); +long ir_setdata_fpos(ir_setdata); +void ir_setdata_assign_fpos(ir_setdata,long); +void ir_setdata_assign_name(ir_setdata,uint8_t*); +/* Framedata */ +framedata ir_framebox_framesheet(framebox,apc_facing); +framedata ir_framebox_mapsheet(framebox,apc_facing); +int ir_framedata_width(framedata); +int ir_framedata_height(framedata); +apc_facing ir_framedata_firstfacing(framedata); +apc_facing ir_framedata_nextfacing(framedata); /* Reference Linking Data Create linking data to sets or classes that will be resolved at a later stage. Class references can be created from an ir_class object, if