#include "global.h"
#include "vector.h"
-enum ObjectType { OTNone, OTLine, OTCircle, OTEllipse, OTArc, OTPolygon, OTDimension, OTSpline, OTText, OTContainer };
+enum ObjectType { OTNone = 0, OTLine, OTCircle, OTEllipse, OTArc, OTPolygon, OTDimension, OTSpline, OTText, OTContainer, OTCount };
enum DimensionType { DTLinear, DTLinearVert, DTLinearHorz, DTRadial, DTDiametric, DTCircumferential, DTAngular, DTLeader };
int style; \
bool selected; \
bool hovered; \
- bool hitPoint[4]; \
+ bool hitPoint[5]; \
bool hitObject; \
- Point p[4]; \
+ Point p[5]; \
double angle[2]; \
double radius[2];
OBJECT_COMMON;
int subtype;
double offset;
+ Point lp[2]; // Line point, the actual dimension line
Dimension(): type(OTDimension), id(Global::objectID++) {}
Dimension(Vector pt1, Vector pt2, DimensionType dt = DTLinear, float th = 1.0, uint32_t c = 0x0000FF, int l = LSSolid):
- type(OTDimension), id(Global::objectID++), layer(0), color(c), thickness(th),
- style(l), selected(false), hovered(false), hitObject(false), subtype(dt) { p[0] = pt1; p[1] = pt2; }
+ type(OTDimension), id(Global::objectID++), layer(0), color(c),
+ thickness(th), style(l), selected(false), hovered(false),
+ hitObject(false), subtype(dt), offset(0) { p[0] = pt1; p[1] = pt2; }
};
struct Text {
OBJECT_COMMON;
std::vector<void *> objects;
double scale;
+ bool topLevel;
- Container(): type(OTContainer), id(Global::objectID++), selected(false), hovered(false), hitObject(false) {}
+ Container(bool tl = false): type(OTContainer), id(Global::objectID++), selected(false), hovered(false), hitObject(false), topLevel(tl) {}
+// void DeleteContents(void) {}
+/* void DeleteContents(Container * c)
+ {
+ std::vector<void *>::iterator i;
+
+ for(i=c->objects.begin(); i!=c->objects.end(); i++)
+ {
+ Object * obj = (Object *)(*i);
+
+ if (obj->type == OTContainer)
+ DeleteContainer((Container *)obj);
+
+ delete *i;
+ }
+ }*/
};
struct Object {
OBJECT_COMMON;
};
-
#endif // __STRUCTS_H__