#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);
+#include "path.h"
namespace IPDF
{
inline Real Random(Real max=1, Real min=0)
{
- return min + (max-min) * (Real(rand() % (int)1e6) / Real(1e6));
+ return min + (max-min) * (Real(rand() % (int)100) / Real(100));
}
typedef unsigned ObjectID;
RECT_FILLED,
RECT_OUTLINE,
BEZIER,
- GROUP,
+ PATH,
NUMBER_OF_OBJECT_TYPES
} ObjectType;
CT_OBJBOUNDS,
CT_OBJINDICES,
CT_OBJBEZIERS,
- CT_OBJGROUPS
- };
-
-
-
-
-
- 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
- {
- unsigned start;
- unsigned end;
- Colour shading;
+ CT_OBJPATHS
};
struct Objects
std::vector<unsigned> data_indices;
/** Used by BEZIER only **/
std::vector<Bezier> beziers; // bezier curves - look up by data_indices
- /** Used by GROUP only **/
- std::vector<Group> groups;
+ /** Used by PATH only **/
+ std::vector<Path> paths;
+
+ void Clear()
+ {
+ types.clear();
+ bounds.clear();
+ data_indices.clear();
+ beziers.clear();
+ paths.clear();
+ }
};
class View;