X-Git-Url: http://shamusworld.gotdns.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdimension.h;h=a5767a3ebfb4ad94a17492788424d29838e2743c;hb=9590e4ed45fd4e05eccc16bd8e9d51596aea5a6d;hp=7ffca2faabf8e72b4473c809c1f8981391cf8c07;hpb=fd5a80446b2abfdfb9d8951fcc03fb1b55ad707c;p=architektonas diff --git a/src/dimension.h b/src/dimension.h index 7ffca2f..a5767a3 100644 --- a/src/dimension.h +++ b/src/dimension.h @@ -4,10 +4,15 @@ #include "connection.h" #include "object.h" +class Line; + enum DimensionType { DTLinear, DTLinearVert, DTLinearHorz, DTRadial, DTDiametric, DTCircumferential, DTAngular, DTLeader }; class Dimension: public Object { + friend class Line; + friend class Geometry; + public: Dimension(Vector, Vector, DimensionType dt = DTLinear, Object * p = 0); Dimension(Connection, Connection, DimensionType dt = DTLinear, Object * p = 0); @@ -22,15 +27,21 @@ class Dimension: public Object virtual void Enumerate(FILE *); virtual Object * Copy(void); virtual Vector GetPointAtParameter(double parameter); + virtual void MovePointAtParameter(double parameter, Vector); virtual void Connect(Object *, double); virtual void Disconnect(Object *, double); virtual void DisconnectAll(Object *); virtual QRectF Extents(void); void FlipSides(void); + protected: + void SaveHitState(void); + bool HitStateChanged(void); + protected: Vector endpoint; // Starting point is Object::position Vector oldPoint; // Used for dragging + Point oldEndpoint; private: bool dragging; @@ -41,6 +52,7 @@ class Dimension: public Object DimensionType dimensionType; bool hitPoint1; bool hitPoint2; + bool oldHitPoint1, oldHitPoint2; public: double size; // Size of arrows/text in base units