Add quadtree back to the Makefile
[ipdf/code.git] / src / ipdf.h
index 0264d96..633c8ef 100644 (file)
@@ -2,30 +2,55 @@
 #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;}
 
-       typedef unsigned ObjectID;
+       inline Real Random(Real max=1, Real min=0)
+       {
+               return min + (max-min) * (Real(rand() % (int)1e6) / Real(1e6));
+       }
 
-       struct Rect
+       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
        {
-               Real x; Real y; Real w; Real h;
-               Rect(Real _x, Real _y, Real _w, Real _h) : x(_x), y(_y), w(_w), h(_h) {}
-               std::string Str() 
-               {
-                       std::stringstream s;
-                       s << "{" << x << ", " << y << ", " << w << ", " << h << "}";
-                       return s.str();
-               }
+               CT_NUMOBJS,
+               CT_OBJTYPES,
+               CT_OBJBOUNDS,
+               CT_OBJINDICES,
+               CT_OBJBEZIERS,
+               CT_OBJPATHS
        };
 
        struct Objects
        {
-               std::vector<Rect> bounds;
+               /** Used by all objects **/
+               std::vector<ObjectType> types; // types of objects
+               std::vector<Rect> bounds; // rectangle bounds of objects
+               /** Used by BEZIER and GROUP to identify data position in relevant vector **/
+               std::vector<unsigned> data_indices;
+               /** Used by BEZIER only **/
+               std::vector<Bezier> beziers; // bezier curves - look up by data_indices
+               /** Used by PATH only **/
+               std::vector<Path> paths;
        };
 
        class View;

UCC git Repository :: git.ucc.asn.au