]> Shamusworld >> Repos - architektonas/blob - src/spline.h
Added new Spline object and Add Spline tool to GUI.
[architektonas] / src / spline.h
1 #ifndef __SPLINE_H__
2 #define __SPLINE_H__
3
4 #include "object.h"
5
6 class Spline: public Object
7 {
8         friend class Geometry;
9
10         public:
11                 Spline(Vector, double, Object * p = 0);
12                 ~Spline();
13
14                 virtual void Draw(Painter *);
15                 virtual Vector Center(void);
16                 virtual bool Collided(Vector);
17                 virtual bool PointerMoved(Vector);
18                 virtual void PointerReleased(void);
19                 virtual bool HitTest(Point);
20                 virtual void Enumerate(FILE *);
21                 virtual Object * Copy(void);
22                 virtual QRectF Extents(void);
23                 virtual void Rotate(Point, double);
24                 virtual void Mirror(Point, Point);
25                 virtual void Save(void);
26                 virtual void Restore(void);
27
28         protected:
29                 void SaveHitState(void);
30                 bool HitStateChanged(void);
31
32         protected:
33                 double radius;                                          // Center is Object::position
34                 Vector dragPoint;                                       // Used for rendering edge dragging
35                 double oldRadius2;
36
37         private:
38                 bool draggingEdge;
39                 bool draggingCenter;
40                 bool objectWasDragged;
41                 bool hitCenter, hitSpline;
42                 bool oldHitCenter, oldHitSpline;
43                 double oldRadius;
44 };
45
46 #endif  // __SPLINE_H__
47