ImagingTools Core SDK
CReportPage.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/QMap>
7
8// ACF includes
9#include <ibase/TFactorisableContainer.h>
10#include <i2d/IObject2d.h>
11
12// ImtCore includes
13#include <imtreport/IReportPage.h>
14#include <imtreport/CGraphicsElementFactory.h>
15
16
17namespace imtreport
18{
19
20
21class CReportPage:
22 virtual public IReportPage,
23 protected ibase::TFactorisableContainer<i2d::IObject2d>
24{
25public:
26 typedef ibase::TFactorisableContainer<i2d::IObject2d> BaseClass;
27
28 CReportPage();
29
30 // reimplemented (IReportPage)
31 virtual ElementIds GetPageElements() const override;
32 virtual i2d::IObject2d* GetPageElement(const QByteArray& elementId) const override;
33 virtual QByteArray AddText(const QString& text, const i2d::CVector2d& position, const double textWidth = -1.0, const Qt::Alignment alignment = Qt::AlignLeft) override;
34 virtual QByteArray AddImage(const QString& imagePath, const i2d::CRectangle& rect) override;
35 virtual QByteArray AddLine(const i2d::CLine2d& line) override;
36 virtual QByteArray AddRectangle(const i2d::CRectangle& rect, const QColor& fillColor = Qt::transparent) override;
37 virtual QByteArray AddPolygone(const QVector<i2d::CVector2d>& points, const QColor& fillColor = Qt::transparent) override;
38 virtual QByteArray AddTextTable(const i2d::CRectangle& rect, int rowCount, int columnCount) override;
39
40 virtual bool RemovePageElement(const QByteArray& elementId) override;
41
42 // reimplemented (istd::IChangeable)
43 virtual int GetSupportedOperations() const override;
44 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
45 virtual bool IsEqual(const IChangeable& object) const override;
46 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
47 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
48
49protected:
50 // reimplemented (ibase::TFactorisableContainer)
51 virtual bool SerializeItem(ItemClass& item, iser::IArchive& archive, iser::CArchiveTag* parentTagPtr = NULL) override;
52
53private:
54 int FindItemIndex(const i2d::IObject2d& element) const;
55
56 template <typename TObject>
57 TObject* AddObject(QByteArray& uuid);
58
59private:
60 typedef QMap<QByteArray, int> ElementsIndiciesMap; // key - element uuid, value - element index in TContainer
61 ElementsIndiciesMap m_elementsIndicies;
62
63 CGraphicsElementFactory m_elementsFactory;
64};
65
66
67} // namespace imtreport
68
69