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
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();
}
};