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