#ifndef OVERLAY_H #define OVERLAY_H #include #include #include #include #include #include class OverlayItem { public: OverlayItem() {} virtual ~OverlayItem() {}; virtual void render(QPainter *) {}; }; class OverlayText : public OverlayItem { public: OverlayText(const QString inputText, int x, int y, QColor color, int fontSize) : text(QStaticText(inputText)) { this->x = x; this->y = y; this->color = color; this->fontSize = fontSize; } ~OverlayText() {} virtual void render(QPainter *painter); private: const QStaticText text; int x; int y; QColor color; int fontSize; }; class OverlayPath : public OverlayItem { public: OverlayPath(QPainterPath path, QColor borderColor, QColor fillColor) { this->path = path; this->borderColor = borderColor; this->fillColor = fillColor; } ~OverlayPath() {} virtual void render(QPainter *painter); private: QPainterPath path; QColor borderColor; QColor fillColor; }; class OverlayImage : public OverlayItem { public: OverlayImage(int x, int y, QImage image) { this->x = x; this->y = y; this->image = image; } ~OverlayImage() {} virtual void render(QPainter *painter); private: int x; int y; QImage image; }; class Overlay { public: Overlay() { this->x = 0; this->y = 0; this->angle = 0; this->hScale = 1.0; this->vScale = 1.0; this->hidden = false; this->opacity = 1.0; this->clippingRect = nullptr; } ~Overlay() { this->clearItems(); } bool getHidden(); void setHidden(bool hidden); int getOpacity(); void setOpacity(int opacity); int getX(); int getY(); void setX(int x); void setY(int y); qreal getHScale(); qreal getVScale(); void setHScale(qreal scale); void setVScale(qreal scale); void setScale(qreal hScale, qreal vScale); int getRotation(); void setRotation(int angle); void rotate(int degrees); void setClippingRect(QRectF rect); void clearClippingRect(); void setPosition(int x, int y); void move(int deltaX, int deltaY); void renderItems(QPainter *painter); QList getItems(); void clearItems(); void addText(const QString text, int x, int y, QString colorStr, int fontSize); bool addRect(int x, int y, int width, int height, QString borderColorStr, QString fillColorStr, int rounding); bool addImage(int x, int y, QString filepath, bool useCache = true, int width = -1, int height = -1, int xOffset = 0, int yOffset = 0, qreal hScale = 1, qreal vScale = 1, QList palette = QList(), bool setTransparency = false); bool addImage(int x, int y, QImage image); bool addPath(QList xCoords, QList yCoords, QString borderColorStr, QString fillColorStr); private: void clampAngle(); QColor getColor(QString colorStr); QList items; int x; int y; int angle; qreal hScale; qreal vScale; bool hidden; qreal opacity; QRectF *clippingRect; }; #endif // OVERLAY_H