insilmaril@0: #include "ornamentedobj.h" insilmaril@0: #include "linkablemapobj.h" insilmaril@776: #include "vymmodel.h" insilmaril@0: insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: // OrnamentedObj insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: insilmaril@0: insilmaril@790: OrnamentedObj::OrnamentedObj(QGraphicsScene* s,TreeItem *ti) :LinkableMapObj(s,ti) insilmaril@0: { insilmaril@408: // cout << "Const OrnamentedObj (s)\n"; insilmaril@0: init (); insilmaril@0: } insilmaril@0: insilmaril@408: OrnamentedObj::OrnamentedObj (OrnamentedObj* lmo) : LinkableMapObj (lmo->scene) insilmaril@0: { insilmaril@0: copy (lmo); insilmaril@0: } insilmaril@0: insilmaril@0: OrnamentedObj::~OrnamentedObj() insilmaril@0: { insilmaril@442: delete heading; insilmaril@442: delete systemFlags; insilmaril@442: delete standardFlags; insilmaril@442: delete frame; insilmaril@0: } insilmaril@0: insilmaril@0: insilmaril@0: void OrnamentedObj::init () insilmaril@0: { insilmaril@408: heading = new HeadingObj(scene); insilmaril@0: heading->move (absPos.x(), absPos.y()); insilmaril@0: insilmaril@408: systemFlags=new FlagRowObj(scene); insilmaril@408: standardFlags=new FlagRowObj(scene); insilmaril@628: insilmaril@442: frame = new FrameObj (scene); insilmaril@0: } insilmaril@0: insilmaril@0: void OrnamentedObj::copy (OrnamentedObj* other) insilmaril@0: { insilmaril@0: LinkableMapObj::copy(other); insilmaril@0: heading->copy(other->heading); insilmaril@243: setColor (other->heading->getColor()); insilmaril@0: insilmaril@0: systemFlags->copy (other->systemFlags); insilmaril@0: standardFlags->copy (other->standardFlags); insilmaril@0: insilmaril@227: ornamentsBBox=other->ornamentsBBox; insilmaril@0: } insilmaril@0: insilmaril@0: void OrnamentedObj::setLinkColor() insilmaril@0: { insilmaril@773: VymModel *model=treeItem->getModel(); insilmaril@773: if (!model) return; insilmaril@721: if (model->getMapLinkColorHint()==HeadingColor) insilmaril@0: LinkableMapObj::setLinkColor (heading->getColor()); insilmaril@0: else insilmaril@721: LinkableMapObj::setLinkColor (model->getMapDefLinkColor()); insilmaril@0: } insilmaril@0: insilmaril@243: void OrnamentedObj::setColor (QColor col) insilmaril@243: { insilmaril@243: heading->setColor(col); insilmaril@243: setLinkColor(); insilmaril@243: } insilmaril@243: insilmaril@0: QColor OrnamentedObj::getColor () insilmaril@0: { insilmaril@0: return heading->getColor(); insilmaril@0: } insilmaril@0: insilmaril@819: QRectF OrnamentedObj::getBBoxHeading() insilmaril@819: { insilmaril@819: return heading->getBBox(); insilmaril@819: } insilmaril@819: insilmaril@777: FrameObj* OrnamentedObj::getFrame() insilmaril@777: { insilmaril@777: return frame; insilmaril@777: } insilmaril@777: insilmaril@476: FrameObj::FrameType OrnamentedObj::getFrameType() insilmaril@442: { insilmaril@442: return frame->getFrameType(); insilmaril@442: } insilmaril@442: insilmaril@476: QString OrnamentedObj::getFrameTypeName() insilmaril@476: { insilmaril@476: return frame->getFrameTypeName(); insilmaril@476: } insilmaril@476: insilmaril@476: void OrnamentedObj::setFrameType(const FrameObj::FrameType &t) insilmaril@442: { insilmaril@442: frame->setFrameType(t); insilmaril@476: if (t == FrameObj::NoFrame) insilmaril@798: { insilmaril@476: linkpos=LinkableMapObj::Bottom; insilmaril@798: useBottomline=true; insilmaril@798: } else insilmaril@798: { insilmaril@476: linkpos=LinkableMapObj::Middle; insilmaril@798: useBottomline=false; insilmaril@798: } insilmaril@442: insilmaril@442: calcBBoxSize(); insilmaril@442: positionBBox(); insilmaril@442: requestReposition(); insilmaril@442: } insilmaril@442: insilmaril@442: void OrnamentedObj::setFrameType(const QString &t) insilmaril@442: { insilmaril@442: frame->setFrameType(t); insilmaril@476: if (frame->getFrameType() == FrameObj::NoFrame) insilmaril@476: linkpos=LinkableMapObj::Bottom; insilmaril@442: else insilmaril@476: linkpos=LinkableMapObj::Middle; insilmaril@442: insilmaril@442: calcBBoxSize(); insilmaril@442: positionBBox(); insilmaril@442: requestReposition(); insilmaril@442: } insilmaril@442: insilmaril@476: void OrnamentedObj::setFramePadding (const int &i) insilmaril@476: { insilmaril@476: frame->setPadding (i); insilmaril@476: calcBBoxSize(); insilmaril@476: positionBBox(); insilmaril@476: requestReposition(); insilmaril@476: } insilmaril@476: insilmaril@476: int OrnamentedObj::getFramePadding () insilmaril@476: { insilmaril@476: return frame->getPadding(); insilmaril@476: } insilmaril@476: insilmaril@476: void OrnamentedObj::setFrameBorderWidth (const int &i) insilmaril@476: { insilmaril@476: frame->setBorderWidth(i); insilmaril@476: calcBBoxSize(); insilmaril@476: positionBBox(); insilmaril@476: requestReposition(); insilmaril@476: } insilmaril@476: insilmaril@476: int OrnamentedObj::getFrameBorderWidth() insilmaril@476: { insilmaril@476: return frame->getBorderWidth(); insilmaril@476: } insilmaril@476: insilmaril@442: void OrnamentedObj::setFramePenColor(QColor col) insilmaril@442: { insilmaril@442: frame->setPenColor (col); insilmaril@442: } insilmaril@442: insilmaril@442: QColor OrnamentedObj::getFramePenColor() insilmaril@442: { insilmaril@442: return frame->getPenColor (); insilmaril@442: } insilmaril@442: insilmaril@442: void OrnamentedObj::setFrameBrushColor(QColor col) insilmaril@442: { insilmaril@442: frame->setBrushColor (col); insilmaril@442: } insilmaril@442: insilmaril@442: QColor OrnamentedObj::getFrameBrushColor() insilmaril@442: { insilmaril@442: return frame->getBrushColor (); insilmaril@442: } insilmaril@0: insilmaril@785: //#include insilmaril@785: //using namespace std; insilmaril@785: void OrnamentedObj::positionContents() //FIXME-4 called multiple times for each object after moving an image with mouse insilmaril@0: { insilmaril@785: //cout << "OO::positionContents topPad="<getHeadingStd()<getPadding()/2; insilmaril@177: double x=absPos.x(); insilmaril@177: double y=absPos.y(); insilmaril@227: insilmaril@227: double ox,oy; // Offset due to padding insilmaril@227: insilmaril@227: ox=leftPad + d; insilmaril@227: oy=topPad + d; insilmaril@227: insilmaril@766: systemFlags-> move (ox +x , oy + y ); insilmaril@0: insilmaril@0: // vertical align heading to bottom insilmaril@227: heading->move (ox + x + systemFlags->getBBox().width(), insilmaril@227: oy + y + ornamentsBBox.height() - heading->getHeight() insilmaril@0: ); insilmaril@766: standardFlags->move (ox +x + heading->getWidth() + systemFlags->getBBox().width() , oy + y ); insilmaril@227: insilmaril@785: ornamentsBBox.moveTopLeft ( QPointF (ox+x,oy+y)); insilmaril@785: clickBox.moveTopLeft (QPointF (ox + x, oy + y)); insilmaril@177: } insilmaril@0: insilmaril@177: void OrnamentedObj::move (double x, double y) insilmaril@177: { insilmaril@177: MapObj::move (x,y); insilmaril@177: positionContents(); insilmaril@779: updateLinkGeometry(); insilmaril@0: requestReposition(); insilmaril@0: } insilmaril@0: insilmaril@408: void OrnamentedObj::move (QPointF p) insilmaril@0: { insilmaril@0: move (p.x(), p.y()); insilmaril@0: } insilmaril@0: insilmaril@0: void OrnamentedObj::moveBy (double x, double y) insilmaril@0: { insilmaril@0: insilmaril@0: MapObj::moveBy (x,y); insilmaril@0: frame->moveBy (x,y); insilmaril@0: systemFlags->moveBy (x,y); insilmaril@0: standardFlags->moveBy (x,y); insilmaril@0: heading->moveBy (x,y); insilmaril@779: updateLinkGeometry(); insilmaril@0: requestReposition(); insilmaril@0: } insilmaril@0: insilmaril@408: void OrnamentedObj::moveBy (QPointF p) insilmaril@0: { insilmaril@0: moveBy (p.x(), p.y()); insilmaril@0: } insilmaril@0: insilmaril@0: void OrnamentedObj::move2RelPos(double x, double y) insilmaril@0: { insilmaril@694: setRelPos (QPointF(x,y)); insilmaril@388: if (parObj) insilmaril@388: { insilmaril@408: QPointF p=parObj->getChildPos(); insilmaril@388: move (p.x()+x, p.y() +y); insilmaril@388: } insilmaril@0: } insilmaril@0: insilmaril@408: void OrnamentedObj::move2RelPos(QPointF p) insilmaril@0: { insilmaril@218: move2RelPos (p.x(),p.y()); insilmaril@0: } insilmaril@0: insilmaril@767: void OrnamentedObj::activateStandardFlag(Flag *flag) insilmaril@243: { insilmaril@767: standardFlags->activate(flag); insilmaril@0: calcBBoxSize(); insilmaril@0: positionBBox(); insilmaril@0: move (absPos.x(), absPos.y() ); insilmaril@0: forceReposition(); insilmaril@0: } insilmaril@0: insilmaril@766: void OrnamentedObj::deactivateStandardFlag(const QString &name) insilmaril@366: { insilmaril@766: standardFlags->deactivate(name); insilmaril@366: calcBBoxSize(); insilmaril@366: positionBBox(); insilmaril@819: move (absPos.x(),absPos.y() ); insilmaril@366: forceReposition(); insilmaril@366: } insilmaril@366: insilmaril@296: insilmaril@819: QString OrnamentedObj::getSystemFlagName(const QPointF &p) insilmaril@0: { insilmaril@0: return systemFlags->getFlagName(p); insilmaril@0: } insilmaril@0: insilmaril@819: QRectF OrnamentedObj::getBBoxFlag (const QString &s) insilmaril@819: { insilmaril@819: FlagObj *fo=systemFlags->findFlag (s); insilmaril@819: if (fo) return fo->getBBox(); insilmaril@819: fo=standardFlags->findFlag (s); insilmaril@819: if (fo) return fo->getBBox(); insilmaril@819: return QRectF(); insilmaril@819: } insilmaril@819: