finished renaming things

This commit is contained in:
2026-01-09 06:03:59 +05:00
parent a60172ef9a
commit 4150a609e2
9 changed files with 67 additions and 67 deletions

View File

@@ -28,15 +28,15 @@ i32 main(i32 argc, char** argv) {
tim_frame(0, 0, ~0, ~0, CFR); tim_frame(0, 0, ~0, ~0, CFR);
// draw message // draw message
label(argv[1], A, 1, msg.width, msg.lines, CTXT); tim_label(argv[1], A, 1, msg.width, msg.lines, CTXT);
// draw 'yes' button, return 0 when clicked // draw 'yes' button, return 0 when clicked
if (button("[y] Yes", 2, ~1, A, A, CYES) || tim_is_key_press('y')) { if (tim_button("[y] Yes", 2, ~1, A, A, CYES) || tim_is_key_press('y')) {
exit(0); exit(0);
} }
// draw 'no' button, return 1 when clicked // draw 'no' button, return 1 when clicked
if (button("[n] No", ~2, ~1, A, A, CNO) || tim_is_key_press('n')) { if (tim_button("[n] No", ~2, ~1, A, A, CNO) || tim_is_key_press('n')) {
exit(1); exit(1);
} }

View File

@@ -5,8 +5,8 @@ i32 main(void) {
tim_scope(A, A, 24, 8) { // centered 24x8 scope tim_scope(A, A, 24, 8) { // centered 24x8 scope
u64 c = 0x0a060f; // three colors u64 c = 0x0a060f; // three colors
tim_frame(0, 0, ~0, ~0, c); // draw frame for scope tim_frame(0, 0, ~0, ~0, c); // draw frame for scope
label("Greetings!", A, 2, A, A, c); // label in top center tim_label("Greetings!", A, 2, A, A, c); // label in top center
if (button("OK", A, ~1, 8, A, c)) // button in bottom center if (tim_button("OK", A, ~1, 8, A, c)) // button in bottom center
return 0; // exit on button click return 0; // exit on button click
if (tim_is_key_press('q')) // ctrl-c is masked if (tim_is_key_press('q')) // ctrl-c is masked
return 0; // exit on 'q' press return 0; // exit on 'q' press

View File

@@ -102,14 +102,14 @@ static void menu(void) {
tim_scope(A, A, 20, 13) { tim_scope(A, A, 20, 13) {
char* lbl = snek.state == OVER ? "GAME OVER" : "SNEK - THE GAME"; char* lbl = snek.state == OVER ? "GAME OVER" : "SNEK - THE GAME";
char* btn = snek.state == PAUSE ? "Resume" : "Play"; char* btn = snek.state == PAUSE ? "Resume" : "Play";
label(lbl, A, 0, A, A, BTN); tim_label(lbl, A, 0, A, A, BTN);
if (button(btn, A, 2, 20, 5, BTN) || tim_is_key_press(TimKey_Enter)) { if (tim_button(btn, A, 2, 20, 5, BTN) || tim_is_key_press(TimKey_Enter)) {
if (snek.state != PAUSE) { if (snek.state != PAUSE) {
start(); start();
} }
snek.state = RUN; snek.state = RUN;
} }
if (button("Exit", A, 8, 20, 5, BTN) || tim_is_key_press('q') || tim_is_key_press(TimKey_Escape)) { if (tim_button("Exit", A, 8, 20, 5, BTN) || tim_is_key_press('q') || tim_is_key_press(TimKey_Escape)) {
exit(0); exit(0);
} }
} }

View File

@@ -78,7 +78,6 @@ enum {
TimKey_Tab = 9, TimKey_Tab = 9,
TimKey_Enter = 13, TimKey_Enter = 13,
TimKey_Escape = 27, TimKey_Escape = 27,
/* printable utf8 characters */
TimKey_Insert = -1, TimKey_Insert = -1,
TimKey_Delete = -2, TimKey_Delete = -2,
TimKey_Home = -3, TimKey_Home = -3,
@@ -90,6 +89,7 @@ enum {
TimKey_Left = -9, TimKey_Left = -9,
TimKey_Right = -10, TimKey_Right = -10,
}; };
// key code or 32-bit unicode char
typedef i32 TimKey; typedef i32 TimKey;
#pragma endregion #pragma endregion
@@ -222,36 +222,36 @@ void tim_frame(i32 x, i32 y, i32 w, i32 h, u64 color);
// text label // text label
// str : text - supports multiple lines // str : text - supports multiple lines
// color: background, text // color: background, text
void label(cstr s, i32 x, i32 y, i32 w, i32 h, u64 color); void tim_label(cstr s, i32 x, i32 y, i32 w, i32 h, u64 color);
// button - returns true on click // button - returns true on click
// color: frame, background, text // color: frame, background, text
bool button(cstr txt, i32 x, i32 y, i32 w, i32 h, u64 color); bool tim_button(cstr txt, i32 x, i32 y, i32 w, i32 h, u64 color);
// check box - returns true when clicked // check box - returns true when clicked
// txt : text label // txt : text label
// state: persistent state, 0 unchecked, -1 semi checked, !0: checked // state: persistent state, 0 unchecked, -1 semi checked, !0: checked
// color: check, background, text // color: check, background, text
bool check(cstr txt, i32* state, i32 x, i32 y, i32 w, u64 color); bool tim_checkbox(cstr txt, i32* state, i32 x, i32 y, i32 w, u64 color);
// radio button - return true when clicked // radio button - return true when clicked
// txt : text label // txt : text label
// state: persistent state, selected if *state == v // state: persistent state, selected if *state == v
// v : value // v : value
// color: radio, background, text // color: radio, background, text
bool radio(cstr txt, i32* state, i32 v, i32 x, i32 y, i32 w, u64 color); bool tim_radiobutton(cstr txt, i32* state, i32 v, i32 x, i32 y, i32 w, u64 color);
/// text edit - value in state /// text edit - value in state
/// @param e persistent edit state, use TimEditState_init() to create new state /// @param e persistent edit state, use TimEditState_init() to create new state
/// @param color frame, background, text /// @param color frame, background, text
/// @return key id or 0 /// @return key id or 0
i32 edit(TimEditState* e, i32 x, i32 y, i32 w, u64 color); i32 tim_edit(TimEditState* e, i32 x, i32 y, i32 w, u64 color);
void TimEditState_init(TimEditState* e, i32 capacity, cstr initial_content); void TimEditState_init(TimEditState* e, i32 capacity, cstr initial_content);
void edit_insert(TimEditState* e, cstr s); void TimEditState_insert(TimEditState* e, cstr s);
void edit_delete(TimEditState* e); void TimEditState_delete(TimEditState* e);
#pragma endregion #pragma endregion

View File

@@ -11,7 +11,7 @@ void TimEditState_init(TimEditState* e, i32 capacity, cstr initial_content){
e->s[byte_len] = 0; e->s[byte_len] = 0;
} }
void edit_insert(TimEditState* e, cstr s) { void TimEditState_insert(TimEditState* e, cstr s) {
i32 dst_size = tim_ztrlen(e->s); i32 dst_size = tim_ztrlen(e->s);
i32 src_size = tim_ztrlen(s); i32 src_size = tim_ztrlen(s);
if (dst_size + src_size < e->capacity) { if (dst_size + src_size < e->capacity) {
@@ -25,7 +25,7 @@ void edit_insert(TimEditState* e, cstr s) {
} }
} }
void edit_delete(TimEditState* e) { void TimEditState_delete(TimEditState* e) {
i32 size = tim_ztrlen(e->s); i32 size = tim_ztrlen(e->s);
i32 cur = tim_utf8_pos(e->s, e->cursor); i32 cur = tim_utf8_pos(e->s, e->cursor);
i32 len = tim_utf8_pos(e->s + cur, 1); i32 len = tim_utf8_pos(e->s + cur, 1);
@@ -55,12 +55,12 @@ static i32 edit_event(TimEditState* e, TimRect r) {
tim->focus = 0; // release focus tim->focus = 0; // release focus
break; break;
case TimKey_Delete: case TimKey_Delete:
edit_delete(e); TimEditState_delete(e);
break; break;
case TimKey_Backspace: case TimKey_Backspace:
if (e->cursor > 0) { if (e->cursor > 0) {
e->cursor -= 1; e->cursor -= 1;
edit_delete(e); TimEditState_delete(e);
} }
break; break;
case TimKey_Left: case TimKey_Left:
@@ -77,7 +77,7 @@ static i32 edit_event(TimEditState* e, TimRect r) {
break; break;
default: default:
if (tim->event.key >= ' ') { if (tim->event.key >= ' ') {
edit_insert(e, tim->event.s); TimEditState_insert(e, tim->event.s);
} }
break; break;
} }
@@ -85,7 +85,7 @@ static i32 edit_event(TimEditState* e, TimRect r) {
return tim->event.key; return tim->event.key;
} }
i32 edit(TimEditState* e, i32 x, i32 y, i32 w, u64 color) { i32 tim_edit(TimEditState* e, i32 x, i32 y, i32 w, u64 color) {
TimRect r = tim_scope_rect_to_absolute(x, y, w, 3); TimRect r = tim_scope_rect_to_absolute(x, y, w, 3);
if (tim->event.type == TimEvent_Draw) { if (tim->event.type == TimEvent_Draw) {

View File

@@ -68,7 +68,7 @@ bool parse_input(event* restrict e, i32 n) {
if (n == 1 || s[0] != 27) { if (n == 1 || s[0] != 27) {
// regular key press // regular key press
e->type = TimEvent_Key; e->type = TimEvent_Key;
e->key = s[0] == 127 ? TimKey_Backspace : tim_utf8_to_i32(s); e->key = s[0] == 127 ? TimKey_Backspace : tim_utf8_to_i32(s);
return true; return true;
} }
@@ -110,7 +110,7 @@ bool parse_input(event* restrict e, i32 n) {
for (i32 i = 0; i < (i32)ARRAY_SIZE(key_table); i++) { for (i32 i = 0; i < (i32)ARRAY_SIZE(key_table); i++) {
if (!memcmp(s + 1, key_table[i].s, n - 1)) { if (!memcmp(s + 1, key_table[i].s, n - 1)) {
e->type = TimEvent_Key; e->type = TimEvent_Key;
e->key = key_table[i].k; e->key = key_table[i].k;
return true; return true;
} }
} }

View File

@@ -7,7 +7,7 @@ void tim_frame(i32 x, i32 y, i32 w, i32 h, u64 color) {
} }
} }
void label(cstr s, i32 x, i32 y, i32 w, i32 h, u64 color) { void tim_label(cstr s, i32 x, i32 y, i32 w, i32 h, u64 color) {
if (tim->event.type == TimEvent_Draw) { if (tim->event.type == TimEvent_Draw) {
TimText t = tim_scan_str(s); TimText t = tim_scan_str(s);
w = (w == A) ? t.width : w; w = (w == A) ? t.width : w;
@@ -22,7 +22,7 @@ void label(cstr s, i32 x, i32 y, i32 w, i32 h, u64 color) {
} }
} }
bool button(cstr txt, i32 x, i32 y, i32 w, i32 h, u64 color) { bool tim_button(cstr txt, i32 x, i32 y, i32 w, i32 h, u64 color) {
i32 tw = tim_utf8_len(txt); i32 tw = tim_utf8_len(txt);
w = (w == A) ? (tw + 4) : w; w = (w == A) ? (tw + 4) : w;
h = (h == A) ? 3 : h; h = (h == A) ? 3 : h;
@@ -35,7 +35,7 @@ bool button(cstr txt, i32 x, i32 y, i32 w, i32 h, u64 color) {
return tim_is_mouse_click_over(r); return tim_is_mouse_click_over(r);
} }
bool check(cstr txt, i32* state, i32 x, i32 y, i32 w, u64 color) { bool tim_checkbox(cstr txt, i32* state, i32 x, i32 y, i32 w, u64 color) {
w = (w == A) ? tim_utf8_len(txt) + 4 : w; w = (w == A) ? tim_utf8_len(txt) + 4 : w;
TimRect r = tim_scope_rect_to_absolute(x, y, w, 1); TimRect r = tim_scope_rect_to_absolute(x, y, w, 1);
@@ -52,7 +52,7 @@ bool check(cstr txt, i32* state, i32 x, i32 y, i32 w, u64 color) {
} }
bool radio(cstr txt, i32* state, i32 v, i32 x, i32 y, i32 w, u64 color) { bool tim_radiobutton(cstr txt, i32* state, i32 v, i32 x, i32 y, i32 w, u64 color) {
w = (w == A) ? tim_utf8_len(txt) + 4 : w; w = (w == A) ? tim_utf8_len(txt) + 4 : w;
TimRect r = tim_scope_rect_to_absolute(x, y, w, 1); TimRect r = tim_scope_rect_to_absolute(x, y, w, 1);

View File

@@ -149,7 +149,7 @@ void tim_read_event(i32 timeout_ms) {
} }
tim_update_screen_size(); // workaround, see WINDOW_BUFFER_SIZE_EVENT tim_update_screen_size(); // workaround, see WINDOW_BUFFER_SIZE_EVENT
e->type = TimEvent_Mouse; e->type = TimEvent_Mouse;
e->key = TimKey_MouseButtonLeft; e->key = TimKey_MouseButtonLeft;
e->x = rec.Event.MouseEvent.dwMousePosition.X - tim->window.Left; e->x = rec.Event.MouseEvent.dwMousePosition.X - tim->window.Left;
e->y = rec.Event.MouseEvent.dwMousePosition.Y - tim->window.Top; e->y = rec.Event.MouseEvent.dwMousePosition.Y - tim->window.Top;
return; return;

View File

@@ -10,55 +10,55 @@ static inline void test_screen(TimEvent* e) {
me = (e->type == MOUSE_EVENT) ? *e : me; me = (e->type == MOUSE_EVENT) ? *e : me;
// positioning // positioning
label("+", 0, 0, A, A, 0xf); tim_label("+", 0, 0, A, A, 0xf);
label("+", ~0, 0, A, A, 0xf); tim_label("+", ~0, 0, A, A, 0xf);
label("+", 0, ~0, A, A, 0xf); tim_label("+", 0, ~0, A, A, 0xf);
label("+", ~0, ~0, A, A, 0xf); tim_label("+", ~0, ~0, A, A, 0xf);
label("+", A, A, A, A, 0xf); tim_label("+", A, A, A, A, 0xf);
label("-", 0, A, A, A, 0xf); tim_label("-", 0, A, A, A, 0xf);
label("-", ~0, A, A, A, 0xf); tim_label("-", ~0, A, A, A, 0xf);
label("|", A, 0, A, A, 0xf); tim_label("|", A, 0, A, A, 0xf);
label("|", A, ~0, A, A, 0xf); tim_label("|", A, ~0, A, A, 0xf);
// some information // some information
sprintf(buf, "screen: %dx%d", tim->w, tim->h); sprintf(buf, "screen: %dx%d", tim->w, tim->h);
label(buf, 2, 0, A, A, 0xf); tim_label(buf, 2, 0, A, A, 0xf);
sprintf(buf, "frame : [%c] %d", ": "[tim->frame & 1], tim->frame); sprintf(buf, "frame : [%c] %d", ": "[tim->frame & 1], tim->frame);
label(buf, 2, 1, A, A, 0xf); tim_label(buf, 2, 1, A, A, 0xf);
sprintf(buf, "key : [%d] %s", ke.key, ke.s + (ke.key < 32)); sprintf(buf, "key : [%d] %s", ke.key, ke.s + (ke.key < 32));
label(buf, 2, 2, A, A, 0xf); tim_label(buf, 2, 2, A, A, 0xf);
sprintf(buf, "mouse : [%d] %d:%d", me.key, me.x, me.y); sprintf(buf, "mouse : [%d] %d:%d", me.key, me.x, me.y);
label(buf, 2, 3, A, A, 0xf); tim_label(buf, 2, 3, A, A, 0xf);
sprintf(buf, "input : %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx", sprintf(buf, "input : %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx %02hhx",
e->s[0], e->s[1], e->s[2], e->s[3], e->s[4], e->s[5], e->s[6], e->s[7]); e->s[0], e->s[1], e->s[2], e->s[3], e->s[4], e->s[5], e->s[6], e->s[7]);
label(buf, 2, 4, A, A, 0xf); tim_label(buf, 2, 4, A, A, 0xf);
// lower right // lower right
render_us += tim->render_us; render_us += tim->render_us;
sprintf(buf, "%d µs (Ø %d µs)", tim->render_us, render_us / MAX(tim->frame, 1)); sprintf(buf, "%d µs (Ø %d µs)", tim->render_us, render_us / MAX(tim->frame, 1));
label(buf, ~2, ~2, A, A, 0xf); tim_label(buf, ~2, ~2, A, A, 0xf);
sprintf(buf, "%d cells (%.0f %%)", tim->w * tim->h, 100.0 * tim->w * tim->h / TIM_MAX_CELLS); sprintf(buf, "%d cells (%.0f %%)", tim->w * tim->h, 100.0 * tim->w * tim->h / TIM_MAX_CELLS);
label(buf, ~2, ~1, A, A, 0xf); tim_label(buf, ~2, ~1, A, A, 0xf);
sprintf(buf, "%d bytes (%.0f %%)", tim->buf_size, 100.0 * tim->buf_size / TIM_MAX_BUF); sprintf(buf, "%d bytes (%.0f %%)", tim->buf_size, 100.0 * tim->buf_size / TIM_MAX_BUF);
label(buf, ~2, ~0, A, A, 0xf); tim_label(buf, ~2, ~0, A, A, 0xf);
// multi line label // multi line label
label("multi\nliñe\nlabël", 24, 1, A, A, 0xf); tim_label("multi\nliñe\nlabël", 24, 1, A, A, 0xf);
// colors // colors
tim_scope(1, 5, 16, 5) { tim_scope(1, 5, 16, 5) {
tim_frame(0, 0, ~0, ~0, 0xf); tim_frame(0, 0, ~0, ~0, 0xf);
label(" Red ", 1, 1, 7, A, 0x0900); tim_label(" Red ", 1, 1, 7, A, 0x0900);
label(" ", 8, 1, 7, A, 0xc400); tim_label(" ", 8, 1, 7, A, 0xc400);
label(" Green ", 1, 2, 7, A, 0x0a00); tim_label(" Green ", 1, 2, 7, A, 0x0a00);
label(" ", 8, 2, 7, A, 0x2e00); tim_label(" ", 8, 2, 7, A, 0x2e00);
label(" Blue ", 1, 3, 7, A, 0x0c00); tim_label(" Blue ", 1, 3, 7, A, 0x0c00);
label(" ", 8, 3, 7, A, 0x1500); tim_label(" ", 8, 3, 7, A, 0x1500);
} }
// button // button
static u64 bc = 0x100; static u64 bc = 0x100;
if (button("Click Me", 17, 5, 16, 5, bc)) { if (tim_button("Click Me", 17, 5, 16, 5, bc)) {
bc = (bc + 0x100) & 0xff00; bc = (bc + 0x100) & 0xff00;
} }
@@ -67,23 +67,23 @@ static inline void test_screen(TimEvent* e) {
static TimEditState ed2; static TimEditState ed2;
TimEditState_init(&ed1, 32, "Edit 1"); TimEditState_init(&ed1, 32, "Edit 1");
TimEditState_init(&ed2, 32, ""); TimEditState_init(&ed2, 32, "");
edit(&ed1, 1, 10, 32, 0xff00ff); tim_edit(&ed1, 1, 10, 32, 0xff00ff);
sprintf(buf, "cursor: %d length: %d", ed1.cursor, ed1.length); sprintf(buf, "cursor: %d length: %d", ed1.cursor, ed1.length);
label(buf, 2, 13, A, A, 0xf); tim_label(buf, 2, 13, A, A, 0xf);
edit(&ed2, 1, 14, 32, 0xff00ff); tim_edit(&ed2, 1, 14, 32, 0xff00ff);
label(ed2.s, 2, 17, A, A, 0xf); tim_label(ed2.s, 2, 17, A, A, 0xf);
// checkbox // checkbox
static i32 chk[2] = {-1, 1}; static i32 chk[2] = {-1, 1};
check("Check 1", &chk[0], 1, 18, A, 0xa000f); tim_checkbox("Check 1", &chk[0], 1, 18, A, 0xa000f);
check("Check 2", &chk[1], 14, 18, A, 0xa000f); tim_checkbox("Check 2", &chk[1], 14, 18, A, 0xa000f);
// radiobox // radiobox
static i32 rad = 0; static i32 rad = 0;
radio("Radio 1", &rad, 1, 1, 19, A, 0xa000f); tim_radiobutton("Radio 1", &rad, 1, 1, 19, A, 0xa000f);
radio("Radio 2", &rad, 2, 14, 19, A, 0xa000f); tim_radiobutton("Radio 2", &rad, 2, 14, 19, A, 0xa000f);
radio("Radio 3", &rad, 3, 1, 20, A, 0xa000f); tim_radiobutton("Radio 3", &rad, 3, 1, 20, A, 0xa000f);
radio("Radio 4", &rad, 4, 14, 20, A, 0xa000f); tim_radiobutton("Radio 4", &rad, 4, 14, 20, A, 0xa000f);
// scope nesting // scope nesting
tim_scope(~1, 1, 20, 10) { tim_scope(~1, 1, 20, 10) {
@@ -104,9 +104,9 @@ static inline void test_screen(TimEvent* e) {
// funny characters // funny characters
tim_scope(~1, ~3, 11, 5) { tim_scope(~1, ~3, 11, 5) {
tim_frame(0, 0, ~0, ~0, 0xf); tim_frame(0, 0, ~0, ~0, 0xf);
label("123456789", 1, 1, 9, A, 0x0f05); tim_label("123456789", 1, 1, 9, A, 0x0f05);
label("$£ह€𐍈6789", 1, 2, A, A, 0x0f05); tim_label("$£ह€𐍈6789", 1, 2, A, A, 0x0f05);
label("圍棋56789", 1, 3, A, A, 0x0f05); tim_label("圍棋56789", 1, 3, A, A, 0x0f05);
} }
} }