#ifndef __GMOVABLE_HPP #define __GMOVABLE_HPP #include "gobject.hpp" const gMovableObject__maxpts=1000; //an object cannot consist of more points class gMovableObject : public gObject { public: enum quality { draft,medium,high }; static quality drawquality; static quality dragquality; protected: friend class gFixedObject; virtual void computePoints(POINT *point, int *points, int xp, int yp, quality dq, double objectScale, double drawScale) const =0; virtual void getTextRect(RECT &r, double scaling, int rx, int ry) const =0; virtual void drawText(HDC hDC,double scaling, int rx, int ry) const =0; int xp,yp; public: gMovableObject(int x,int y,double scaling=1.0) : gObject(scaling), xp(x), yp(y) { } virtual void draw(HDC hDC, double scaling, int rx, int ry) const =0; virtual void dragdraw(HDC hDC, double scaling, int rx, int ry) const =0; virtual void move(int x,int y) { xp=x; yp=y; } int getX() const { return xp; } int getY() const { return yp; } virtual BOOL fastIsOn(RECT r) const =0; virtual BOOL isWithin(RECT r) const =0; virtual BOOL isOn(POINT pt) const =0; virtual BOOL isOn(RECT r) const =0; virtual void getRect(RECT &r, double scaling, int rx, int ry) const =0; virtual BOOL isMoveable() const { return TRUE; } }; #endif