MGL(Win32)
読み取り中…
検索中…
一致する文字列を見つけられません
mgl_font_storage.h
[詳解]
1// SPDX-License-Identifier: Zlib
2/* ------------------------------------------------------------------------- */
9/* ------------------------------------------------------------------------- */
10
11#ifndef INCGUARD_MGL_FONT_STORAGE_H_1622009046
12#define INCGUARD_MGL_FONT_STORAGE_H_1622009046
13
14#include <mutex>
15
20
21namespace MGL::Render
22{
24enum class FontKey : uint32_t {};
25
28
30constexpr uint32_t kDefaultFontKeySeed = MGL::Hash::kFNV1aDefaultValue32; // 32bitの値なら何でもいい.衝突する場合は変更を
31
32/* ------------------------------------------------------------------------- */
39/* ------------------------------------------------------------------------- */
40constexpr FontKey MakeFontKey(const char *key, uint32_t seed = kDefaultFontKeySeed) noexcept
41{
42 return FontKey{MGL::Hash::FNV1a(key, seed)};
43}
44
46class FontStorage : public MGL::SharedSingleton<FontStorage>
47{
48public:
50
51 FontStorage() noexcept = default;
52
53 bool Add(FontKey key, const SharedFontResource &resource) noexcept;
54 SharedFontResource Get(FontKey key) noexcept;
55 bool Remove(FontKey key) noexcept;
56
57private:
58 FontResourceMap _resources;
59 std::mutex _mutex;
60};
61} // namespace MGL::Render
62
63#endif // INCGUARD_MGL_FONT_STORAGE_H_1622009046
64
65// vim: et ts=4 sw=4 sts=4
フォントストレージクラス
Definition mgl_font_storage.h:47
SharedFontResource Get(FontKey key) noexcept
フォントリソースの取得
Definition mgl_font_storage.cc:57
static STL::unique_ptr< FontStorage > & GetInstanceRef() noexcept
インスタンスの取得
Definition mgl_font_storage.cc:21
bool Remove(FontKey key) noexcept
フォントリソースの削除
Definition mgl_font_storage.cc:79
bool Add(FontKey key, const SharedFontResource &resource) noexcept
フォントリソースの追加
Definition mgl_font_storage.cc:35
シングルトンテンプレート(共有ライブラリ用)
Definition mgl_singleton.h:44
MGL フォントリソース
std::shared_ptr< FontResource > SharedFontResource
フォントリソースの共有ポインタ
Definition mgl_font_resource.h:287
constexpr FontKey MakeFontKey(const char *key, uint32_t seed=kDefaultFontKeySeed) noexcept
フォントキーを生成
Definition mgl_font_storage.h:40
STL::unordered_map< FontKey, SharedFontResource > FontResourceMap
フォントリソースを管理するコンテナの型
Definition mgl_font_storage.h:27
constexpr uint32_t kDefaultFontKeySeed
フォントキーを生成する際のハッシュのシード値
Definition mgl_font_storage.h:30
FontKey
フォントリソースにアクセスするキーの型
Definition mgl_font_storage.h:24
MGL FNV-1aハッシュ計算関数
MGL シングルトンクラス
MGL STLコンテナの代替
std::unordered_map< Key, T, Hash, Pred, Allocator< std::pair< const Key, T > > > unordered_map
std::unordered_mapの代替
Definition mgl_stl_containers.h:71
std::unique_ptr< T, Deleter > unique_ptr
MGLのアロケータを利用するユニークポインタ
Definition mgl_stl_memory.h:247