]> git.sven.stormbind.net Git - sven/vym.git/blob - src/flagobj.cpp
Replace Pierre as the maintainer
[sven/vym.git] / src / flagobj.cpp
1 #include <QDebug>
2
3 #include "flagobj.h"
4
5 /////////////////////////////////////////////////////////////////
6 // FlagObj
7 /////////////////////////////////////////////////////////////////
8 FlagObj::FlagObj(QGraphicsItem *parent) : MapObj(parent)
9 {
10     // qDebug() << "Const FlagObj  this=" << this;
11     init();
12 }
13
14 FlagObj::~FlagObj()
15 {
16     // qDebug() << "Destr FlagObj  this=" << this << "  " << name;
17     if (imageObj)
18         delete (imageObj);
19 }
20
21 void FlagObj::init()
22 {
23     imageObj = new ImageObj(parentItem());
24     avis = true;
25 }
26
27 void FlagObj::move(double x, double y)
28 {
29     MapObj::move(x, y);
30     imageObj->setPos(QPointF(x, y));
31     positionBBox();
32 }
33
34 void FlagObj::moveBy(double x, double y)
35 {
36     move(x + absPos.x(), y + absPos.y());
37 }
38
39 void FlagObj::setZValue(double z) { imageObj->setZValue(z); }
40
41 void FlagObj::setVisibility(bool v)
42 {
43     MapObj::setVisibility(v);
44     if (v)
45         imageObj->setVisibility(true);
46     else
47         imageObj->setVisibility(false);
48 }
49
50 void FlagObj::loadImage(ImageObj *io)
51 {
52     prepareGeometryChange();
53
54     imageObj->copy(io); // Creates deep copy of pixmap or svg!
55     calcBBoxSize();
56     positionBBox();
57 }
58
59 void FlagObj::setUuid(const QUuid &id) { uid = id; }
60
61 const QUuid FlagObj::getUuid() { return uid; }
62
63 void FlagObj::setAlwaysVisible(bool b) { avis = b; }
64
65 bool FlagObj::isAlwaysVisible() { return avis; }
66
67 void FlagObj::positionBBox()
68 {
69     bbox.moveTopLeft(absPos);
70     clickPoly = QPolygonF(bbox);
71 }
72
73 void FlagObj::calcBBoxSize()
74 {
75     if (visible)
76         bbox.setSize(QSizeF(imageObj->boundingRect().width(),
77                             imageObj->boundingRect().height()));
78     else
79         bbox.setSize(QSizeF(0, 0));
80     clickPoly = QPolygonF(bbox);
81 }