ImagingTools Core SDK
CReportSceneBuilder.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 <QtCore/QVector>
7#include <QtWidgets/QGraphicsScene>
8
9// ACF includes
10#include <i2d/IObject2d.h>
11
12// ImtCore includes
13#include <imtreport/IReportDocument.h>
14#include <imtreport/CFont.h>
15#include <imtreport/TGraphicsElement.h>
16#include <imtreport/CTextTable.h>
17#include <imtreportgui/CTextTableProxy.h>
18
19
20class QTableWidgetItem;
21class QAbstractGraphicsShapeItem;
22
23
24namespace imtreportgui
25{
26
27
28class CReportSceneBuilder
29{
30public:
31 CReportSceneBuilder();
32
33 typedef QVector<QGraphicsScene*> ReportScenes;
34 static ReportScenes Build(const imtreport::IReportDocument& reportDocument, int resolutionDpi);
35
36private:
37 static void SetupScene(QGraphicsScene& scene, int resolutionDpi);
38
39 static void CreateSceneShapes(const imtreport::IReportPage& page, QGraphicsScene& scene, int resolutionDpi);
40 static void CreateSceneShape(const i2d::IObject2d& pageElement, QGraphicsScene& scene, int resolutionDpi);
41 static void CreateRect(const imtreport::CRectangleElement& pageElement, QGraphicsScene& scene, int resolutionDpi);
42 static void CreateEllipse(const imtreport::CCircleElement& pageElement, QGraphicsScene& scene, int resolutionDpi);
43 static void CreateLabel(const imtreport::CTextLabelElement& pageElement, QGraphicsScene& scene, int resolutionDpi);
44 static void CreateLine(const imtreport::CLineElement& pageElement, QGraphicsScene& scene, int resolutionDpi);
45 static void CreatePolygone(const imtreport::CPolygonElement& pageElement, QGraphicsScene& scene, int resolutionDpi);
46 static void CreateImage(const imtreport::CImageRectangleElement& pageElement, QGraphicsScene& scene, int resolutionDpi);
47 static void CreateTextTable(const imtreport::CTextTable& pageElement, QGraphicsScene& scene, int resolutionDpi);
48 static void CreateTextTableItem(const imtreport::CTextTableItem& tableItem, const QRectF& cellRect, QGraphicsScene& scene);
49
50 static qreal GetTextTableRowHeight(const imtreport::CTextTable& table, const CTextTableProxy& tableProxy, int row, int resolutionDpi);
51 static void SetShapePenAndBrush(const imtreport::IDrawElement& pageElement, QAbstractGraphicsShapeItem& sceneElement);
52
53 static qreal MapCoordinateToScene(qreal value, bool isX, int resolutionDpi);
54 static QPointF MapPointToScene(const QPointF& point, int resolutionDpi);
55 static QRectF MapRectToScene(const QRectF& rect, int resolutionDpi);
56
57 static QFont ConvertToQFont(const imtreport::CFont& font);
58 static QColor ConvertToQColor(const icmm::CRgb& color);
59
60 static const qreal s_A4WidthMm;
61 static const qreal s_A4HeightMm;
62 static const qreal s_margin;
63};
64
65
66} // namespace imtreportgui
67