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@470: padding=10; insilmaril@470: borderWidth=1; 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@470: padding=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@470: void FrameObj::setPadding (const int &i) insilmaril@0: { insilmaril@470: padding=i; insilmaril@470: repaint(); insilmaril@0: } insilmaril@0: insilmaril@470: int FrameObj::getPadding() insilmaril@470: { insilmaril@470: if (type==NoFrame) insilmaril@470: return 0; insilmaril@470: else insilmaril@470: return padding; insilmaril@470: } insilmaril@470: insilmaril@470: void FrameObj::setBorderWidth (const int &i) insilmaril@470: { insilmaril@470: borderWidth=i; insilmaril@470: repaint(); insilmaril@470: } insilmaril@470: insilmaril@470: int FrameObj::getBorderWidth() insilmaril@470: { insilmaril@470: return borderWidth; insilmaril@470: } insilmaril@470: insilmaril@470: FrameObj::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: break; insilmaril@0: case Rectangle: 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@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@470: QPen pen; insilmaril@470: pen.setColor (penColor); insilmaril@470: pen.setWidth (borderWidth); insilmaril@470: QBrush brush (brushColor); insilmaril@442: switch (type) insilmaril@442: { insilmaril@442: case Rectangle: insilmaril@470: rectFrame->setPen (pen); insilmaril@470: rectFrame->setBrush (brush); insilmaril@442: break; insilmaril@442: case Ellipse: insilmaril@470: ellipseFrame->setPen (pen); insilmaril@470: ellipseFrame->setBrush (brush); 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@470: if (type==NoFrame) return QString(); insilmaril@421: QString frameTypeAttr=attribut ("frameType",getFrameTypeName()); insilmaril@442: QString penColAttr=attribut ("penColor",penColor.name() ); insilmaril@442: QString brushColAttr=attribut ("brushColor",brushColor.name() ); insilmaril@470: QString paddingAttr=attribut ("padding",QString::number (padding) ); insilmaril@470: QString borderWidthAttr=attribut ("borderWidth",QString::number (borderWidth) ); insilmaril@470: return singleElement ( insilmaril@470: "frame",frameTypeAttr + insilmaril@470: penColAttr + insilmaril@470: brushColAttr + insilmaril@470: paddingAttr + insilmaril@470: borderWidthAttr); insilmaril@421: } insilmaril@421: