insilmaril@0: #include "mapobj.h" insilmaril@2: #include "misc.h" insilmaril@0: insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: // MapObj insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: MapObj::MapObj () insilmaril@0: { insilmaril@2: //qWarning ( "Const MapObj (): Please set canvas somehow!!!"); insilmaril@2: canvas=NULL; insilmaril@0: init (); insilmaril@0: } insilmaril@0: insilmaril@2: MapObj::MapObj (Q3Canvas* c) insilmaril@0: { insilmaril@0: // cout << "Const MapObj\n"; insilmaril@0: canvas=c; 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@0: absPos=QPoint(0,0); insilmaril@0: visible=true; insilmaril@0: } insilmaril@0: insilmaril@0: void MapObj::copy(MapObj* other) insilmaril@0: { insilmaril@0: // canvas=other->canvas; // 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@0: bbox.setSize (QSize(other->bbox.width(), other->bbox.height() ) ); insilmaril@0: } insilmaril@0: insilmaril@2: Q3Canvas* MapObj::getCanvas() insilmaril@0: { insilmaril@0: return canvas; insilmaril@0: } insilmaril@0: insilmaril@0: int MapObj::x() insilmaril@0: { insilmaril@0: return absPos.x(); insilmaril@0: } insilmaril@0: insilmaril@0: int MapObj::y() insilmaril@0: { insilmaril@0: return absPos.y(); insilmaril@0: } insilmaril@0: insilmaril@0: int MapObj::width() insilmaril@0: { insilmaril@0: return bbox.width(); insilmaril@0: } insilmaril@0: insilmaril@0: int MapObj::height() insilmaril@0: { insilmaril@0: return bbox.height(); insilmaril@0: } insilmaril@0: insilmaril@2: QPoint MapObj::getAbsPos() insilmaril@2: { insilmaril@2: return absPos; insilmaril@2: } insilmaril@2: insilmaril@2: QString MapObj::getPos() insilmaril@2: { insilmaril@2: return qpointToString(absPos); insilmaril@2: } insilmaril@2: insilmaril@0: void MapObj::move (double x, double y) insilmaril@0: { insilmaril@0: int xi=static_cast (x); insilmaril@0: int yi=static_cast (y); insilmaril@0: absPos.setX( xi); insilmaril@0: absPos.setY( yi); insilmaril@0: bbox.moveTopLeft(QPoint(xi,yi)); insilmaril@2: clickBox.moveTopLeft(QPoint(xi,yi)); insilmaril@0: } insilmaril@0: insilmaril@0: void MapObj::moveBy (double x, double y) insilmaril@0: { insilmaril@2: int ix=(int)x; insilmaril@2: int iy=(int)y; insilmaril@2: MapObj::move (x+absPos.x(),y+absPos.y() ); insilmaril@2: bbox.moveBy (ix,iy); insilmaril@2: clickBox.moveBy (ix,iy); insilmaril@0: } insilmaril@0: insilmaril@2: bool MapObj::inBox(const QPoint &p) insilmaril@0: { insilmaril@2: if (p.x() >= clickBox.left() && p.x() <= clickBox.right() insilmaril@2: && p.y() <= clickBox.bottom() && p.y() >= clickBox.top() ) insilmaril@2: return true; insilmaril@0: return false; insilmaril@0: } insilmaril@0: insilmaril@0: QRect MapObj::getBBox() insilmaril@0: { insilmaril@0: return bbox; insilmaril@0: } insilmaril@0: insilmaril@0: QRect MapObj::addBBox(QRect r1, QRect r2) insilmaril@2: { insilmaril@2: // Find smallest QRect containing given rectangles insilmaril@2: insilmaril@0: QRect 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@0: QSize 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@2: