X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fipdf.h;h=ff31533e5b452297f8f83b27698ca5c9415b8ae2;hp=5a4f35c3b9d8bc5f4014385caa8c3fa365e87e0e;hb=0ce8df17fae3ec986bd9570e5552aed92c080088;hpb=f8ef964f021d1d6da6ea46bbb1fe8f0250a5be8c diff --git a/src/ipdf.h b/src/ipdf.h index 5a4f35c..ff31533 100644 --- a/src/ipdf.h +++ b/src/ipdf.h @@ -3,10 +3,13 @@ #include "common.h" #include "real.h" +#include "bezier.h" +#include "rect.h" #define C_RED Colour(1,0,0,1) #define C_GREEN Colour(0,1,0,1) #define C_BLUE Colour(0,0,1,1) +#define C_BLACK Colour(0,0,0,1); namespace IPDF { @@ -22,9 +25,11 @@ namespace IPDF */ typedef enum { - RECT_FILLED = 0, + CIRCLE_FILLED = 0, + RECT_FILLED, RECT_OUTLINE, - CIRCLE_FILLED, + BEZIER, + GROUP, NUMBER_OF_OBJECT_TYPES } ObjectType; @@ -33,33 +38,40 @@ namespace IPDF CT_NUMOBJS, CT_OBJTYPES, CT_OBJBOUNDS, + CT_OBJINDICES, + CT_OBJBEZIERS, + CT_OBJGROUPS }; - struct Rect - { - Real x; Real y; Real w; Real h; - Rect() = default; // Needed so we can fread/fwrite this struct - Rect(Real _x, Real _y, Real _w, Real _h) : x(_x), y(_y), w(_w), h(_h) {} - std::string Str() const - { - std::stringstream s; - // float conversion needed because it is fucking impossible to get ostreams working with template classes - s << "{" << Float(x) << ", " << Float(y) << ", " << Float(w) << ", " << Float(h) << "}"; - return s.str(); - } - }; + + + struct Colour { float r; float g; float b; float a; Colour() = default; Colour(float _r, float _g, float _b, float _a) : r(_r), g(_g), b(_b), a(_a) {} }; + + struct Group + { + Colour shading; + }; struct Objects { - std::vector types; - std::vector bounds; + /** Used by all objects **/ + std::vector types; // types of objects + std::vector bounds; // rectangle bounds of objects + + /** Used by BEZIER 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 + + std::vector > groups; }; class View;