class Line: public Object
{
+ friend class Geometry;
+
public:
Line(Vector, Vector, Object * p = 0);
~Line();
- virtual void Draw(QPainter *);
+ virtual void Draw(Painter *);
virtual Vector Center(void);
virtual bool Collided(Vector);
- virtual void PointerMoved(Vector);
+ virtual bool PointerMoved(Vector);
virtual void PointerReleased(void);
-// void SetDimensionOnPoint1(Dimension *);
-// void SetDimensionOnPoint2(Dimension *);
+ virtual bool HitTest(Point);
+ virtual Vector * GetPointAt(Vector);
+ virtual void Enumerate(FILE *);
+ virtual Object * Copy(void);
+ virtual Vector GetPointAtParameter(double parameter);
+ virtual void MovePointAtParameter(double parameter, Vector);
+ virtual QRectF Extents(void);
+ virtual void Translate(Vector);
+ virtual void Rotate(Point, double);
+ virtual void Scale(Vector, double);
+ virtual void Mirror(Point, Point);
+ virtual void Save(void);
+ virtual void Restore(void);
void SetDimensionOnLine(Dimension * d = 0);
+ Object * FindAttachedDimension(void);
protected:
- bool HitTest(Point);
- void SaveState(void);
- bool StateChanged(void);
+ void SaveHitState(void);
+ bool HitStateChanged(void);
- protected:
+ public:
Vector endpoint; // Starting point is Object::position
+ protected:
Vector oldPoint; // Used for dragging
+ Point oldEndpoint;
private:
bool draggingLine;
bool objectWasDragged;
double length;
Vector angle;
+ public:
bool hitPoint1, hitPoint2, hitLine;
+ private:
bool oldHitPoint1, oldHitPoint2, oldHitLine;
};