You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ugui/text_rendering/main.c

85 lines
1.8 KiB

#include <SDL2/SDL.h>
#include <SDL2/SDL_events.h>
2 years ago
#include <SDL2/SDL_video.h>
2 years ago
#include <stdlib.h>
#include <stdio.h>
2 years ago
#include "ren.h"
2 years ago
#include "util.h"
2 years ago
2 years ago
//const char *str1 = "Ciao Mamma!\nprova: òçà°ù§|¬³¼$£ì\t";
const char *str1 = "ciao\tmamma";
2 years ago
const char *str2 = "gmt";
2 years ago
SDL_Window *win;
void draw(void)
{
static unsigned int frame = 0;
printf("frame: %d\n", frame++);
2 years ago
ren_clear();
ren_render_box(10, 10, 400, 50, 0xffff0000);
if (ren_render_text(str1, 10, 10, 400, 50, 20))
printf("text: %s\n", ren_strerror());
2 years ago
int w, h;
ren_get_text_box(str2, &w, &h, 40);
printf("box for: %s -> (%d, %d)\n", str2, w, h);
ren_render_box(200, 40, w, h, 0xffff0000);
ren_render_text(str2, 200, 40, 300, 300, 40);
2 years ago
SDL_GL_SwapWindow(win);
}
2 years ago
int main(void)
{
2 years ago
SDL_Init(SDL_INIT_VIDEO | SDL_INIT_EVENTS);
SDL_SetHint(SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR, "0");
SDL_SetHint(SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH, "1");
2 years ago
SDL_SetHint(SDL_HINT_VIDEO_HIGHDPI_DISABLED, "0");
2 years ago
2 years ago
win = SDL_CreateWindow(
2 years ago
"test render",
SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,
500,
500,
2 years ago
SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE | SDL_WINDOW_ALLOW_HIGHDPI);
2 years ago
if (ren_init(win)) {
printf("renderer init error: %s\n", ren_strerror());
return 1;
2 years ago
}
2 years ago
2 years ago
int w, h;
const char *s = "ciao mamma";
ren_get_text_box(s, &w, &h, 12);
printf("box for: %s -> (%d, %d)\n", s, w, h);
SDL_Event e;
while(1) {
SDL_WaitEvent(&e);
if (e.type == SDL_QUIT)
break;
2 years ago
if (e.type == SDL_WINDOWEVENT) {
switch (e.window.event) {
case SDL_WINDOWEVENT_RESIZED:
case SDL_WINDOWEVENT_SIZE_CHANGED:
ren_update_viewport(e.window.data1, e.window.data2);
2 years ago
draw();
2 years ago
break;
2 years ago
case SDL_WINDOWEVENT_EXPOSED:
2 years ago
draw();
2 years ago
break;
default: break;
}
}
}
2 years ago
2 years ago
ren_free();
SDL_DestroyWindow(win);
SDL_Quit();
2 years ago
return 0;
}