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)94inline 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