ImagingTools Core SDK
CTextTable.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// ACF includes
6#include <i2d/CRectangle.h>
7
8// ImtCore includes
9#include <imtreport/CTextTableItem.h>
10
11
12namespace imtreport
13{
14
15
16class CTextTable: public i2d::CRectangle
17{
18public:
19 typedef i2d::CRectangle BaseClass;
20
21 CTextTable();
22
23 void SetDimensions(int rowCount, int columnCount);
24
25 int GetRowCount() const;
26 int GetColumnCount() const;
27
28 bool IsHorizontalHeaderVisible() const;
29 void ShowHorizontalHeader(bool show);
30
31 bool IsVerticalHeaderVisible() const;
32 void ShowVerticalHeader(bool show);
33
34 void SetHorizontalHeaderLabels(const QStringList& labels);
35 void SetVerticalHeaderLabels(const QStringList& labels);
36
37 double GetColumnWidth(int column) const;
38 void SetColumnWidths(const QVector<double>& columnWidths);
39
40 const CTextTableItem& GetHorizontalHeaderItem(int column) const;
41 void SetHorizontalHeaderItem(int column, const CTextTableItem& item);
42
43 const CTextTableItem& GetVerticalHeaderItem(int row) const;
44 void SetVerticalHeaderItem(int row, const CTextTableItem& item);
45
46 const CTextTableItem& GetItem(int row, int column) const;
47 void SetItem(int row, int column, const CTextTableItem& item);
48
49 static QByteArray GetTypeName(){ return "TextTable"; }
50
51 // reimplemented (iser::ISerializable)
52 virtual bool Serialize(iser::IArchive& archive) override;
53
54 // reimplemented istd::IChangeable
55 virtual int GetSupportedOperations() const override;
56 virtual bool CopyFrom(const IChangeable& object, CompatibilityMode mode = CM_WITHOUT_REFS) override;
57 virtual bool IsEqual(const IChangeable& object) const override;
58 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS) const override;
59 virtual bool ResetData(CompatibilityMode mode = CM_WITHOUT_REFS) override;
60
61private:
62 void Resize(int rowCount, int columnCount);
63 int GetInternalColumnCount() const;
64
65 const CTextTableItem& GetInternalItem(int row, int column) const;
66 void SetInternalItem(int row, int column, const CTextTableItem& item);
67
68private:
69 bool m_showHorizontalHeader;
70 bool m_showVerticalHeader;
71 QVector<double> m_columnWidths;
72 QVector<QVector<CTextTableItem>> m_items;
73
74 static const double s_defaultColumnWidth;
75};
76
77
78} // namespace imtreport
79