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 };
20 friend class Geometry;
24 Object(Vector, Object * passedInParent = 0);
27 virtual void Draw(Painter *);
28 virtual Vector Center(void);
29 virtual bool Collided(Vector);
30 virtual void PointerMoved(Vector);
31 virtual void PointerReleased(void);
32 virtual bool NeedsUpdate(void);
33 virtual bool HitTest(Point);
34 virtual void Transmute(Object *, Object *);
35 virtual Object * GetParent(void);
36 virtual void Add(Object *);
37 virtual Vector * GetPointAt(Vector);
38 virtual void Enumerate(FILE *);
39 virtual Object * Copy(void);
40 virtual Vector GetPointAtParameter(double parameter);
41 //Not yet, soon though virtual void MovePointAtParameter(double parameter, Vector);
42 virtual void Connect(Object *, double);
43 virtual void Disconnect(Object *, double);
44 virtual void DisconnectAll(Object *);
45 virtual QRectF Extents(void);
46 // virtual ObjectType Type(void);// = 0; // Pure virtual, must be implemented
47 virtual void Translate(Vector);
48 virtual void Rotate(Point, double);
49 virtual void Scale(Point, double);
50 virtual void Mirror(Point, Point);
51 virtual void Save(void);
52 virtual void Restore(void);
53 ObjectState GetState(void);
54 void Reparent(Object *);
55 // Dimension * GetAttachedDimension(void);
56 //Hm. Object * Connect(Object *);
59 static void SetFixedAngle(bool state = true);
60 static void SetFixedLength(bool state = true);
61 static void SetFont(QFont *);
62 static void SetViewportHeight(int);
63 static void SetDeleteActive(bool state = true);
64 static void SetDimensionActive(bool state = true);
65 static void SetSnapMode(bool state = true);
66 static Vector SnapPointToGrid(Vector);
69 Vector position; // All objects have a position (doubles as reference point)
81 // Dimension * attachedDimension;
82 std::vector<Connection> connected;
88 static bool fixedAngle;
89 static bool fixedLength;
90 static int viewportHeight;
91 static bool deleteActive;
92 static bool dimensionActive;
94 static bool snapToGrid;
95 static bool ignoreClicks;
98 static bool selectionInProgress;
99 static QRectF selection;
100 static double gridSpacing; // Grid spacing in base units
101 static int currentLayer;
104 #endif // __OBJECT_H__