1 #pragma once
2 
3 /*
4  * SPDX-FileCopyrightText: 2003-2009 Craig Drummond <craig@kde.org>
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  */
7 
8 #include "File.h"
9 #include "kfontinst_export.h"
10 #include <QDBusArgument>
11 #include <QMetaType>
12 #include <QSet>
13 
14 class QDomElement;
15 class QTextStream;
16 
17 namespace KFI
18 {
19 class KFONTINST_EXPORT Style
20 {
21 public:
22     Style(quint32 v = 0, bool sc = false, qulonglong ws = 0)
itsValue(v)23         : itsValue(v)
24         , itsWritingSystems(ws)
25         , itsScalable(sc)
26     {
27     }
28     Style(const QDomElement &elem, bool loadFiles);
29 
30     bool operator==(const Style &o) const
31     {
32         return itsValue == o.itsValue;
33     }
34 
35     QString toXml(bool disabled, const QString &family, QTextStream &s) const;
add(const File & f)36     FileCont::ConstIterator add(const File &f) const
37     {
38         return itsFiles.insert(f);
39     }
remove(const File & f)40     void remove(const File &f) const
41     {
42         itsFiles.remove(f);
43     }
value()44     quint32 value() const
45     {
46         return itsValue;
47     }
setWritingSystems(qulonglong ws)48     void setWritingSystems(qulonglong ws) const
49     {
50         itsWritingSystems = ws;
51     }
writingSystems()52     qulonglong writingSystems() const
53     {
54         return itsWritingSystems;
55     }
files()56     const FileCont &files() const
57     {
58         return itsFiles;
59     }
60     void setScalable(bool sc = true) const
61     {
62         itsScalable = sc;
63     }
scalable()64     bool scalable() const
65     {
66         return itsScalable;
67     }
clearFiles()68     void clearFiles() const
69     {
70         itsFiles.clear();
71     }
setFiles(const FileCont & f)72     void setFiles(const FileCont &f) const
73     {
74         itsFiles = f;
75     }
addFiles(const FileCont & f)76     void addFiles(const FileCont &f) const
77     {
78         itsFiles += f;
79     }
removeFiles(const FileCont & f)80     void removeFiles(const FileCont &f) const
81     {
82         itsFiles -= f;
83     }
84 
85 private:
86     quint32 itsValue;
87     mutable qulonglong itsWritingSystems;
88     mutable bool itsScalable;
89     mutable FileCont itsFiles;
90 };
91 
92 typedef QSet<Style> StyleCont;
93 
qHash(const Style & key)94 inline Q_DECL_EXPORT uint qHash(const Style &key)
95 {
96     return key.value();
97 }
98 
99 }
100 
101 Q_DECLARE_METATYPE(KFI::Style)
102 Q_DECL_EXPORT QDBusArgument &operator<<(QDBusArgument &argument, const KFI::Style &obj);
103 Q_DECL_EXPORT const QDBusArgument &operator>>(const QDBusArgument &argument, KFI::Style &obj);
104