X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Farc.h;h=ec3c600132966f472566ff78add11cf12f43cd87;hb=8a5bf49d09b5a00ebea3ffc449519ad05b0326cc;hp=1f554ba8fe8227032f0cfb4ccb157f92465ac333;hpb=676007c81e292079daaa7188f4fbf2757ae77ef8;p=architektonas diff --git a/src/arc.h b/src/arc.h index 1f554ba..ec3c600 100644 --- a/src/arc.h +++ b/src/arc.h @@ -12,28 +12,47 @@ class Arc: public Object 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 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__