All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
FontsModule.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Fonts.h"
7 #include "AsyncTexturing.h"
8 #include "Shader.h"
9 #include "EnvironmentCharacterSet.h"
10 #include "Helpers.h"
11 #include "Modules.h"
12 #include "FontsModuleConfiguration.h"
13 
14 namespace Eegeo
15 {
16  namespace Modules
17  {
18  namespace Core
19  {
20  class FontsModule : protected Eegeo::NonCopyable
21  {
22  public:
23  static FontsModuleConfiguration DefaultConfig();
24 
25  static FontsModuleConfiguration LegacyPatchedConfig(const FontsModuleConfiguration& config, EnvironmentCharacterSet::Type characterSetType);
26 
27  static FontsModule* Create(
28  const FontsModuleConfiguration& config,
29  RenderingModule& renderingModule,
30  Helpers::IFileIO& fileIO,
31  AsyncLoadersModule& asyncLoadersModule
32  );
33 
34  ~FontsModule();
35 
36  const Fonts::FontInstance& GetEnvironmentFont() const;
37  const Rendering::Shaders::TextShaderSet& GetTextShaderSet() const;
38  Fonts::IFontInstanceService& GetFontInstanceService() const;
39 
40  private:
42  const FontsModuleConfiguration& config,
43  Rendering::Shaders::ShaderIdGenerator& shaderIdGenerator,
44  Helpers::IFileIO& fileIO,
46  );
47 
48  void LoadResources(const FontsModuleConfiguration& config);
49  void ReleaseResources();
50 
51  Fonts::FontLoader* m_pFontLoader;
52  Fonts::FontInstanceRepository* m_pFontInstanceRepository;
53  Fonts::IFontInstanceIdBuilder* m_pFontInstanceIdBuilder;
54  Fonts::IFontInstanceService* m_pFontInstanceService;
55  const Fonts::FontInstance* m_pEnvironmentFont;
56  Rendering::Shaders::TextShader* m_pTextShaderNoOutline;
57  Rendering::Shaders::TextShader* m_pTextShaderWithOutline;
58  Rendering::Shaders::SdfTextShader* m_pTextShaderSdfNull;
59  Rendering::Shaders::SdfTextShader* m_pTextShaderSdfUniformScale;
60  Rendering::Shaders::SdfTextShader* m_pTextShaderSdfUniformScaleSuperSampled;
61  Rendering::Shaders::SdfTextShader* m_pTextShaderSdf;
62  Rendering::Shaders::SdfTextShader* m_pTextShaderSdfSuperSampled;
63  Rendering::Shaders::TextShaderSet* m_pTextShaderSet;
64  };
65  }
66  }
67 }