The text and the brush are the two properties of text items that change dynamically. To avoid complexities concerning redrawing, set them concurrently instead of in two separate calls. Since setting one of the properties requires a full redraw, there is no performance advantage in setting them individually. This fixes a theoretical bug: the colors of axis labels were not updated appropriately. However, it seems like value-dependent labels weren't used anyway. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
36 lines
977 B
C++
36 lines
977 B
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef DIVETEXTITEM_H
|
|
#define DIVETEXTITEM_H
|
|
|
|
#include <QObject>
|
|
#include <QFont>
|
|
#include <QGraphicsItemGroup>
|
|
|
|
class QBrush;
|
|
|
|
/* A Line Item that has animated-properties. */
|
|
class DiveTextItem : public QObject, public QGraphicsItemGroup {
|
|
Q_OBJECT
|
|
Q_PROPERTY(QPointF pos READ pos WRITE setPos)
|
|
Q_PROPERTY(qreal opacity READ opacity WRITE setOpacity)
|
|
public:
|
|
DiveTextItem(double dpr, double scale, int alignFlags, QGraphicsItem *parent);
|
|
void set(const QString &text, const QBrush &brush);
|
|
const QString &text();
|
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget);
|
|
static QFont getFont(double dpr, double scale);
|
|
static double fontHeight(double dpr, double scale);
|
|
double height() const;
|
|
|
|
private:
|
|
void updateText();
|
|
int internalAlignFlags;
|
|
QGraphicsPathItem *textBackgroundItem;
|
|
QGraphicsPathItem *textItem;
|
|
QString internalText;
|
|
double dpr;
|
|
double scale;
|
|
};
|
|
|
|
#endif // DIVETEXTITEM_H
|