Warning, file /graphics/glaxnimate/src/core/model/custom_font.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 /* 0002 * SPDX-FileCopyrightText: 2019-2023 Mattia Basaglia <dev@dragon.best> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <set> 0010 #include <memory> 0011 #include <unordered_map> 0012 0013 #include <QRawFont> 0014 #include <QObject> 0015 0016 #include "app/utils/qstring_hash.hpp" 0017 0018 namespace glaxnimate::model { 0019 0020 class CustomFont; 0021 0022 enum class FontFileFormat 0023 { 0024 Unknown, 0025 TrueType, 0026 OpenType, 0027 Woff2, 0028 Woff 0029 }; 0030 0031 0032 class CustomFontDatabase : public QObject 0033 { 0034 Q_OBJECT 0035 0036 public: 0037 static CustomFontDatabase& instance(); 0038 static FontFileFormat font_data_format(const QByteArray& data); 0039 0040 CustomFont add_font(const QString& name_alias, const QByteArray& ttf_data); 0041 CustomFont get_font(int database_index); 0042 std::vector<CustomFont> fonts() const; 0043 0044 QFont font(const QString& family, const QString& style_name, qreal size) const; 0045 std::unordered_map<QString, std::set<QString>> aliases() const; 0046 0047 private: 0048 CustomFontDatabase(); 0049 ~CustomFontDatabase(); 0050 CustomFontDatabase(const CustomFontDatabase&) = delete; 0051 CustomFontDatabase& operator=(const CustomFontDatabase&) = delete; 0052 0053 class Private; 0054 class CustomFontData; 0055 std::unique_ptr<Private> d; 0056 using DataPtr = std::shared_ptr<CustomFontData>; 0057 friend CustomFont; 0058 }; 0059 0060 class CustomFont 0061 { 0062 public: 0063 explicit CustomFont(int database_index); 0064 CustomFont(CustomFontDatabase::DataPtr d); 0065 CustomFont(); 0066 ~CustomFont(); 0067 0068 bool is_valid() const; 0069 QString family() const; 0070 QString style_name() const; 0071 int database_index() const; 0072 QFont font(int size) const; 0073 const QRawFont& raw_font() const; 0074 QByteArray data() const; 0075 0076 const QString& source_url() const; 0077 const QString& css_url() const; 0078 0079 void set_source_url(const QString& url); 0080 void set_css_url(const QString& url); 0081 0082 private: 0083 CustomFontDatabase::DataPtr d; 0084 }; 0085 0086 } // namespace glaxnimate::model 0087