2018-11-22 21:57:21 +01:00
|
|
|
#ifndef SPRITES_H
|
|
|
|
#define SPRITES_H
|
|
|
|
|
|
|
|
#include <QRect>
|
|
|
|
#include <QMap>
|
|
|
|
#include <QImage>
|
2018-12-07 00:50:11 +01:00
|
|
|
#include <QString>
|
2024-06-14 18:33:10 +02:00
|
|
|
#include <QMutex>
|
2018-12-07 00:50:11 +01:00
|
|
|
|
|
|
|
class QJsonObject;
|
2018-11-22 21:57:21 +01:00
|
|
|
|
|
|
|
class Sprites
|
|
|
|
{
|
|
|
|
public:
|
2024-06-14 18:33:10 +02:00
|
|
|
Sprites() : _init(0) {}
|
2018-11-22 21:57:21 +01:00
|
|
|
bool load(const QString &jsonFile, const QString &imageFile);
|
|
|
|
|
2018-12-05 00:03:41 +01:00
|
|
|
bool isNull() const {return _imageFile.isNull();}
|
2024-06-14 18:33:10 +02:00
|
|
|
QImage icon(const QString &name, const QColor &color = Qt::black,
|
|
|
|
qreal size = 1.0);
|
2018-11-22 21:57:21 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
class Sprite {
|
|
|
|
public:
|
|
|
|
Sprite(const QJsonObject &json);
|
2018-12-05 00:03:41 +01:00
|
|
|
|
2018-11-22 21:57:21 +01:00
|
|
|
const QRect &rect() const {return _rect;}
|
2018-12-05 00:03:41 +01:00
|
|
|
qreal pixelRatio() const {return _pixelRatio;}
|
2024-06-14 18:33:10 +02:00
|
|
|
bool sdf() const {return _sdf;}
|
2018-11-22 21:57:21 +01:00
|
|
|
|
|
|
|
private:
|
|
|
|
QRect _rect;
|
2018-12-05 00:03:41 +01:00
|
|
|
qreal _pixelRatio;
|
2024-06-14 18:33:10 +02:00
|
|
|
bool _sdf;
|
2018-11-22 21:57:21 +01:00
|
|
|
};
|
|
|
|
|
2024-06-14 18:33:10 +02:00
|
|
|
QImage sprite(const Sprite &sprite, const QColor &color, qreal scale);
|
|
|
|
|
2018-12-05 00:03:41 +01:00
|
|
|
QMap<QString, Sprite> _sprites;
|
2024-06-14 18:33:10 +02:00
|
|
|
QImage _img;
|
|
|
|
QMutex _lock;
|
2018-12-05 00:03:41 +01:00
|
|
|
QString _imageFile;
|
2024-06-14 18:33:10 +02:00
|
|
|
int _init;
|
2018-11-22 21:57:21 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // SPRITES_H
|