2022-11-04 09:03:36 +01:00
|
|
|
#ifndef ENC_STYLE_H
|
|
|
|
#define ENC_STYLE_H
|
|
|
|
|
|
|
|
#include <QPen>
|
|
|
|
#include <QBrush>
|
|
|
|
#include <QMap>
|
2022-11-05 17:43:32 +01:00
|
|
|
#include "objects.h"
|
2022-11-04 09:03:36 +01:00
|
|
|
|
|
|
|
namespace ENC {
|
|
|
|
|
2022-11-05 17:43:32 +01:00
|
|
|
#define TYPE(t) ((t)<<16)
|
|
|
|
#define SUBTYPE(t, s) (((t)<<16)|(s))
|
|
|
|
|
2022-11-04 09:03:36 +01:00
|
|
|
class Style
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
enum FontSize {
|
|
|
|
None,
|
|
|
|
Small,
|
|
|
|
Normal,
|
|
|
|
Large,
|
|
|
|
};
|
|
|
|
|
|
|
|
class Polygon {
|
|
|
|
public:
|
|
|
|
Polygon() : _brush(Qt::NoBrush), _pen(Qt::NoPen) {}
|
|
|
|
Polygon(const QBrush &brush, const QPen &pen = Qt::NoPen)
|
|
|
|
: _brush(brush)
|
|
|
|
{
|
|
|
|
_pen = (pen == Qt::NoPen) ? QPen(_brush, 0) : pen;
|
|
|
|
}
|
|
|
|
|
|
|
|
const QPen &pen() const {return _pen;}
|
|
|
|
const QBrush &brush() const {return _brush;}
|
|
|
|
|
|
|
|
private:
|
|
|
|
QBrush _brush;
|
|
|
|
QPen _pen;
|
|
|
|
};
|
|
|
|
|
|
|
|
class Line {
|
|
|
|
public:
|
2022-11-05 13:41:13 +01:00
|
|
|
Line() : _pen(Qt::NoPen), _textFontSize(None) {}
|
|
|
|
Line(const QPen &pen) : _pen(pen), _textFontSize(None) {}
|
2022-11-04 09:03:36 +01:00
|
|
|
Line(const QImage &img)
|
2022-11-05 13:41:13 +01:00
|
|
|
: _pen(Qt::NoPen), _textFontSize(None), _img(img.convertToFormat(
|
2022-11-04 09:03:36 +01:00
|
|
|
QImage::Format_ARGB32_Premultiplied)) {}
|
|
|
|
|
|
|
|
void setTextColor(const QColor &color) {_textColor = color;}
|
|
|
|
void setTextFontSize(FontSize size) {_textFontSize = size;}
|
|
|
|
|
2022-11-05 13:41:13 +01:00
|
|
|
const QPen &pen() const {return _pen;}
|
2022-11-04 09:03:36 +01:00
|
|
|
const QColor &textColor() const {return _textColor;}
|
|
|
|
FontSize textFontSize() const {return _textFontSize;}
|
|
|
|
const QImage &img() const {return _img;}
|
|
|
|
|
|
|
|
private:
|
2022-11-05 13:41:13 +01:00
|
|
|
QPen _pen;
|
2022-11-04 09:03:36 +01:00
|
|
|
QColor _textColor;
|
|
|
|
FontSize _textFontSize;
|
|
|
|
QImage _img;
|
|
|
|
};
|
|
|
|
|
|
|
|
class Point {
|
|
|
|
public:
|
|
|
|
Point() : _textColor(Qt::black), _textFontSize(Normal) {}
|
|
|
|
Point(const QImage &img, FontSize fontSize = Normal)
|
|
|
|
: _textColor(Qt::black), _textFontSize(fontSize), _img(img) {}
|
|
|
|
|
|
|
|
void setTextColor(const QColor &color) {_textColor = color;}
|
|
|
|
void setTextFontSize(FontSize size) {_textFontSize = size;}
|
|
|
|
|
|
|
|
const QColor &textColor() const {return _textColor;}
|
|
|
|
FontSize textFontSize() const {return _textFontSize;}
|
|
|
|
const QImage &img() const {return _img;}
|
|
|
|
|
|
|
|
private:
|
|
|
|
QColor _textColor;
|
|
|
|
FontSize _textFontSize;
|
|
|
|
QImage _img;
|
|
|
|
};
|
|
|
|
|
|
|
|
Style();
|
|
|
|
|
|
|
|
const Line &line(uint type) const;
|
|
|
|
const Polygon &polygon(uint type) const;
|
|
|
|
const Point &point(quint32 type) const;
|
|
|
|
const QVector<uint> &drawOrder() const {return _drawOrder;}
|
|
|
|
|
2022-11-05 17:43:32 +01:00
|
|
|
static bool isSounding(quint32 type)
|
|
|
|
{return type == TYPE(SOUNDG);}
|
|
|
|
|
2022-11-04 09:03:36 +01:00
|
|
|
private:
|
|
|
|
void defaultPolygonStyle();
|
|
|
|
void defaultLineStyle();
|
|
|
|
void defaultPointStyle();
|
|
|
|
|
|
|
|
QMap<uint, Line> _lines;
|
|
|
|
QMap<uint, Polygon> _polygons;
|
|
|
|
QMap<uint, Point> _points;
|
|
|
|
QVector<uint> _drawOrder;
|
|
|
|
};
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif // ENC_STYLE_H
|