X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fipdf.h;h=633c8ef12c2dc3da64681f61f56e5738c53f2717;hp=33962d65a40843b6c57d9b0ab748b12d3697ae99;hb=0f3a7a9d2c6cc19852fae8ed048dcd1089d33250;hpb=e24f0693b4e3989e625448009175c06e1e6e08d4 diff --git a/src/ipdf.h b/src/ipdf.h index 33962d6..633c8ef 100644 --- a/src/ipdf.h +++ b/src/ipdf.h @@ -1,10 +1,59 @@ #ifndef _IPDF_H #define _IPDF_H +#include "common.h" +#include "real.h" +#include "bezier.h" +#include "rect.h" + +#include "path.h" + namespace IPDF { - typedef float Real; - inline float RealToFloat(Real r) {return r;} + + inline Real Random(Real max=1, Real min=0) + { + return min + (max-min) * (Real(rand() % (int)1e6) / Real(1e6)); + } + + typedef unsigned ObjectID; + /** Type of object + * NOTE: Extra entry in the enum so we can use this as an array index + */ + typedef enum + { + CIRCLE_FILLED = 0, + RECT_FILLED, + RECT_OUTLINE, + BEZIER, + PATH, + NUMBER_OF_OBJECT_TYPES + } ObjectType; + + enum DocChunkTypes + { + CT_NUMOBJS, + CT_OBJTYPES, + CT_OBJBOUNDS, + CT_OBJINDICES, + CT_OBJBEZIERS, + CT_OBJPATHS + }; + + struct Objects + { + /** Used by all objects **/ + std::vector types; // types of objects + std::vector bounds; // rectangle bounds of objects + /** Used by BEZIER and GROUP to identify data position in relevant vector **/ + std::vector data_indices; + /** Used by BEZIER only **/ + std::vector beziers; // bezier curves - look up by data_indices + /** Used by PATH only **/ + std::vector paths; + }; + + class View; }