]> Shamusworld >> Repos - architektonas/blob - src/object.h
2e2efffa5f5b14bb14c196052115ea84b0d6f521
[architektonas] / src / object.h
1 #ifndef __OBJECT_H__
2 #define __OBJECT_H__
3
4 #include <stdio.h>
5 #include <vector>                                                       // This is a container
6 #include "vector.h"                                                     // This is the mathematical construct
7 #include "connection.h"
8
9 class Painter;
10 class QFont;
11 class Dimension;
12 //class FILE;
13
14 enum ObjectState { OSInactive, OSSelected };
15
16 class Object
17 {
18         public:
19                 Object();
20                 Object(Vector, Object * passedInParent = 0);
21                 ~Object();
22
23                 virtual void Draw(Painter *);
24                 virtual Vector Center(void);
25                 virtual bool Collided(Vector);
26                 virtual void PointerMoved(Vector);
27                 virtual void PointerReleased(void);
28                 virtual bool NeedsUpdate(void);
29                 virtual void Transmute(Object *, Object *);
30                 virtual Object * GetParent(void);
31                 virtual void Add(Object *);
32                 virtual Vector * GetPointAt(Vector);
33                 virtual void Enumerate(FILE *);
34                 virtual Object * Copy(void);
35                 virtual Vector GetPointAtParameter(double parameter);
36                 virtual void Connect(Object *, double);
37                 virtual void Disconnect(Object *, double);
38                 virtual void DisconnectAll(Object *);
39                 ObjectState GetState(void);
40                 void Reparent(Object *);
41 //              Dimension * GetAttachedDimension(void);
42 //Hm.           Object * Connect(Object *);
43
44                 // Class methods
45                 static void SetFixedAngle(bool state = true);
46                 static void SetFixedLength(bool state = true);
47                 static void SetFont(QFont *);
48                 static void SetViewportHeight(int);
49                 static void SetDeleteActive(bool state = true);
50                 static void SetDimensionActive(bool state = true);
51                 static void SetSnapMode(bool state = true);
52
53         protected:
54                 Vector position;                                        // All objects have a position (doubles as reference point)
55                 Object * parent;
56 //              Pen pen;
57 //              Fill fill;
58                 ObjectState state;
59                 ObjectState oldState;
60                 bool needUpdate;
61 //              Dimension * attachedDimension;
62                 std::vector<Connection> connected;
63
64                 // Class variables
65                 static QFont * font;
66                 static bool fixedAngle;
67                 static bool fixedLength;
68                 static int viewportHeight;
69                 static bool deleteActive;
70                 static bool dimensionActive;
71                 static bool snapToGrid;
72 };
73
74 #endif  // __OBJECT_H__