class Circle: public Object
{
+ friend class Geometry;
+
public:
Circle(Vector, double, Object * p = 0);
~Circle();
virtual void Draw(Painter *);
virtual Vector Center(void);
virtual bool Collided(Vector);
- virtual void PointerMoved(Vector);
+ virtual bool PointerMoved(Vector);
virtual void PointerReleased(void);
virtual bool HitTest(Point);
virtual void Enumerate(FILE *);
+ virtual Object * Copy(void);
virtual QRectF Extents(void);
-// virtual Object * Copy(void);
-// virtual ObjectType Type(void);
+ virtual void Rotate(Point, double);
+ virtual void Mirror(Point, Point);
+ virtual void Save(void);
+ virtual void Restore(void);
protected:
- void SaveState(void);
- bool StateChanged(void);
+ void SaveHitState(void);
+ bool HitStateChanged(void);
protected:
double radius; // Center is Object::position
Vector dragPoint; // Used for rendering edge dragging
+ double oldRadius2;
private:
bool draggingEdge;
bool objectWasDragged;
bool hitCenter, hitCircle;
bool oldHitCenter, oldHitCircle;
+ double oldRadius;
};
#endif // __CIRCLE_H__