Bubba-3D  0.9.0
Awesome game engine!
TextObject.h
1 /*
2  * This file is part of Bubba-3D.
3  *
4  * Bubba-3D is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU Lesser General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * Bubba-3D is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public License
15  * along with Bubba-3D. If not, see http://www.gnu.org/licenses/.
16  */
17 #pragma once
18 
19 #include <IHudDrawable.h>
20 #include <GL/glew.h>
21 #include <vector>
22 
26 class TextObject : public IHudDrawable {
27 
28 public:
33  TextObject(std::string text, Font* font, int width, int height, int x, int y);
34 
35  ~TextObject() = default;
41  void virtual render(ShaderProgram* shaderProgram, chag::float4x4* projectionMatrix);
42 
46  void virtual setText(std::string text);
47 
48 protected:
49  std::string text;
50  Font* font;
51  int width;
52  int height;
53  int x;
54  int y;
55  int numVertices;
56 
57  GLuint vao, vbo;
58  bool buffersInitiated = false;
59 
60 private:
61  void addPoints(std::vector<GLfloat> *data, std::initializer_list<float> elems);
62  void getLines(std::vector<std::string>* lines, std::vector<int>* linesOffsetLeft, int* numChars);
63  int getOffsetByLineLength(int lineLength);
64  void init(std::vector<std::string> lines, std::vector<int> linesOffsetLeft, int numChars);
65  chag::float4x4 getModelMatrix();
66  void initAndBindBuffers();
67 
68 };
TextObject(std::string text, Font *font, int width, int height, int x, int y)
Definition: TextObject.cpp:26
Definition: Font.h:27
Class for maintaining OpenGL shader programs.
Definition: ShaderProgram.h:39
virtual void setText(std::string text)
Definition: TextObject.cpp:31
virtual void render(ShaderProgram *shaderProgram, chag::float4x4 *projectionMatrix)
Definition: TextObject.cpp:179