9#include <istd/CClassInfo.h>
10#include <i2d/CRectangle.h>
11#include <i2d/CCircle.h>
12#include <i2d/CPolygon.h>
15#include <imtreport/CGraphicsElementBase.h>
16#include <imtreport/CTextLabel.h>
17#include <imtreport/CImageRectangle.h>
24template <
class Object2dType>
25class TGraphicsElement:
public Object2dType,
public CGraphicsElementBase
28 typedef Object2dType BaseClass;
29 typedef CGraphicsElementBase BaseClass2;
31 static QByteArray GetTypeName();
34 virtual QByteArray GetFactoryId()
const override;
37 virtual bool Serialize(iser::IArchive& archive)
override;
40 virtual bool CopyFrom(
const istd::IChangeable&
object, CompatibilityMode mode = CM_WITHOUT_REFS)
override;
41 virtual istd::IChangeableUniquePtr CloneMe(CompatibilityMode mode = CM_WITHOUT_REFS)
const override;
45template <
class Object2dType>
46QByteArray TGraphicsElement<Object2dType>::GetTypeName()
48 QMap<QByteArray, QByteArray> knownTypesMap;
49 knownTypesMap[istd::CClassInfo::GetName<i2d::CLine2d>()] =
"Line";
50 knownTypesMap[istd::CClassInfo::GetName<i2d::CRectangle>()] =
"Rectangle";
51 knownTypesMap[istd::CClassInfo::GetName<i2d::CCircle>()] =
"Circle";
52 knownTypesMap[istd::CClassInfo::GetName<i2d::CPolygon>()] =
"Polygon";
53 knownTypesMap[istd::CClassInfo::GetName<i2d::CLabel>()] =
"Label";
54 knownTypesMap[istd::CClassInfo::GetName<CTextLabel>()] =
"TextLabel";
55 knownTypesMap[istd::CClassInfo::GetName<CImageRectangle>()] =
"Image";
57 QByteArray baseTypeName = istd::CClassInfo::GetName<Object2dType>();
59 if (knownTypesMap.contains(baseTypeName)){
60 return knownTypesMap[baseTypeName];
63 return istd::CClassInfo::GetName<TGraphicsElement<Object2dType> >();
69template <
class Object2dType>
70QByteArray TGraphicsElement<Object2dType>::GetFactoryId()
const
78template <
class Object2dType>
79bool TGraphicsElement<Object2dType>::Serialize(iser::IArchive& archive)
81 bool retVal = BaseClass::Serialize(archive);
83 retVal = retVal && BaseClass2::Serialize(archive);
91template <
class Object2dType>
92bool TGraphicsElement<Object2dType>::CopyFrom(
const istd::IChangeable&
object, CompatibilityMode mode)
94 return BaseClass2::CopyFrom(
object, mode) && BaseClass::CopyFrom(
object, mode);
98template <
class Object2dType>
99istd::IChangeableUniquePtr TGraphicsElement<Object2dType>::CloneMe(CompatibilityMode mode)
const
101 istd::IChangeableUniquePtr clonePtr(
new TGraphicsElement<Object2dType>);
102 if (clonePtr->CopyFrom(*
this, mode))
111typedef TGraphicsElement<i2d::CRectangle> CRectangleElement;
112typedef TGraphicsElement<i2d::CCircle> CCircleElement;
113typedef TGraphicsElement<i2d::CPolygon> CPolygonElement;
114typedef TGraphicsElement<i2d::CLine2d> CLineElement;
115typedef TGraphicsElement<CImageRectangle> CImageRectangleElement;
118class CTextLabelElement :
public TGraphicsElement<CTextLabel>
121 typedef TGraphicsElement<CTextLabel> BaseClass;
125 m_graphicsAttributes.strokeWidth = -1;