Arc(Vector, double, double, double, Object * p = 0);
~Arc();
- virtual void Draw(QPainter *);
+ 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 NeedsUpdate(void);
+ virtual bool HitTest(Point);
+ virtual void Enumerate(FILE *);
+ virtual Object * Copy(void);
+ virtual QRectF Extents(void);
+ virtual void Rotate(Point, double);
+ virtual void Mirror(Point, Point);
+ virtual void Save(void);
+ virtual void Restore(void);
private:
bool AngleInArcSpan(double angle);
+ protected:
+ void SaveHitState(void);
+ bool HitStateChanged(void);
+
protected:
double radius; // Center is Object::position
double startAngle; // Starting angle in radians
double angleSpan; // # of degrees the arc spans in radians
+ double oldRadius2;
+ double oldStartAngle;
+ double oldAngleSpan;
private:
- bool hitHandle1; // Moving
- bool hitHandle2; // Rotation
- bool hitHandle3; // Setting span of the arc
- bool hitHandle4; // Resizing
+// bool hitHandle1; // Moving
+// bool hitHandle2; // Rotation
+// bool hitHandle3; // Setting span of the arc
+// bool hitHandle4; // Resizing
+ bool draggingCenter;
+ bool draggingEdge;
+ bool draggingRotate;
+ bool draggingSpan;
bool objectWasDragged;
Vector oldPoint; // Used for dragging
double oldAngle; // Used for user feedback
double oldRadius; // Used for user feedback
+ bool hitCenter, hitArc, hitRotate, hitSpan;
+ bool oldHitCenter, oldHitArc, oldHitRotate, oldHitSpan;
};
#endif // __ARC_H__