ImagingTools Core SDK
CDesignTokenFileParserComp.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 <QtGui/QFont>
7
8// ACF includes
9#include <ilog/TLoggerCompWrap.h>
10#include <ifile/IFileNameParam.h>
11
12// ImtCore includes
13#include <imtbase/CCollectionInfo.h>
14#include <imtdesign/IDesignTokenFileParser.h>
15
16
17namespace imtdesign
18{
19
20
21class CDesignTokenFileParserComp:
22 public ilog::CLoggerComponentBase,
23 public IDesignTokenFileParser
24{
25public:
26 typedef ilog::CLoggerComponentBase BaseClass;
27
28 I_BEGIN_COMPONENT(CDesignTokenFileParserComp);
29 I_REGISTER_INTERFACE(IDesignTokenFileParser);
30 I_END_COMPONENT;
31
32 // reimplemented (IDesignTokenFileParser)
33 virtual bool ParseFile() override;
34 virtual bool SplitFile(const QString& outputDirPath, const QString& projectName) override;
35 virtual bool SetFile(const QByteArray& filePath) override;
36 virtual QByteArray GetRawColor(const QByteArray& styleName, QPalette::ColorGroup group, QPalette::ColorRole role) const override;
37 virtual bool GetStyleSheetColorPalette(const QByteArray& designSchemaId, QVariantMap& palette) const override;
38 virtual bool GetBasePalette(const QByteArray& designSchemaId, QVariantMap& palette) const override;
39 virtual QByteArrayList GetTemplateIconColorList(const QByteArray& styleName) const override;
40 virtual QByteArray GetIconColor(const QByteArray& styleName, IconState iconState, const QByteArray& templateColor) const override;
41
42 // reimplemented (IColorPaletteProvider)
43 virtual const imtbase::ICollectionInfo& GetDesignSchemaList() const override;
44 virtual bool GetColorPalette(const QByteArray& designSchemaId, ColorSchema& palette) const override;
45
46 // reimplemented (IFontProvider)
47 virtual const imtbase::ICollectionInfo& GetFontList(const QByteArray& designSchemaId) const override;
48 virtual bool GetFont(const QByteArray& designSchemaId, const QByteArray& fontId, QFont& font) const override;
49
50private:
51 static void ReplaceColorNames(QJsonObject& json, const QVariantMap& variableMaps);
52 static void ReplaceColorNamesRecursive(QJsonObject& json, const QVariantMap& variableMaps);
53
54private:
55 I_REF(ifile::IFileNameParam, m_designTokenFilePathAttrPtr);
56
57 imtbase::CCollectionInfo m_designSchemaList;
58 QByteArrayList m_templateIconColorList;
59 QFileInfo m_designTokenFileInfo;
60
61 imtbase::CCollectionInfo m_emptyCollectionInfo;
62
63 QMap<QString, QVariantMap> m_stylesPalettes;
64 QMap<QString, QVariantMap> m_stylesBasePalettes;
65 QMap<QString, ColorSchema> m_colorPalettes;
66
67 QMap<QString, istd::TSmartPtr<imtbase::ICollectionInfo>> m_fontsCollectionInfos;
68 QMap<QString, QMap<QByteArray, QFont>> m_fonts;
69
70 struct IconColor
71 {
72 IconColor(const QByteArray& aColor = QByteArray(),
73 const QByteArray& aStyle = QByteArray(),
74 const QVariantMap& aColorList = QVariantMap())
75 {
76 color = aColor;
77 style = aStyle;
78 colorList = aColorList;
79 }
80 QByteArray color;
81 QByteArray style;
82 QVariantMap colorList;
83 bool operator==(const IconColor& other) const
84 {
85 return color == other.color && style == other.style && colorList == other.colorList;
86 }
87 };
88 QList<IconColor> m_iconColors;
89
90 struct RawColor
91 {
92 RawColor(QPalette::ColorGroup group, QPalette::ColorRole role, const QByteArray& value)
93 {
94 this->group = group;
95 this->role = role;
96 this->value = value;
97 }
98 QPalette::ColorGroup group;
99 QPalette::ColorRole role;
100 QByteArray value;
101 };
102 QMultiMap<QByteArray, RawColor> m_styleSheetColors;
103};
104
105
106} // namespace imtdesign
107
108