]> Shamusworld >> Repos - architektonas/blob - src/line.h
3d46551d6d1bedb7fe19a66fe5b2711068c8feaa
[architektonas] / src / line.h
1 #ifndef __LINE_H__
2 #define __LINE_H__
3
4 #include "object.h"
5
6 class Dimension;
7
8 class Line: public Object
9 {
10         public:
11                 Line(Vector, Vector, Object * p = 0);
12                 ~Line();
13
14                 virtual void Draw(Painter *);
15                 virtual Vector Center(void);
16                 virtual bool Collided(Vector);
17                 virtual void PointerMoved(Vector);
18                 virtual void PointerReleased(void);
19                 virtual bool HitTest(Point);
20                 virtual Vector * GetPointAt(Vector);
21                 virtual void Enumerate(FILE *);
22                 virtual Object * Copy(void);
23                 virtual Vector GetPointAtParameter(double parameter);
24                 virtual QRectF Extents(void);
25 //              virtual ObjectType Type(void);
26                 virtual void Translate(Vector);
27                 virtual void Rotate(Vector, double);
28                 virtual void Scale(Vector, double);
29                 void SetDimensionOnLine(Dimension * d = 0);
30                 Object * FindAttachedDimension(void);
31
32         protected:
33                 void SaveState(void);
34                 bool StateChanged(void);
35
36         protected:
37                 Vector endpoint;                                        // Starting point is Object::position
38                 Vector oldPoint;                                        // Used for dragging
39
40         private:
41                 bool draggingLine;
42                 bool draggingHandle1;
43                 bool draggingHandle2;
44                 bool objectWasDragged;
45                 double length;
46                 Vector angle;
47                 bool hitPoint1, hitPoint2, hitLine;
48                 bool oldHitPoint1, oldHitPoint2, oldHitLine;
49 };
50
51 #endif  // __LINE_H__