From dcce0ed11b893916456bea7e8e8038122521c510 Mon Sep 17 00:00:00 2001 From: Alessandro Mauri Date: Sun, 19 Feb 2023 23:40:58 +0100 Subject: [PATCH] I can't even --- text_rendering/Makefile | 6 +- text_rendering/atlas.png | Bin 20172 -> 20172 bytes text_rendering/font.c | 99 +++++---- text_rendering/font.h | 10 +- text_rendering/main.c | 35 ++-- text_rendering/ren.c | 440 +++++++++++++++++++++++++++++++++++---- text_rendering/ren.h | 48 +++++ text_rendering/stack.h | 117 ++++++----- text_rendering/test | Bin 287968 -> 319288 bytes text_rendering/util.c | 9 +- text_rendering/util.h | 2 +- 11 files changed, 606 insertions(+), 160 deletions(-) create mode 100644 text_rendering/ren.h diff --git a/text_rendering/Makefile b/text_rendering/Makefile index 9df2ab1..530574e 100644 --- a/text_rendering/Makefile +++ b/text_rendering/Makefile @@ -1,7 +1,7 @@ -LDFLAGS = -lm -lgrapheme +LDFLAGS = -lm -lgrapheme -lSDL2 -lGLEW -lGL CFLAGS = -g -Wall -Wextra -pedantic -SOURCE = main.c font.c cache.c hash.c util.c -HEADER = font.h hash.h cache.h util.h +SOURCE = main.c font.c cache.c hash.c util.c ren.c +HEADER = font.h hash.h cache.h util.h ren.h test: ${HEADER} ${SOURCE} gcc ${CFLAGS} ${LDFLAGS} ${SOURCE} -o test diff --git a/text_rendering/atlas.png b/text_rendering/atlas.png index 754a74d794ab503cb772e32a4a99d0663bc64ee7..18aabd1f4261e44ba4bfa43a7962d112f0a0a236 100644 GIT binary patch delta 14920 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 diff --git a/text_rendering/font.c b/text_rendering/font.c index c50ac54..036cfce 100644 --- a/text_rendering/font.c +++ b/text_rendering/font.c @@ -25,27 +25,22 @@ // this way the texture atlas for the font will be bigger but we save up the space // needed for rendering the font in multiple sizes - -struct font_atlas { - unsigned int glyphs, width, height; - unsigned char *atlas; - - struct { - stbtt_fontinfo stb; - msdf_AllocCtx ctx; - msdf_Result msdf; - float scale; - } priv; - - int file_size; - unsigned char *file; -}; +// as of now only monospaced fonts work correctly since no kerning information is stored const unsigned int glyph_w = 32; const unsigned int glyph_h = 32; +struct priv { + stbtt_fontinfo stb; + msdf_AllocCtx ctx; + msdf_Result msdf; + float scale; +}; +#define PRIV(x) ((struct priv *)x->priv) + + // only useful for msdf_c static inline void * _emalloc(size_t x, void *_) { (void)_; return emalloc(x); } static inline void _efree(void *x, void *_) { (void)_; efree(x); } @@ -53,7 +48,11 @@ static inline void _efree(void *x, void *_) { (void)_; efree(x); } struct font_atlas * font_init(void) { - return emalloc(sizeof(struct font_atlas)); + struct font_atlas *p = emalloc(sizeof(struct font_atlas)); + memset(p, 0, sizeof(struct font_atlas)); + p->priv = emalloc(sizeof(struct priv)); + memset(p->priv, 0, sizeof(struct priv)); + return p; } @@ -67,28 +66,35 @@ int font_load(struct font_atlas *atlas, const char *path) dump_file(path, &(atlas->file), &(atlas->file_size)); - err = stbtt_InitFont(&(atlas->priv.stb), atlas->file, 0); + err = stbtt_InitFont(&(PRIV(atlas)->stb), (unsigned char *)atlas->file, 0); ERROR(err == 0, -1); - atlas->priv.scale = stbtt_ScaleForPixelHeight(&(atlas->priv.stb), glyph_h); + PRIV(atlas)->scale = stbtt_ScaleForPixelHeight(&(PRIV(atlas)->stb), glyph_h); //int ascent, descent, linegap, baseline; //int x0,y0,x1,y1; - //stbtt_GetFontVMetrics(&(atlas->priv.stb), &ascent, &descent, &linegap); - //stbtt_GetFontBoundingBox(&(atlas->priv.stb), &x0, &y0, &x1, &y1); - //baseline = atlas->priv.scale * -y0; - //atlas->glyph_max_w = (atlas->priv.scale*x1) - (atlas->priv.scale*x0); - //atlas->glyph_max_h = (baseline+atlas->priv.scale*y1) - (baseline+atlas->priv.scale*y0); + //stbtt_GetFontVMetrics(&(PRIV(atlas)->stb), &ascent, &descent, &linegap); + //stbtt_GetFontBoundingBox(&(PRIV(atlas)->stb), &x0, &y0, &x1, &y1); + //baseline = PRIV(atlas)->scale * -y0; + //atlas->glyph_max_w = (PRIV(atlas)->scale*x1) - (PRIV(atlas)->scale*x0); + //atlas->glyph_max_h = (baseline+PRIV(atlas)->scale*y1) - (baseline+PRIV(atlas)->scale*y0); //atlas->atlas = emalloc(atlas->glyph_max_w*atlas->glyph_max_h*CACHE_SIZE); - atlas->atlas = ecalloc(CACHE_SIZE, BDEPTH*glyph_h*glyph_w); + atlas->atlas = emalloc(CACHE_SIZE*BDEPTH*glyph_h*glyph_w); memset(atlas->atlas, 0, CACHE_SIZE*BDEPTH*glyph_h*glyph_w); - atlas->width = glyph_w*CACHE_SIZE/2; - atlas->height = glyph_h*CACHE_SIZE/2; + // FIXME: make this a square atlas + atlas->width = glyph_w*CACHE_SIZE/4; + atlas->height = glyph_h*4; - atlas->priv.ctx = (msdf_AllocCtx){_emalloc, _efree, NULL}; + PRIV(atlas)->ctx = (msdf_AllocCtx){_emalloc, _efree, NULL}; cache_init(); + // preallocate all ascii characters + for (char c = ' '; c <= '~'; c++) { + if (!font_get_glyph_texture(atlas, c, NULL)) + return -1; + } + return 0; } @@ -97,6 +103,7 @@ int font_free(struct font_atlas *atlas) { efree(atlas->atlas); efree(atlas->file); + efree(atlas->priv); efree(atlas); cache_destroy(); return 0; @@ -105,33 +112,38 @@ int font_free(struct font_atlas *atlas) // FIXME: when generating the sdf I only use the height, so to not encounter memory // errors height and width must be equal -const struct font_glyph * font_get_glyph_texture(struct font_atlas *atlas, unsigned int code) +const struct font_glyph * font_get_glyph_texture(struct font_atlas *atlas, unsigned int code, int *updated) { + int u = 0; + if (!updated) updated = &u; + const struct font_glyph *r; - if ((r = cache_search(code)) != NULL) + if ((r = cache_search(code)) != NULL) { + *updated = 0; return r; + } + *updated = 1; // generate the sdf and put it into the cache // TODO: generate the whole block at once - int idx = stbtt_FindGlyphIndex(&atlas->priv.stb, code); + int idx = stbtt_FindGlyphIndex(&PRIV(atlas)->stb, code); // FIXME: what happens if I change the range? int err; - err = msdf_genGlyph(&atlas->priv.msdf, - &atlas->priv.stb, + err = msdf_genGlyph(&PRIV(atlas)->msdf, + &PRIV(atlas)->stb, idx, BORDER, - atlas->priv.scale, + PRIV(atlas)->scale, 2.0f/glyph_h, - &atlas->priv.ctx); + &PRIV(atlas)->ctx); // msdf_genGlyph returns 0 only when there are no contours, so only for // whitespace and such, for those insert a zero uv map into the cache // FIXME: this is a waste of space if (!err) { - atlas->priv.msdf.width = 0; - atlas->priv.msdf.height = 0; + PRIV(atlas)->msdf.width = 0; + PRIV(atlas)->msdf.height = 0; } - unsigned int spot = cache_get(); unsigned int oy = (glyph_h * spot) / atlas->width; unsigned int ox = (glyph_h * spot) % atlas->height; @@ -139,7 +151,7 @@ const struct font_glyph * font_get_glyph_texture(struct font_atlas *atlas, unsig // sum magic shit struct {unsigned char r,g,b;} *a = (void *)atlas->atlas; - msdf_Result *res = &atlas->priv.msdf; + msdf_Result *res = &PRIV(atlas)->msdf; float s = glyph_h; float tw = ((s * 0.7f) + s) / (s * 2.0f); float ta = tw - 0.5f; @@ -178,7 +190,11 @@ const struct font_glyph * font_get_glyph_texture(struct font_atlas *atlas, unsig .w = res->width, .h = res->height, }; - return cache_insert(&g, spot); + const struct font_glyph *ret = cache_insert(&g, spot); + + efree(PRIV(atlas)->msdf.rgb); + + return ret; } @@ -186,9 +202,8 @@ void font_dump(const struct font_atlas *atlas, const char *path) { stbi_write_png( path, - //atlas->width, - //atlas->height, - 128, 128, + atlas->width, + atlas->height, BDEPTH, atlas->atlas, BDEPTH*atlas->width); diff --git a/text_rendering/font.h b/text_rendering/font.h index 174dc01..b5d31d6 100644 --- a/text_rendering/font.h +++ b/text_rendering/font.h @@ -24,13 +24,19 @@ struct font_glyph { unsigned int u, v, w, h; }; +struct font_atlas { + unsigned int glyphs, width, height; + unsigned char *atlas; + int file_size; + char *file; + void *priv; +}; -struct font_atlas; struct font_atlas * font_init(void); int font_load(struct font_atlas *atlas, const char *path); int font_free(struct font_atlas *atlas); -const struct font_glyph * font_get_glyph_texture(struct font_atlas *atlas, unsigned int code); +const struct font_glyph * font_get_glyph_texture(struct font_atlas *atlas, unsigned int code, int *updated); void font_dump(const struct font_atlas *atlas, const char *path); #endif diff --git a/text_rendering/main.c b/text_rendering/main.c index 61ffcb4..9c6e7c5 100644 --- a/text_rendering/main.c +++ b/text_rendering/main.c @@ -1,33 +1,30 @@ #include #include -#include -#include "cache.h" -#include "font.h" +#include "ren.h" #include "util.h" int main(void) { - int err; - struct font_atlas *at = font_init(); - err = font_load(at, "./monospace.ttf"); - ERROR(err, -1, printf("failed to load font\n")); - - const char *s = "ciao mamma"; - const struct font_glyph *g; - size_t ret, off; - uint_least32_t cp; - for (off = 0; (ret = grapheme_decode_utf8(s+off, SIZE_MAX, &cp)) > 0 && cp != 0; off += ret) { - printf("%.*s (%d) -> %d\n", (int)ret, s+off, (int)ret, cp); - g = font_get_glyph_texture(at, cp); - if (!g) - printf("g is NULL\n"); + SDL_Window *win = SDL_CreateWindow( + "test render", + SDL_WINDOWPOS_UNDEFINED, + SDL_WINDOWPOS_UNDEFINED, + 500, + 500, + SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE); + if (ren_init(win)) { + printf("renderer init error: %s\n", ren_strerror()); + return 1; } - font_dump(at, "./atlas.png"); + ren_render_text("ciao mamma", 100, 100, 100, 100, 12); + SDL_GL_SwapWindow(win); - font_free(at); + while(1); + ren_free(); + SDL_DestroyWindow(win); return 0; } diff --git a/text_rendering/ren.c b/text_rendering/ren.c index 90313c4..36d0847 100644 --- a/text_rendering/ren.c +++ b/text_rendering/ren.c @@ -1,53 +1,423 @@ #include #include #include +#include +#include +#include +#include "util.h" +#include "font.h" +#include "ren.h" -#define GLSL_VERT_SHADER "vertex.glsl" -#define GLSL_FRAG_SHADER "fragment.glsl" -#define PACKED __attribute__((packed)) + +enum REN_ERR { + REN_SUCCESS = 0, + REN_ERRNO, + REN_INVAL, + REN_VERTEX, + REN_FRAGMENT, + REN_PROGRAM, + REN_COMPILE, + REN_LINK, + REN_TEXTURE, + REN_CONTEXT, + REN_GLEW, + REN_FONT, + REN_BUFFER, +}; + + +// TODO: make a macro for enum-associated string arrays +const char * ren_err_msg[] = { + [REN_SUCCESS] = "Success", + [REN_ERRNO] = "Look at errno", + [REN_INVAL] = "Invalid or NULL arguments", + [REN_VERTEX] = "Failed to create opengl vertex shader", + [REN_FRAGMENT] = "Failed to create opengl fragment shader", + [REN_PROGRAM] = "Failed to create opengl program", + [REN_COMPILE] = "Failed to compile shaders", + [REN_LINK] = "Failed to link shaders", + [REN_TEXTURE] = "Failed to create texture", + [REN_CONTEXT] = "Failed to create SDL OpenGL context", + [REN_GLEW] = "GLEW Error", + [REN_FONT] = "Font Error", + [REN_BUFFER] = "Failed to create opengl buffer", +}; + +// different stacks +#include "stack.h" +STACK_DECL(vtstack, struct v_text) +STACK_DECL(vcstack, struct v_col) struct { - SDL_Window *w; SDL_GLContext *gl; - GLuint gl_vertbuffer; - GLuint gl_program; + struct font_atlas *font; GLuint font_texture; + GLuint font_prog; + GLuint box_prog; + GLuint font_buffer; + struct vtstack font_stack; + struct vcstack box_stack; } ren = {0}; -typedef struct PACKED { - union { GLint x, u; }; - union { GLint y, v; }; -} vec2_i; +static int ren_errno; -typedef struct PACKED { - union { GLint x, r; }; - union { GLint y, g; }; - union { GLint z, b; }; - union { GLint w, a; }; -} vec4_i; -// textured vertex -struct PACKED v_text { - vec2_i pos; - vec2_i uv; -}; +// print shader compilation errors +static int shader_compile_error(GLuint shader) +{ + GLint status; + glGetShaderiv(shader, GL_COMPILE_STATUS, &status); + if (status != GL_FALSE) + return 0; -// colored vertex -struct PACKED v_col { - vec2_i pos; - vec2_i col; -}; + GLint log_length; + glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &log_length); + GLchar *log_str = emalloc((log_length + 1)*sizeof(GLchar)); + glGetShaderInfoLog(shader, log_length, NULL, log_str); -// different stacks -#define _STACK_NAME vtstack -#define _STACK_TYPE struct v_text -#include "stack.h" -#undef _STACK_NAME -#undef _STACK_TYPE -#define _STACK_NAME vcstack -#define _STACK_TYPE struct v_col -#include "stack.h" + const char *shader_type_str = NULL; + GLint shader_type; + glGetShaderiv(shader, GL_SHADER_TYPE, &shader_type); + switch(shader_type) { + case GL_VERTEX_SHADER: shader_type_str = "vertex"; break; + case GL_GEOMETRY_SHADER: shader_type_str = "geometry"; break; + case GL_FRAGMENT_SHADER: shader_type_str = "fragment"; break; + } + + fprintf(stderr, "Compile failure in %s shader:\n%s\n", shader_type_str, log_str); + efree(log_str); + return -1; +} + + +// print shader link errors +static int shader_link_error(GLuint prog) +{ + GLint status; + glGetProgramiv (prog, GL_LINK_STATUS, &status); + if (status != GL_FALSE) + return 0; + + GLint log_length; + glGetProgramiv(prog, GL_INFO_LOG_LENGTH, &log_length); + + GLchar *log_str = emalloc((log_length + 1)*sizeof(GLchar)); + glGetProgramInfoLog(prog, log_length, NULL, log_str); + fprintf(stderr, "Linker failure: %s\n", log_str); + efree(log_str); + + return -1; +} + + +#define REN_RET(a,b) {ren_errno = b; return a;} +static GLuint shader_compile(const char *shader, GLuint type) +{ + GLuint s; + // initialize the vertex shader and get the corresponding id + s = glCreateShader(type); + if (!s) REN_RET(0, REN_VERTEX) + // get the shader into opengl + glShaderSource(s, 1, &shader, NULL); + glCompileShader(s); + if (shader_compile_error(s)) + REN_RET(0, REN_COMPILE) + return s; +} + + +const char * ren_strerror(void) +{ + return ren_err_msg[ren_errno % (sizeof(ren_err_msg)/sizeof(char *))]; +} + + +// compile a vertex shader (vs_path) and a fragment shader (fs_path) into an opengl +// program and return it's index +static GLuint ren_compile_program(const char *vs_path, const char *fs_path) +{ + GLuint gl_vertshader, gl_fragshader, prog; + + if (!vs_path || !fs_path) + REN_RET(0, REN_INVAL) + + char *str = NULL; + + dump_file(vs_path, &str, NULL); + if (!str) REN_RET(0, REN_ERRNO) + gl_vertshader = shader_compile(str, GL_VERTEX_SHADER); + efree(str); + if (!gl_vertshader) + return 0; + + dump_file(fs_path, &str, NULL); + if (!str) REN_RET(0, REN_ERRNO) + gl_fragshader = shader_compile(str, GL_FRAGMENT_SHADER); + efree(str); + if (!gl_fragshader) + return 0; + + + // create the main program object, it is an amalgamation of all shaders + prog = glCreateProgram(); + if (!prog) REN_RET(0, REN_PROGRAM) + + // attach the shaders to the program (set which shaders are present) + glAttachShader(prog, gl_vertshader); + glAttachShader(prog, gl_fragshader); + // then link the program (basically the linking stage of the program) + glLinkProgram(prog); + if (shader_link_error(prog)) + REN_RET(0, REN_LINK) + + // after linking the shaders can be detached and the source freed from + // memory since the program is ready to use + glDetachShader(prog, gl_vertshader); + glDetachShader(prog, gl_fragshader); + + return prog; +} + + +static GLuint ren_texturergb_2d(const char *buf, int w, int h, int upscale, int downscale) +{ + GLuint t; + + if (!buf || w <= 0 || h <= 0) + REN_RET(0, REN_INVAL) + + glGenTextures(1, &t); + if (!t) REN_RET(0, REN_TEXTURE) + + glBindTexture(GL_TEXTURE_2D, t); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, w, h, 0, GL_RGB, GL_UNSIGNED_BYTE, buf); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, downscale); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, upscale); + + return t; +} + + +static GLuint ren_texturergba_2d(const char *buf, int w, int h, int upscale, int downscale) +{ + GLuint t; + + if (!buf || w <= 0 || h <= 0) + REN_RET(0, REN_INVAL) + + glGenTextures(1, &t); + if (!t) REN_RET(0, REN_TEXTURE) + + glBindTexture(GL_TEXTURE_2D, t); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, buf); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, downscale); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, upscale); + + return t; +} + + +// FIXME: update only the newly generated character instead of the whole texture +static int update_font_texture(void) +{ + glTexSubImage2D( + ren.font_texture, + 0, 0, 0, + ren.font->width, + ren.font->height, + GL_RGB, + GL_UNSIGNED_BYTE, + ren.font->atlas); + font_dump(ren.font, "./atlas.png"); + return 0; +} + + +// TODO: push window size uniforms +int ren_init(SDL_Window *w) +{ + if (!w) + REN_RET(-1, REN_INVAL) + ren.gl = SDL_GL_CreateContext(w); + if (!ren.gl) + REN_RET(-1, REN_CONTEXT) + + // select some features + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glDisable(GL_CULL_FACE); + glDisable(GL_DEPTH_TEST); + glEnable(GL_SCISSOR_TEST); + glEnable(GL_TEXTURE_2D); + + GLenum glew_err = glewInit(); + if (glew_err != GLEW_OK) + REN_RET(glew_err, REN_GLEW); + + ren.font = font_init(); + if (!ren.font) REN_RET(-1, REN_FONT) + if (font_load(ren.font, FONT_PATH)) REN_RET(-1, REN_FONT) + + ren.font_texture = ren_texturergb_2d( + (const char *)ren.font->atlas, + ren.font->width, + ren.font->height, + GL_LINEAR, GL_LINEAR); + if (!ren.font_texture) return -1; + + ren.font_prog = ren_compile_program(FONT_VERSHADER, FONT_FRAGSHADER); + if (!ren.font_prog) return -1; + + ren.font_stack = vtstack_init(); + ren.box_stack = vcstack_init(); + + glGenBuffers(1, &ren.font_buffer); + if (!ren.font_buffer) REN_RET(-1, REN_BUFFER) + glBindBuffer(GL_ARRAY_BUFFER, ren.font_buffer); + glEnableVertexAttribArray(REN_VERTEX_IDX); + glVertexAttribPointer( + REN_VERTEX_IDX, + 2, + GL_INT, + GL_FALSE, + sizeof(struct v_text), + 0); + glEnableVertexAttribArray(REN_UV_IDX); + glVertexAttribPointer( + REN_UV_IDX, + 2, + GL_INT, + GL_FALSE, + sizeof(struct v_text), + (void*)sizeof(vec2_i)); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + + int width, height; + SDL_GetWindowSize(w, &width, &height); + ren_update_viewport(width, height); + glClearColor(0.3f, 0.3f, 0.3f, 0.f); + glClear(GL_COLOR_BUFFER_BIT); + + return 0; +} + + +static int ren_draw_font_stack(void) +{ + glUseProgram(ren.font_prog); + glBindBuffer(GL_ARRAY_BUFFER, ren.font_buffer); + + // TODO: implement size and damage tracking on stacks + glBufferData( + GL_ARRAY_BUFFER, + ren.font_stack.idx*sizeof(struct v_text), + ren.font_stack.items, + GL_DYNAMIC_DRAW); + glDrawArrays(GL_TRIANGLES, 0, ren.font_stack.idx); + + glBindBuffer(GL_ARRAY_BUFFER, 0); + glUseProgram(0); + return 0; +} + + +int ren_update_viewport(int w, int h) +{ + glViewport(0, 0, w, h); + glUniform2i(REN_SCREENSIZE_LOC, w, h); + return 0; +} + + +// TODO: implement font size +int ren_render_text(const char *str, int x, int y, int w, int h, int size) +{ + // x4,y4 x3,y3 + // +-------------+ + // |(x,y) /| + // | / | + // | 2 / | + // | / | + // | / | + // | / 1 | + // |/ | + // +-------------+ + // x1,y1 x2,y2 + + const struct font_glyph *g; + size_t ret, off; + uint_least32_t cp; + int updated, gx = x, gy = y; + struct v_text v; + for (off = 0; (ret = grapheme_decode_utf8(str+off, SIZE_MAX, &cp)) > 0 && cp != 0; off += ret) { + g = font_get_glyph_texture(ren.font, cp, &updated); + if (!g) REN_RET(-1, REN_FONT); + if (updated) { + if (update_font_texture()) + REN_RET(-1, REN_TEXTURE); + } + + // x1,y1 + v = (struct v_text){ + .pos = { .x = gx, .y = gy+g->h }, + .uv = { .u = g->u, .v = g->v+g->h }, + }; + vtstack_push(&ren.font_stack, &v); + // x2,y2 + v = (struct v_text){ + .pos = { .x = gx+g->w, .y = gy+g->h }, + .uv = { .u = g->u+g->w, .v = g->v+g->h }, + }; + vtstack_push(&ren.font_stack, &v); + // x3,y3 + v = (struct v_text){ + .pos = { .x = gx+g->w, .y = gy }, + .uv = { .u = g->u+g->w, .v = g->v }, + }; + vtstack_push(&ren.font_stack, &v); + // x4,y4 + v = (struct v_text){ + .pos = { .x = gx, .y = gy }, + .uv = { .u = g->u, .v = g->v }, + }; + vtstack_push(&ren.font_stack, &v); + + // TODO: possible kerning needs to be applied here + gx += g->w; + if (cp == '\n') + gy += 20; // FIXME: encode and/or store line height + } + + // FIXME: here we are doing one draw call for string of text which is + // inefficient but is simpler and allows for individual scissors + glScissor(x, y, w, h); + ren_draw_font_stack(); + vtstack_clear(&ren.font_stack); + + return 0; +} + + +int ren_free(void) +{ + glUseProgram(0); + glBindBuffer(GL_ARRAY_BUFFER, 0); + glDeleteTextures(1, &ren.font_texture); + glDeleteBuffers(1, &ren.font_buffer); + SDL_GL_DeleteContext(ren.gl); + vtstack_free(&ren.font_stack); + vcstack_free(&ren.box_stack); + font_free(ren.font); + return 0; +} diff --git a/text_rendering/ren.h b/text_rendering/ren.h new file mode 100644 index 0000000..98d9e00 --- /dev/null +++ b/text_rendering/ren.h @@ -0,0 +1,48 @@ +#ifndef _RENDERER_H +#define _RENDERER_H + +#include + + +#define FONT_PATH "./monospace.ttf" +#define FONT_VERSHADER "./font_vertshader.glsl" +#define FONT_FRAGSHADER "./font_fragshader.glsl" +#define REN_VERTEX_IDX 0 +#define REN_UV_IDX 1 +#define REN_COLOR_IDX 2 +#define REN_SCREENSIZE_LOC 0 + + +typedef struct { + union { int x, u; }; + union { int y, v; }; +} vec2_i; + +typedef struct { + union { int x, r; }; + union { int y, g; }; + union { int z, b; }; + union { int w, a; }; +} vec4_i; + +// textured vertex +struct v_text { + vec2_i pos; + vec2_i uv; +}; + +// colored vertex +struct v_col { + vec2_i pos; + vec2_i col; +}; + + +int ren_init(SDL_Window *sdl_window); +int ren_free(void); +const char * ren_strerror(void); +int ren_update_viewport(int w, int h); +int ren_render_text(const char *str, int x, int y, int w, int h, int size); + + +#endif diff --git a/text_rendering/stack.h b/text_rendering/stack.h index 4074b1f..63cfd25 100644 --- a/text_rendering/stack.h +++ b/text_rendering/stack.h @@ -1,61 +1,72 @@ -#ifdef _STACK_TYPE -#ifdef _STACK_NAME +#ifndef _STACK_GENERIC_H +#define _STACK_GENERIC_H -#ifndef _STACK_REALLOC - #define _STACK_REALLOC(p, s) realloc(p,s) -#endif -#ifndef _STACK_MEMSET - #define _STACK_MEMSET(p, c, s) memset(p,c,s) -#endif -#ifndef _STACK_STEP - #define _STACK_STEP 8 -#endif -#ifndef _STACK_CAT - #define _STACK_CAT_I(a,b) a ## b - #define _STACK_CAT(a,b) _STACK_CAT_I(a,b) -#endif +#define STACK_STEP 8 // TODO: add a rolling hash -struct _STACK_NAME { - _STACK_TYPE *items; - int size, idx; -}; - - -int _STACK_CAT(stack_grow_,_STACK_NAME)(struct _STACK_NAME *stack, int step) -{ - if (!stack) - return -1; - stack->items = _STACK_REALLOC(stack->items, (stack->size+step)*sizeof(_STACK_TYPE)); - if(!stack->items) - return -1; - _STACK_MEMSET(&(stack->items[stack->size]), 0, step*sizeof(*(stack->items))); - stack->size += step; - return 0; -} +#define STACK_DECL(stackname, type) \ +struct stackname { \ + type *items; \ + int size, idx; \ +}; \ +\ +\ +struct stackname stackname##_init(void) { return (struct stackname){0}; } \ +\ +\ +int stackname##_grow(struct stackname *stack, int step) \ +{ \ + if (!stack) \ + return -1; \ + stack->items = realloc(stack->items, (stack->size+step)*sizeof(type)); \ + if(!stack->items) \ + return -1; \ + memset(&(stack->items[stack->size]), 0, step*sizeof(*(stack->items))); \ + stack->size += step; \ + return 0; \ +} \ +\ +\ +int stackname##_push(struct stackname *stack, type *e) \ +{ \ + if (!stack || !e) \ + return -1; \ + if (stack->idx >= stack->size) \ + if (stackname##_grow(stack, STACK_STEP)) \ + return -1; \ + stack->items[stack->idx++] = *e; \ + return 0; \ +} \ +\ +\ +type stackname##_pop(struct stackname *stack) \ +{ \ + if (!stack || stack->idx == 0 || stack->size == 0) \ + return (type){0}; \ + return stack->items[stack->idx--]; \ +} \ +\ +\ +int stackname##_clear(struct stackname *stack) \ +{ \ + if (!stack) \ + return -1; \ + stack->idx = 0; \ + return 0; \ +} \ +\ +\ +int stackname##_free(struct stackname *stack) \ +{ \ + if (stack) { \ + stackname##_clear(stack); \ + if (stack->items) \ + free(stack->items); \ + } \ + return 0; \ +} \ -int _STACK_CAT(stack_push_,_STACK_NAME)(struct _STACK_NAME *stack, _STACK_TYPE *e) -{ - if (!stack || !e) - return -1; - if (stack->idx >= stack->size) - if (_STACK_CAT(stack_grow_,_STACK_NAME)(stack, _STACK_STEP)) - return -1; - stack->items[stack->idx++] = *e; - return 0; -} - - -int _STACK_CAT(stack_clear_,_STACK_NAME)(struct _STACK_NAME *stack) -{ - if (!stack) - return -1; - stack->idx = 0; -} - - -#endif #endif diff --git a/text_rendering/test b/text_rendering/test index 69d543bd43aa2e3c016cc7cea74a64b23ef97dfb..5efa58ca92cf16907898e02d70db4f644ef83049 100755 GIT binary patch delta 121776 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 TZgw3`r=hRDthRH{NMip2d?kL3 delta 84267 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 o!(%Ye;q6Bz_kP3+5}R?WUT}Bh$