summaryrefslogtreecommitdiffstats
path: root/stats/chartitem.h
diff options
context:
space:
mode:
Diffstat (limited to 'stats/chartitem.h')
-rw-r--r--stats/chartitem.h25
1 files changed, 19 insertions, 6 deletions
diff --git a/stats/chartitem.h b/stats/chartitem.h
index c700cb421..038054c39 100644
--- a/stats/chartitem.h
+++ b/stats/chartitem.h
@@ -112,23 +112,35 @@ private:
double borderWidth;
};
-class ChartLineItem : public HideableChartItem<HideableQSGNode<QSGGeometryNode>> {
+// Common data for line and rect items. Both are represented by two points.
+class ChartLineItemBase : public HideableChartItem<HideableQSGNode<QSGGeometryNode>> {
public:
- ChartLineItem(StatsView &v, ChartZValue z, QColor color, double width);
- ~ChartLineItem();
+ ChartLineItemBase(StatsView &v, ChartZValue z, QColor color, double width);
+ ~ChartLineItemBase();
void setLine(QPointF from, QPointF to);
- void render() override; // Only call on render thread!
-private:
+protected:
QPointF from, to;
QColor color;
double width;
- bool horizontal;
bool positionDirty;
bool materialDirty;
std::unique_ptr<QSGFlatColorMaterial> material;
std::unique_ptr<QSGGeometry> geometry;
};
+class ChartLineItem : public ChartLineItemBase {
+public:
+ using ChartLineItemBase::ChartLineItemBase;
+ void render() override; // Only call on render thread!
+};
+
+// A simple rectangle without fill. Specified by any two opposing vertices.
+class ChartRectLineItem : public ChartLineItemBase {
+public:
+ using ChartLineItemBase::ChartLineItemBase;
+ void render() override; // Only call on render thread!
+};
+
// A bar in a bar chart: a rectangle bordered by lines.
class ChartBarItem : public HideableChartProxyItem<QSGRectangleNode> {
public:
@@ -185,6 +197,7 @@ public:
void render() override; // Only call on render thread!
QRectF getRect() const;
bool contains(QPointF point) const;
+ bool inRect(const QRectF &rect) const;
private:
QSGTexture *getTexture() const;
QRectF rect;