File: vibesscene2d.h

package info (click to toggle)
vibes 0.3.1%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 1,684 kB
  • sloc: cpp: 6,120; python: 412; makefile: 214; sh: 13
file content (50 lines) | stat: -rw-r--r-- 1,530 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef VIBESSCENE2D_H
#define VIBESSCENE2D_H

#include <QGraphicsScene>
#include <QHash>
class QJsonObject;
class VibesGraphicsItem;

class VibesScene2D : public QGraphicsScene
{
    Q_OBJECT

    int _dimX, _dimY;
    int _nbDim;
    QHash<QString,VibesGraphicsItem *> _namedItems;
    QHash<int, QString> _dimNames;
public:
    explicit VibesScene2D(QObject *parent = 0);
    ~VibesScene2D();
    VibesGraphicsItem *addJsonShapeItem(const QJsonObject &shape);

    void addVibesItem(VibesGraphicsItem *item);
    VibesGraphicsItem * itemByName(QString name) {if (_namedItems.contains(name)) return _namedItems[name]; else return 0;}
    void setItemName(VibesGraphicsItem *item, QString name);
    QList<QString> namedItems() const {return _namedItems.keys();}

    const int nbDim() const { return _nbDim; }
    const int dimX() const { return _dimX; }
    const int dimY() const { return _dimY; }

    bool setDims(int dimX, int dimY);

    QString dimName(int dim) { if (dim<0 || dim>=nbDim()) return QString();
                               else if (_dimNames.contains(dim)) return _dimNames[dim];
                               else return QString("dim %1").arg(dim); }
    void setDimName(int dim, QString name) { if (dim>=0 && dim<nbDim()) { _dimNames[dim]=name; emit dimensionsChanged(); } }
signals:
    void changedDimX(int);
    void changedDimY(int);
    void dimensionsChanged();

public slots:
    bool setDimX(int dimX);
    bool setDimY(int dimY);

private:
    void updateDims();
};

#endif // VIBESSCENE2D_H