diff options
| -rw-r--r-- | main.c | 21 | ||||
| -rw-r--r-- | renderer.c | 47 | ||||
| -rw-r--r-- | renderer.h | 2 |
3 files changed, 32 insertions, 38 deletions
@@ -36,8 +36,6 @@ static const mu_Color COLOR_SCROLLTHUMB = WHITE; /* Function declarations. */ static void set_style(mu_Context *ctx); -static int text_width(mu_Font font, const char *text, int len); -static int text_height(mu_Font font); static void main_loop(mu_Context *ctx, UI *ui); static void process_frame(mu_Context *ctx, UI *ui); static void main_window(mu_Context *ctx, UI *ui); @@ -47,14 +45,10 @@ static void main_window(mu_Context *ctx, UI *ui); int main(void) { - /* Init renderer. */ - r_init(); - /* Init microui. */ static mu_Context ctx; mu_init(&ctx); - ctx.text_width = text_width; - ctx.text_height = text_height; + r_init(&ctx); set_style(&ctx); /* Init data structures. */ @@ -84,19 +78,6 @@ set_style(mu_Context *ctx) { ctx->style->colors[MU_COLOR_SCROLLTHUMB] = COLOR_SCROLLTHUMB; } -static int -text_width(mu_Font font, const char *text, int len) { - if (len < 0) { - len = strlen(text); - } - return r_get_text_width(text, len); -} - -static int -text_height(mu_Font font) { - return r_get_text_height(); -} - static void main_loop(mu_Context *ctx, UI *ui) { for (;;) { @@ -12,6 +12,10 @@ enum window { HEIGHT = 600, }; +enum text { + TEXT_HEIGHT = 18, +}; + static const mu_Color COLOR_BG = {0, 0, 0, 255}; static const char button_map[256] = { @@ -42,6 +46,27 @@ static int buf_idx; static SDL_Window *window; +static int text_width(mu_Font font, const char *text, int len) { + if (len < 0) { + len = strlen(text); + } + + int res = 0; + for (const char *p = text; *p && len--; p++) { + if ((*p & 0xc0) == 0x80) { continue; } + int chr = mu_min((unsigned char) *p, 127); + res += atlas[ATLAS_FONT + chr].w; + } + return res; +} + + +static int +text_height(mu_Font font) { + return TEXT_HEIGHT; +} + + static void flush(void) { if (buf_idx == 0) { return; } @@ -211,7 +236,7 @@ static void render_command(mu_Command *cmd) { } -void r_init(void) { +void r_init(mu_Context *ctx) { /* init SDL window */ SDL_Init(SDL_INIT_EVERYTHING); window = SDL_CreateWindow( @@ -239,6 +264,10 @@ void r_init(void) { glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); assert(glGetError() == 0); + + /* init microui */ + ctx->text_width = text_width; + ctx->text_height = text_height; } @@ -266,22 +295,6 @@ void r_present(void) { } -int r_get_text_width(const char *text, int len) { - int res = 0; - for (const char *p = text; *p && len--; p++) { - if ((*p & 0xc0) == 0x80) { continue; } - int chr = mu_min((unsigned char) *p, 127); - res += atlas[ATLAS_FONT + chr].w; - } - return res; -} - - -int r_get_text_height(void) { - return 18; -} - - void r_get_window_size(int *w, int *h) { SDL_GetWindowSize(window, w, h); } @@ -3,7 +3,7 @@ #include "microui.h" -void r_init(void); +void r_init(mu_Context *ctx); void r_handle_input(mu_Context *ctx); void r_render(mu_Context *ctx); void r_present(void); |