insilmaril@0: #include "frameobj.h" insilmaril@0: insilmaril@0: #include insilmaril@0: insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: // FrameObj insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: FrameObj::FrameObj() : MapObj() insilmaril@0: { insilmaril@0: // cout << "Const FrameObj ()\n"; insilmaril@0: init (); insilmaril@0: } insilmaril@0: insilmaril@408: FrameObj::FrameObj(QGraphicsScene *s) :MapObj(s) insilmaril@0: { insilmaril@0: // cout << "Const FrameObj\n"; insilmaril@0: init (); insilmaril@0: } insilmaril@0: insilmaril@0: FrameObj::~FrameObj() insilmaril@0: { insilmaril@0: clear(); insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::init() insilmaril@0: { insilmaril@0: type=NoFrame; insilmaril@0: border=0; insilmaril@442: penColor=QColor (Qt::black); insilmaril@442: brushColor=QColor (Qt::white); insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::clear() insilmaril@0: { insilmaril@0: switch (type) insilmaril@0: { insilmaril@0: case NoFrame: insilmaril@0: break; insilmaril@0: case Rectangle: insilmaril@0: delete rectFrame; insilmaril@0: break; insilmaril@421: case Ellipse: insilmaril@421: delete ellipseFrame; insilmaril@421: break; insilmaril@0: } insilmaril@0: type=NoFrame; insilmaril@0: border=0; insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::move(double x, double y) insilmaril@0: { insilmaril@0: switch (type) insilmaril@0: { insilmaril@0: case NoFrame: insilmaril@0: break; insilmaril@0: case Rectangle: insilmaril@408: rectFrame->setPos (x,y); insilmaril@0: break; insilmaril@421: case Ellipse: insilmaril@421: ellipseFrame->setPos (x,y); insilmaril@421: break; insilmaril@0: } insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::moveBy(double x, double y) insilmaril@0: { insilmaril@0: MapObj::moveBy (x,y); insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::positionBBox() insilmaril@0: { insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::calcBBoxSize() insilmaril@0: { insilmaril@0: } insilmaril@0: insilmaril@408: void FrameObj::setRect(const QRectF &r) insilmaril@0: { insilmaril@0: bbox=r; insilmaril@0: switch (type) insilmaril@0: { insilmaril@0: case NoFrame: insilmaril@0: break; insilmaril@0: case Rectangle: insilmaril@425: // rectFrame->prepareGeometryChange(); insilmaril@408: rectFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() )); insilmaril@0: break; insilmaril@421: case Ellipse: insilmaril@425: // ellipseFrame->prepareGeometryChange(); insilmaril@421: ellipseFrame->setRect (QRectF(bbox.x(),bbox.y(),bbox.width(),bbox.height() )); insilmaril@421: break; insilmaril@0: } insilmaril@0: } insilmaril@0: insilmaril@0: int FrameObj::getBorder() insilmaril@0: { insilmaril@0: return border; insilmaril@0: } insilmaril@0: insilmaril@0: FrameType FrameObj::getFrameType() insilmaril@0: { insilmaril@0: return type; insilmaril@0: } insilmaril@0: insilmaril@0: QString FrameObj::getFrameTypeName() insilmaril@0: { insilmaril@0: switch (type) insilmaril@0: { insilmaril@0: case Rectangle: insilmaril@0: return "Rectangle"; insilmaril@0: break; insilmaril@421: case Ellipse: insilmaril@421: return "Ellipse"; insilmaril@421: break; insilmaril@0: default: insilmaril@0: return "NoFrame"; insilmaril@0: } insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::setFrameType(const FrameType &t) insilmaril@0: { insilmaril@0: if (t!=type) insilmaril@0: { insilmaril@0: clear(); insilmaril@0: type=t; insilmaril@0: switch (type) insilmaril@0: { insilmaril@0: case NoFrame: insilmaril@0: border=0; insilmaril@0: break; insilmaril@0: case Rectangle: insilmaril@0: border=10; insilmaril@442: rectFrame = scene->addRect(QRectF(0,0,0,0), QPen(penColor), brushColor); insilmaril@408: rectFrame->setZValue(Z_FRAME); insilmaril@442: rectFrame->show(); insilmaril@421: break; insilmaril@421: case Ellipse: insilmaril@421: border=10; insilmaril@442: ellipseFrame = scene->addEllipse(QRectF(0,0,0,0), QPen(penColor), brushColor); insilmaril@421: ellipseFrame->setZValue(Z_FRAME); insilmaril@442: ellipseFrame->show(); insilmaril@0: break; insilmaril@0: } insilmaril@0: } insilmaril@442: setVisibility (visible); insilmaril@0: } insilmaril@0: insilmaril@0: void FrameObj::setFrameType(const QString &t) insilmaril@0: { insilmaril@0: if (t=="Rectangle") insilmaril@0: FrameObj::setFrameType (Rectangle); insilmaril@421: else if (t=="Ellipse") insilmaril@421: FrameObj::setFrameType (Ellipse); insilmaril@0: else insilmaril@0: FrameObj::setFrameType (NoFrame); insilmaril@0: } insilmaril@0: insilmaril@442: void FrameObj::setPenColor (QColor col) insilmaril@442: { insilmaril@442: penColor=col; insilmaril@442: repaint(); insilmaril@442: } insilmaril@442: insilmaril@442: QColor FrameObj::getPenColor () insilmaril@442: { insilmaril@442: return penColor; insilmaril@442: } insilmaril@442: insilmaril@442: void FrameObj::setBrushColor (QColor col) insilmaril@442: { insilmaril@442: brushColor=col; insilmaril@442: repaint(); insilmaril@442: } insilmaril@442: insilmaril@442: QColor FrameObj::getBrushColor () insilmaril@442: { insilmaril@442: return brushColor; insilmaril@442: } insilmaril@442: insilmaril@442: void FrameObj::repaint() insilmaril@442: { insilmaril@442: switch (type) insilmaril@442: { insilmaril@442: case Rectangle: insilmaril@442: rectFrame->setPen (penColor); insilmaril@442: rectFrame->setBrush (brushColor); insilmaril@442: break; insilmaril@442: case Ellipse: insilmaril@442: ellipseFrame->setPen (penColor); insilmaril@442: ellipseFrame->setBrush (brushColor); insilmaril@442: break; insilmaril@442: default: insilmaril@442: break; insilmaril@442: } insilmaril@442: } insilmaril@442: insilmaril@442: insilmaril@0: void FrameObj::setVisibility (bool v) insilmaril@0: { insilmaril@0: MapObj::setVisibility(v); insilmaril@140: switch (type) insilmaril@140: { insilmaril@140: case NoFrame: insilmaril@140: break; insilmaril@140: case Rectangle: insilmaril@140: if (visible) insilmaril@140: rectFrame->show(); insilmaril@140: else insilmaril@140: rectFrame->hide(); insilmaril@140: break; insilmaril@421: case Ellipse: insilmaril@421: if (visible) insilmaril@421: ellipseFrame->show(); insilmaril@421: else insilmaril@421: ellipseFrame->hide(); insilmaril@421: break; insilmaril@140: } insilmaril@0: } insilmaril@0: insilmaril@421: QString FrameObj::saveToDir () insilmaril@421: { insilmaril@421: QString frameTypeAttr=attribut ("frameType",getFrameTypeName()); insilmaril@442: QString penColAttr=attribut ("penColor",penColor.name() ); insilmaril@442: QString brushColAttr=attribut ("brushColor",brushColor.name() ); insilmaril@442: return singleElement ("frame",frameTypeAttr + penColAttr + brushColAttr); insilmaril@421: } insilmaril@421: