5 #include <vector> // This is a container
6 #include "vector.h" // This is the mathematical construct
7 #include "connection.h"
15 enum ObjectState { OSInactive, OSSelected };
16 enum ObjectType { OTNone, OTObject, OTLine, OTCircle, OTArc, OTDimension, OTEllipse, OTContainer };
22 Object(Vector, Object * passedInParent = 0);
25 virtual void Draw(Painter *);
26 virtual Vector Center(void);
27 virtual bool Collided(Vector);
28 virtual void PointerMoved(Vector);
29 virtual void PointerReleased(void);
30 virtual bool NeedsUpdate(void);
31 virtual bool HitTest(Point);
32 virtual void Transmute(Object *, Object *);
33 virtual Object * GetParent(void);
34 virtual void Add(Object *);
35 virtual Vector * GetPointAt(Vector);
36 virtual void Enumerate(FILE *);
37 virtual Object * Copy(void);
38 virtual Vector GetPointAtParameter(double parameter);
39 virtual void Connect(Object *, double);
40 virtual void Disconnect(Object *, double);
41 virtual void DisconnectAll(Object *);
42 virtual QRectF Extents(void);
43 // virtual ObjectType Type(void);// = 0; // Pure virtual, must be implemented
44 virtual void Translate(Vector);
45 virtual void Rotate(Vector, double);
46 virtual void Scale(Vector, double);
47 ObjectState GetState(void);
48 void Reparent(Object *);
49 // Dimension * GetAttachedDimension(void);
50 //Hm. Object * Connect(Object *);
53 static void SetFixedAngle(bool state = true);
54 static void SetFixedLength(bool state = true);
55 static void SetFont(QFont *);
56 static void SetViewportHeight(int);
57 static void SetDeleteActive(bool state = true);
58 static void SetDimensionActive(bool state = true);
59 static void SetSnapMode(bool state = true);
60 static Vector SnapPointToGrid(Vector);
63 Vector position; // All objects have a position (doubles as reference point)
73 // Dimension * attachedDimension;
74 std::vector<Connection> connected;
80 static bool fixedAngle;
81 static bool fixedLength;
82 static int viewportHeight;
83 static bool deleteActive;
84 static bool dimensionActive;
86 static bool snapToGrid;
87 static bool ignoreClicks;
90 static bool selectionInProgress;
91 static QRectF selection;
92 static double gridSpacing; // Grid spacing in base units
95 #endif // __OBJECT_H__