ImagingTools Core SDK
CInspectionReportBuilderComp.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 <icomp/CComponentBase.h>
7#include <icmm/CRgb.h>
8
9// ImtCore includes
10#include <imtreport/IInspectionReportBuilder.h>
11#include <imtreport/IReportPage.h>
12
13
14namespace imtreport
15{
16
17
18class CInspectionReportBuilderComp : public icomp::CComponentBase, virtual public IInspectionReportBuilder
19{
20public:
21 typedef icomp::CComponentBase BaseClass;
22
23 I_BEGIN_COMPONENT(CInspectionReportBuilderComp);
24 I_REGISTER_INTERFACE(imtreport::IInspectionReportBuilder);
25 I_END_COMPONENT;
26
27 // reimplemented (imtreport::IInspectionReportBuilder)
28 virtual bool CreateReport(const ReportInputData& inputData, IReportDocument& reportDocument, const iprm::IParamsSet* paramsPtr = nullptr) const override;
29
30protected:
31 // reimplemented (icomp::CComponentBase)
32 virtual void OnComponentCreated() override;
33
34private:
35 static QString GetStatusText(istd::IInformationProvider::InformationCategory status);
36 static icmm::CRgb GetStatusColor(istd::IInformationProvider::InformationCategory status);
37 static QString GetErrorClassText(const ErrorClass errorClass);
38
39 bool CreateTitlePage(const ReportInputData& reportData, IReportDocument& reportDocument) const;
40 bool CreateInspectionPage(const ReportInputData& reportData, const Inspection& inspection, IReportDocument& reportDocument) const;
41
42 void GetTitlePageRegionResults(const ReportInputData& reportData, Results& results) const;
43 void GetInspectionPageRegionResults(const Inspection& inspection, Results& results) const;
44
45 void AddHeader(
46 const ReportInputData& reportData,
47 const Inspection* inspectionPtr,
48 i2d::CVector2d& topLeft,
49 IReportPage& page) const;
50 void AddBody(const QString& imagePath, i2d::CVector2d& topLeft, IReportPage& page) const;
51 void AddTitlePageFooter(const ReportInputData& reportData, i2d::CVector2d& topLeft, IReportPage& page) const;
52 void AddInspectionPageFooter(const Inspection& inspection, i2d::CVector2d& topLeft, IReportPage& page) const;
53};
54
55
56} // namespace imtreport
57
58