All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ScreenTextRenderer.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "IScreenTextRenderer.h"
7 #include "Fonts.h"
8 #include "Text.h"
9 #include "TextRendererStateComponent.h"
10 #include "BatchedTextRenderable.h"
11 
12 
13 namespace Eegeo
14 {
15  namespace Text
16  {
18  {
19  public:
20  static ScreenTextRenderer* Create(Fonts::IFontMaterialSetFactory& fontMaterialSetFactory,
21  FontMaterialCache& fontMaterialCache,
22  IBatchedScreenTextRenderableFactory& batchedScreenTextRenderableFactory,
23  BatchedScreenTextRenderable::VertexBufferType& screenTextVertexBuffer,
24  bool enableSupersampling);
25 
27 
28  ScreenTextRenderer(TextRendererStateComponent* pTextRendererStateComponent,
29  BatchedScreenTextRenderableCache* pBatchedScreenTextRenderableCache);
31 
32  void SetFontInstance(const Fonts::FontInstance* pFontInstance)
33  {
34  m_pTextRendererStateComponent->SetFontInstance(pFontInstance);
35  }
36 
37  void SetDefaultState();
38 
39  void SetTextSize(float pixelHeight)
40  {
41  m_pTextRendererStateComponent->SetTextSize(pixelHeight);
42  }
43 
44  void SetGlyphColor(const v4& color)
45  {
46  m_pTextRendererStateComponent->SetGlyphColor(color);
47  }
48 
49  void SetOutlineColor(const v4& color)
50  {
51  m_pTextRendererStateComponent->SetOutlineColor(color);
52  }
53 
54  void SetHaloStyle(const v4& color, float haloWidth, float haloHardness)
55  {
56  m_pTextRendererStateComponent->SetHaloStyle(color, haloWidth, haloHardness);
57  }
58 
59  void SetTransform(const v2& translate, const v2& rotate, const v2& scale)
60  {
61  m_pTextRendererStateComponent->SetTransform(translate, rotate, scale);
62  }
63 
64  void SetDepthTest(bool depthTest)
65  {
66  m_pTextRendererStateComponent->SetDepthTest(depthTest);
67  }
68 
69  void SetStencilTest(bool stencilTest)
70  {
71  m_pTextRendererStateComponent->SetStencilTest(stencilTest);
72  }
73 
74  void SetStencilFunc(GLenum stencilFunc, int stencilRef, u32 stencilMask)
75  {
76  m_pTextRendererStateComponent->SetStencilFunc(stencilFunc, stencilRef, stencilMask);
77  }
78 
79  void SetStencilMaskedStyle(bool enable, GLenum stencilFunc, const v4& glyphColor, const v4& haloColor)
80  {
81  m_pTextRendererStateComponent->SetStencilMaskedStyle(enable, stencilFunc, glyphColor, haloColor);
82  }
83 
84  void SetRenderLayer(Rendering::LayerIds::Values layer, int subLayer)
85  {
86  m_pTextRendererStateComponent->SetRenderLayer(layer, subLayer);
87  }
88 
89  void SetAlpha(float alpha)
90  {
91  m_pTextRendererStateComponent->SetAlpha(alpha);
92  }
93 
94  void DrawShapedGlyph(const ShapedGlyph& shapedGlyph);
95 
96  void DrawShapedGlyphs(const std::vector<Text::ShapedGlyph>& shapedGlyphs);
97 
98  void Finalize();
99 
100  void Upload();
101 
102  void EnqueueRenderables(const Rendering::RenderContext& renderContext, Rendering::RenderQueue& renderQueue);
103 
104  void Reset();
105 
106  private:
107  void SetupRenderables();
108 
109  TextRendererStateComponent* m_pTextRendererStateComponent;
110 
111  BatchedScreenTextRenderableCache* m_pBatchedScreenTextRenderableCache;
112 
113  };
114  }
115 }