X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fipdf.h;h=211f2c33f79c5b8a7947fa5ffecd7857782670e3;hp=c9a6a234f31ab7688d5f61412bc150497d846da7;hb=8942bd699d8e1ddede1127421ad18bed53232ff3;hpb=e164c93218ed4599614f4f6e5e815429a3fedbf7 diff --git a/src/ipdf.h b/src/ipdf.h index c9a6a23..211f2c3 100644 --- a/src/ipdf.h +++ b/src/ipdf.h @@ -13,17 +13,26 @@ namespace IPDF inline Real Random(Real max=1, Real min=0) { - return min + (max-min) * ((Real)(rand() % (int)1e6) / 1e6); + return min + (max-min) * (Real(rand() % (int)1e6) / Real(1e6)); } typedef unsigned ObjectID; - typedef enum {RECT_FILLED, RECT_OUTLINE} ObjectType; + /** 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, + NUMBER_OF_OBJECT_TYPES + } ObjectType; enum DocChunkTypes { CT_NUMOBJS, CT_OBJTYPES, - CT_OBJBOUNDS + CT_OBJBOUNDS, }; struct Rect @@ -31,10 +40,11 @@ namespace IPDF 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() + std::string Str() const { std::stringstream s; - s << "{" << x << ", " << y << ", " << w << ", " << h << "}"; + // 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(); } };