ImagingTools Core SDK
CProductionQualityItem.h
1// SPDX-License-Identifier: LGPL-2.1-or-later OR GPL-2.0-or-later OR GPL-3.0-or-later OR LicenseRef-ImtCore-Commercial
2#pragma once
3
4
5// Qt includes
6#include <QtWidgets/QGraphicsRectItem>
7
8// ACF includes
9#include <istd/IChangeable.h>
10
11// ImtCore includes
12#include <imtloggui/IEventScenePositionProvider.h>
13
14
15namespace imtloggui
16{
17
18
19class CProductionQualityItem: public QGraphicsRectItem
20{
21public:
22 typedef QGraphicsRectItem BaseClass;
23
24 enum DrawStyle
25 {
26 DS_BAR = 0,
27 DS_POLYLINE
28 };
29
30 CProductionQualityItem(QGraphicsItem* parent = nullptr);
31 istd::IChangeable* GetModel();
32 void SetModel(istd::IChangeable* modelPtr);
33 void SetScenePositionProvider(IEventScenePositionProvider* providerPtr);
34 void SetStyle(DrawStyle style);
35
36 // reimplemented (QGraphicsItem)
37 virtual QRectF boundingRect() const override;
38 virtual void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = nullptr) override;
39 virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event) override;
40
41private:
42 bool IsEmptyInterval(int i);
43 void PreparePointArrays();
44 void DrawBars(QPainter* painter);
45 void DrawPolylines(QPainter* painter);
46 void DrawLegend(QPainter* painter);
47
48private:
49 istd::IChangeable* m_modelPtr;
50 IEventScenePositionProvider* m_positionProviderPtr;
51
52 QVector<QPointF> m_okPoints;
53 QVector<QPointF> m_warningPoints;
54 QVector<QPointF> m_nokPoints;
55 QVector<QPointF> m_errorsPoints;
56
57 DrawStyle m_style;
58};
59
60
61} // namespace imtloggui
62
63