]> Shamusworld >> Repos - architektonas/blobdiff - src/arc.h
Fixed Arc to give continuous feedback like Line and Circle do.
[architektonas] / src / arc.h
index 6419750e2afe7debde0af17b59096ff497faf44b..a05a259bd640951ed9530d1d4cc020d1cb98d800 100644 (file)
--- a/src/arc.h
+++ b/src/arc.h
@@ -14,28 +14,38 @@ class Arc: public Object
                virtual bool Collided(Vector);
                virtual void PointerMoved(Vector);
                virtual void PointerReleased(void);
+               virtual bool HitTest(Point);
                virtual void Enumerate(FILE *);
                virtual Object * Copy(void);
                virtual QRectF Extents(void);
-//             virtual ObjectType Type(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
 
        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__