insilmaril@0: #ifndef MAPOBJ_H insilmaril@0: #define MAPOBJ_H insilmaril@0: insilmaril@408: #include insilmaril@408: #include insilmaril@0: #include insilmaril@0: insilmaril@616: #include "xmlobj.h" insilmaril@0: insilmaril@0: using namespace std; insilmaril@0: insilmaril@315: #define Z_BBOX 0 insilmaril@315: #define Z_XLINK 10 insilmaril@315: #define Z_LINK 20 insilmaril@315: #define Z_FRAME 50 insilmaril@315: #define Z_SELBOX 60 insilmaril@315: #define Z_FLOATIMG 65 insilmaril@315: #define Z_ICON 80 insilmaril@315: #define Z_TEXT 100 insilmaril@0: insilmaril@474: /*! \brief Base class for all objects visible on a map insilmaril@474: */ insilmaril@474: insilmaril@616: class MapObj:public XMLObj { insilmaril@0: public: insilmaril@0: MapObj (); insilmaril@408: MapObj (QGraphicsScene*); insilmaril@0: MapObj (MapObj*); insilmaril@0: virtual ~MapObj (); insilmaril@0: virtual void init (); insilmaril@0: virtual void copy (MapObj*); insilmaril@408: virtual QGraphicsScene* getScene(); insilmaril@408: virtual qreal x(); insilmaril@408: virtual qreal y(); insilmaril@408: virtual qreal width(); insilmaril@408: virtual qreal height(); insilmaril@408: virtual QPointF getAbsPos(); insilmaril@129: virtual QString getPos(); // Return position as string (x,y) insilmaril@0: virtual void move (double x,double y); // move to absolute Position insilmaril@408: virtual void move (QPointF p); insilmaril@0: virtual void moveBy (double x,double y); // move to relative Position insilmaril@408: virtual bool inBox(const QPointF&); // Check if Point is within clickbox insilmaril@408: virtual QRectF getBBox(); // returns bounding box insilmaril@408: virtual QRectF addBBox(QRectF,QRectF); // returns bbox which includes both boxes insilmaril@408: virtual QSizeF getSize(); // returns size of bounding box insilmaril@0: virtual bool isVisibleObj(); insilmaril@0: virtual void setVisibility(bool); insilmaril@175: virtual void positionBBox()=0; insilmaril@175: virtual void calcBBoxSize()=0; insilmaril@474: virtual void animate(); // called by timer for animated objects insilmaril@0: protected: insilmaril@408: QGraphicsScene* scene; insilmaril@408: QRectF bbox; // bounding box of MO itself insilmaril@408: QRectF clickBox; // area where mouseclicks are found insilmaril@408: QPointF absPos; // Position on canvas insilmaril@0: bool visible; insilmaril@0: }; insilmaril@0: insilmaril@0: #endif