insilmaril@0: #include "mapobj.h" insilmaril@129: #include "misc.h" insilmaril@0: insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: // MapObj insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: MapObj::MapObj () insilmaril@0: { insilmaril@408: //qWarning ( "Const MapObj (): Please set scene somehow!!!"); insilmaril@408: scene=NULL; insilmaril@0: init (); insilmaril@0: } insilmaril@0: insilmaril@408: MapObj::MapObj (QGraphicsScene *s) insilmaril@0: { insilmaril@0: // cout << "Const MapObj\n"; insilmaril@408: scene=s; insilmaril@0: init (); insilmaril@0: } insilmaril@0: insilmaril@0: insilmaril@0: MapObj::MapObj (MapObj* mo) insilmaril@0: { insilmaril@0: // cout << "CopyConst MapObj\n"; insilmaril@0: copy (mo); insilmaril@0: } insilmaril@0: insilmaril@0: MapObj::~MapObj () insilmaril@0: { insilmaril@0: // cout << "Destr MapObj\n"; insilmaril@0: } insilmaril@0: insilmaril@0: void MapObj::init () insilmaril@0: { insilmaril@408: absPos=QPointF(0,0); insilmaril@0: visible=true; insilmaril@0: } insilmaril@0: insilmaril@0: void MapObj::copy(MapObj* other) insilmaril@0: { insilmaril@408: // scene=other->scene; // already set in constr. of child, use that one... insilmaril@0: absPos=other->absPos; insilmaril@0: bbox.setX (other->bbox.x() ); insilmaril@0: bbox.setY (other->bbox.y() ); insilmaril@408: bbox.setSize (QSizeF(other->bbox.width(), other->bbox.height() ) ); insilmaril@0: } insilmaril@0: insilmaril@408: QGraphicsScene* MapObj::getScene() insilmaril@0: { insilmaril@408: return scene; insilmaril@0: } insilmaril@0: insilmaril@408: qreal MapObj::x() insilmaril@0: { insilmaril@0: return absPos.x(); insilmaril@0: } insilmaril@0: insilmaril@408: qreal MapObj::y() insilmaril@0: { insilmaril@0: return absPos.y(); insilmaril@0: } insilmaril@0: insilmaril@408: qreal MapObj::width() insilmaril@0: { insilmaril@0: return bbox.width(); insilmaril@0: } insilmaril@0: insilmaril@408: qreal MapObj::height() insilmaril@0: { insilmaril@0: return bbox.height(); insilmaril@0: } insilmaril@0: insilmaril@408: QPointF MapObj::getAbsPos() insilmaril@227: { insilmaril@227: return absPos; insilmaril@227: } insilmaril@227: insilmaril@129: QString MapObj::getPos() insilmaril@129: { insilmaril@408: return qpointfToString(absPos); insilmaril@129: } insilmaril@129: insilmaril@0: void MapObj::move (double x, double y) insilmaril@0: { insilmaril@408: absPos.setX( x); insilmaril@408: absPos.setY( y); insilmaril@408: bbox.moveTo(QPointF(x,y)); insilmaril@408: clickBox.moveTo(QPointF(x,y)); insilmaril@408: } insilmaril@408: insilmaril@408: void MapObj::move (QPointF p) insilmaril@408: { insilmaril@408: absPos=p; insilmaril@408: bbox.moveTo (p); insilmaril@408: clickBox.moveTo (p); insilmaril@0: } insilmaril@0: insilmaril@0: void MapObj::moveBy (double x, double y) insilmaril@0: { insilmaril@336: MapObj::move (x+absPos.x(),y+absPos.y() ); insilmaril@408: bbox.moveTo (bbox.x()+x,bbox.y()+y); insilmaril@408: clickBox.moveTo (clickBox.x()+x,clickBox.y()+y); insilmaril@0: } insilmaril@0: insilmaril@408: bool MapObj::inBox(const QPointF &p) insilmaril@0: { insilmaril@408: /* FIXME testing QT4 only insilmaril@408: cout << "MO::inBox "<= clickBox.left() && p.x() <= clickBox.right() insilmaril@175: && p.y() <= clickBox.bottom() && p.y() >= clickBox.top() ) insilmaril@166: return true; insilmaril@0: return false; insilmaril@0: } insilmaril@0: insilmaril@408: QRectF MapObj::getBBox() insilmaril@0: { insilmaril@0: return bbox; insilmaril@0: } insilmaril@0: insilmaril@408: QRectF MapObj::addBBox(QRectF r1, QRectF r2) insilmaril@175: { insilmaril@408: // Find smallest QRectF containing given rectangles insilmaril@175: insilmaril@408: QRectF n; insilmaril@0: // Set left border insilmaril@0: if (r1.left() <= r2.left() ) insilmaril@0: n.setLeft(r1.left() ); insilmaril@0: else insilmaril@0: n.setLeft(r2.left() ); insilmaril@0: insilmaril@0: // Set top border insilmaril@0: if (r1.top() <= r2.top() ) insilmaril@0: n.setTop(r1.top() ); insilmaril@0: else insilmaril@0: n.setTop(r2.top() ); insilmaril@0: insilmaril@0: // Set right border insilmaril@0: if (r1.right() <= r2.right() ) insilmaril@0: n.setRight(r2.right() ); insilmaril@0: else insilmaril@0: n.setRight(r1.right() ); insilmaril@0: insilmaril@0: // Set bottom insilmaril@0: if (r1.bottom() <= r2.bottom() ) insilmaril@0: n.setBottom(r2.bottom() ); insilmaril@0: else insilmaril@0: n.setBottom(r1.bottom() ); insilmaril@0: return n; insilmaril@0: } insilmaril@0: insilmaril@408: QSizeF MapObj::getSize() insilmaril@0: { insilmaril@0: return bbox.size(); insilmaril@0: } insilmaril@0: insilmaril@0: insilmaril@0: bool MapObj::isVisibleObj() insilmaril@0: { insilmaril@0: return visible; insilmaril@0: } insilmaril@0: insilmaril@0: void MapObj::setVisibility(bool v) insilmaril@0: { insilmaril@0: visible=v; insilmaril@0: } insilmaril@93: