1 #include "nta/SpriteFont.h"
2 #include "nta/Logger.h"
20 SDL_Surface* glyphSurface =
nullptr;
21 for (
char c = FIRST_PRINTABLE_CHAR; c <= LAST_PRINTABLE_CHAR; c++) {
22 glyphSurface = TTF_RenderGlyph_Blended(font, c, {255, 255, 255, 255});
23 seed->
addRect(c, glm::vec2(glyphSurface->w, glyphSurface->h));
24 SDL_FreeSurface(glyphSurface);
35 glBindTexture(GL_TEXTURE_2D,
m_texId);
36 GLubyte* graySquare =
new GLubyte[dimensions.x*dimensions.y*4];
37 memset(graySquare, 0x50, dimensions.x*dimensions.y*4);
38 glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, dimensions.x, dimensions.y, 0, GL_RGBA,
39 GL_UNSIGNED_BYTE, graySquare);
43 for (
char c = FIRST_PRINTABLE_CHAR; c <= LAST_PRINTABLE_CHAR; c++) {
46 cg.
size = cr.dimensions;
47 cg.
uvRect = glm::vec4(cr.topLeft/glm::vec2(dimensions),
48 cr.dimensions/glm::vec2(dimensions));
50 glyphSurface = TTF_RenderGlyph_Blended(font, c, {255, 255, 255, 255});
51 glTexSubImage2D(GL_TEXTURE_2D, 0, cr.topLeft.x, -cr.topLeft.y, cr.dimensions.x,
52 cr.dimensions.y, GL_RGBA, GL_UNSIGNED_BYTE, glyphSurface->pixels);
53 SDL_FreeSurface(glyphSurface);
55 glyphSurface =
nullptr;
56 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
57 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
58 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
59 glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
60 glBindTexture(GL_TEXTURE_2D, 0);
85 }
else if (c ==
'\t') {
87 xOffset += SPRITE_FONT_TAB_SIZE *
m_charGlyphs[
' '-FIRST_PRINTABLE_CHAR].
size.x;
90 if (xOffset > dim.x) {
98 crvec4 color,
float depth)
const {
100 for (
char c : text) {
104 }
else if (c ==
'\t') {
106 offset.x += SPRITE_FONT_TAB_SIZE*cg.
size.x*scale.x;
111 offset.x += cg.
size.x*scale.x;
117 glm::vec2 scale = glm::vec2(posRect[2], posRect[3])/
measure(text);
118 drawText(batch, text, glm::vec2(posRect.x, posRect.y), scale, color, depth);
121 crvec4 color,
float depth)
const {
122 glm::vec4 posRect(glm::min(corner1.x, corner2.x), glm::max(corner1.y, corner2.y),
123 glm::abs(corner1-corner2));
124 drawText(batch, text, posRect, color, depth);