1 #ifndef __DIMENSION_H__
2 #define __DIMENSION_H__
8 enum DimensionType { DTLinear, DTLinearVert, DTLinearHorz, DTRadial, DTDiametric, DTCircumferential, DTAngular, DTLeader };
10 class Dimension: public Object
13 friend class Geometry;
16 Dimension(Vector, Vector, DimensionType dt = DTLinear, Object * p = 0);
19 virtual void Draw(Painter *);
20 virtual Vector Center(void);
21 virtual bool Collided(Vector);
22 virtual bool PointerMoved(Vector);
23 virtual void PointerReleased(void);
24 virtual bool HitTest(Point);
25 virtual void Translate(Vector);
26 virtual void Rotate(Point, double);
27 virtual void Mirror(Point, Point);
28 virtual void Save(void);
29 virtual void Restore(void);
30 virtual void Enumerate(FILE *);
31 virtual Object * Copy(void);
32 virtual Vector GetPointAtParameter(double parameter);
33 virtual void MovePointAtParameter(double parameter, Vector);
34 virtual QRectF Extents(void);
38 void SaveHitState(void);
39 bool HitStateChanged(void);
42 Vector endpoint; // Starting point is Object::position
43 Vector oldPoint; // Used for dragging
45 Point linePt1, linePt2; // Used for testing dimension line hits
51 bool objectWasDragged;
53 DimensionType dimensionType;
58 bool hitChangeSwitch1;
59 bool hitChangeSwitch2;
60 bool oldHitPoint1, oldHitPoint2, oldHitLine, oldHitFlipSwitch, oldHitChangeSwitch1, oldHitChangeSwitch2;
62 double size; // Size of arrows/text in base units
65 #endif // __DIMENSION_H__