All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
TextMeshBuilder.h
1 // Copyright eeGeo Ltd (2012-2014), All Rights Reserved
2 
3 #pragma once
4 
5 #include "Types.h"
6 #include "Rendering.h"
7 #include "Space.h"
8 #include "Fonts.h"
9 #include <string>
10 #include <vector>
11 
12 namespace Eegeo
13 {
14  namespace TextMeshes
15  {
16  struct TextMeshBuilderResult;
17 
18  namespace Internal
19  {
20  class TextMeshGenerator;
21  }
22 
24  {
25  public:
27  : m_textMeshFactory(textMeshFactory)
28  , m_generator(generator)
29  , m_currentX(0.f)
30  {
31  }
32 
33  virtual ~TextMeshBuilder();
34 
35  virtual void Begin(const Fonts::FontInstance* pFont, size_t initialCharacterCapacity);
36 
37  virtual void GenerateMeshes(bool shadowed, bool doubleSided, float shadowOffsetMeters, const std::string& debugName, const Space::CubeMap::CubeMapCellInfo& cellInfo, TextMeshBuilderResult& out_result) = 0;
38 
39  virtual bool HasValidGeometry() const;
40 
41  virtual float GetCurrentX() const { return m_currentX; }
42 
43  protected:
45  Internal::TextMeshGenerator* const m_generator;
46  float m_currentX;
47  std::vector<u32> m_stringScratch;
48  };
49  }
50 }