#ifndef __DIMENSION_H__
#define __DIMENSION_H__
+#include "connection.h"
#include "object.h"
+enum DimensionType { DTLinear, DTLinearVert, DTLinearHorz, DTRadial, DTDiametric, DTCircumferential, DTAngular, DTLeader };
+
class Dimension: public Object
{
public:
- Dimension(Vector, Vector, Object * p = 0);
+ Dimension(Vector, Vector, DimensionType dt = DTLinear, Object * p = 0);
+ Dimension(Connection, Connection, DimensionType dt = DTLinear, Object * p = 0);
~Dimension();
- virtual void Draw(QPainter *);
+ virtual void Draw(Painter *);
virtual Vector Center(void);
virtual bool Collided(Vector);
virtual void PointerMoved(Vector);
virtual void PointerReleased(void);
-// virtual bool NeedsUpdate(void);
+ virtual void Enumerate(FILE *);
+ virtual Object * Copy(void);
+ virtual Vector GetPointAtParameter(double parameter);
+ virtual void Connect(Object *, double);
+ virtual void Disconnect(Object *, double);
+ virtual void DisconnectAll(Object *);
+ virtual QRectF Extents(void);
+ void FlipSides(void);
protected:
Vector endpoint; // Starting point is Object::position
bool dragging;
bool draggingHandle1;
bool draggingHandle2;
-// bool needUpdate;
bool objectWasDragged;
double length;
+ DimensionType dimensionType;
+ public:
+ double size; // Size of arrows/text in base units
+
+ private:
+ // We use these in lieu of the built-in connected[] array; no reason to
+ // do it this way especially
+ Connection point1;
+ Connection point2;
};
#endif // __DIMENSION_H__