From bb0a5b8e004b03c487f4fb9ebba96ab56d968d4e Mon Sep 17 00:00:00 2001 From: Mitya Selivanov Date: Sat, 10 Aug 2024 16:56:58 +0200 Subject: Update bit font --- examples/bitfont.inl.c | 2 +- examples/ui.c | 114 ++++++++++++++++++++++--------------------------- 2 files changed, 52 insertions(+), 64 deletions(-) diff --git a/examples/bitfont.inl.c b/examples/bitfont.inl.c index 860cbbe..5b0f0eb 100644 --- a/examples/bitfont.inl.c +++ b/examples/bitfont.inl.c @@ -1 +1 @@ -0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x5501011110000000, 0x63b65f55f5000000, 0x9536564a4f2526ba, 0x1211111200000117, 0x2000002772122222, 0x700012000000027, 0x1122244010000000, 0x7007222300755570, 0x7550074247007124, 0x7571600347170044, 0x75757002224700, 0x2000100100034757, 0x7070004212401200, 0x202452012421000, 0x97099f99661dbd96, 0x9997069119607997, 0x11171f0f1171f079, 0x70999f99069d1960, 0x3590254447072222, 0x9fff907111110995, 0x6999960999db909, 0x9786999960117997, 0x2227069861609979, 0x2755550699999022, 0x9099669906ff9990, 0x1130f1248f022469, 0x2222344222113111, 0xf000000000005232, 0x10069f8600000021, 0x9e80069196007997, 0x227260061f9600e9, 0x99711068e99600, 0x5501223020072302, 0xfff9002111110553, 0x699960099997009, 0x5008e99e00179970, 0x2270068616001113, 0x2255500e99990022, 0x99699006ff9900, 0x2240f168f0012699, 0x2422111111114221, 0x5a12, +0x1041040000000000, 0x14500100, 0x38538429f28a7ca0, 0x621421f085084394, 0x10472450c614, 0x420410410420000, 0x233f312042082082, 0x411f10400001, 0x1f0000010800000, 0x4100040000000000, 0xc51451c004108208, 0x1c00070820830001, 0x71021070001c1084, 0x470001041c514000, 0x1c51c11800031070, 0x51c0002082107000, 0x31071470001c51c, 0x800000400010000, 0x102042100042000, 0x20400003c03c000, 0x20021050800421, 0xf24918e05955944e, 0x801c924724700924, 0x2492470062410491, 0xf00f0411c13c01c9, 0x4d04918004104704, 0x1c024924f2490062, 0x5104107007082082, 0x410092450c524008, 0x4557db4401c10410, 0x91804516554d1011, 0x411c924700624924, 0x2472062492491800, 0x62481811802491c9, 0x4924010410411f00, 0x10a4514510062492, 0x429100a7d5551440, 0x108429144045128, 0x410c03c108420f0, 0x41020820410c1041, 0x112840c20820820c, 0x3c00000000000000, 0xf206000000000081, 0x1c924704000624, 0x24e2000062412460, 0x604f246000389, 0x892460000821c218, 0x2491c10401883, 0x20c0080007083002, 0x4100514314500108, 0x55554f0000810410, 0x60002492491c0015, 0x472491c000624924, 0x14000838924e0000, 0x6206046000041043, 0x490000820821c000, 0x10a45144000e2492, 0xa44000a7d5451000, 0x108429100044a10, 0x821003c11883c00, 0x1041041041102081, 0x66604208408204, 0x0, 0x1, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, diff --git a/examples/ui.c b/examples/ui.c index b66521c..32d694e 100755 --- a/examples/ui.c +++ b/examples/ui.c @@ -172,7 +172,7 @@ Platform platform = {0}; #include #include -#define CHAR_NUM_BITS_X 4 +#define CHAR_NUM_BITS_X 6 #define CHAR_NUM_BITS_Y 7 u64 bitfont[] = { @@ -198,6 +198,11 @@ void print_text(u32 color, i32 x, i32 y, f64 width, f64 height, i64 num_chars, c continue; } + if (text[n] <= ' ') { + dx += width; + continue; + } + i64 x0 = (i64) floor(dx + .5); i64 y0 = (i64) floor(dy + .5); i64 y1 = (i64) floor(dy + height + .5); @@ -213,7 +218,7 @@ void print_text(u32 color, i32 x, i32 y, f64 width, f64 height, i64 num_chars, c for (i64 j = y0; j < y1; ++j) { i64 char_y = ((j - y0) * CHAR_NUM_BITS_Y) / (y1 - y0); - i64 bit_index = text[n] * CHAR_NUM_BITS_X * CHAR_NUM_BITS_Y + char_y * CHAR_NUM_BITS_X + char_x; + i64 bit_index = (text[n] - 32) * CHAR_NUM_BITS_X * CHAR_NUM_BITS_Y + char_y * CHAR_NUM_BITS_X + char_x; i64 qword_index = bit_index / 64; if (qword_index >= (i64) (sizeof bitfont / sizeof *bitfont)) continue; @@ -229,7 +234,7 @@ void print_text(u32 color, i32 x, i32 y, f64 width, f64 height, i64 num_chars, c if (empty_col && char_x + 1 < CHAR_NUM_BITS_X) for (i64 j = y; j < y1; ++j) { i64 char_y = ((j - y) * CHAR_NUM_BITS_Y) / (y1 - y); - i64 bit_index = text[n] * CHAR_NUM_BITS_X * CHAR_NUM_BITS_Y + char_y * CHAR_NUM_BITS_X + char_x + 1; + i64 bit_index = (text[n] - 32) * CHAR_NUM_BITS_X * CHAR_NUM_BITS_Y + char_y * CHAR_NUM_BITS_X + char_x + 1; i64 qword_index = bit_index / 64; if (qword_index >= (i64) (sizeof bitfont / sizeof *bitfont)) continue; @@ -242,71 +247,54 @@ void print_text(u32 color, i32 x, i32 y, f64 width, f64 height, i64 num_chars, c break; } - if (text[n] == ' ') - dx += width; - else - dx += num_cols + width / CHAR_NUM_BITS_X; + dx += num_cols + width / CHAR_NUM_BITS_X; } } i32 main(i32 argc, c8 **argv) { c8 static data[] = - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " " - " ! ' ' $$ % && ' ( ) * / " - " ! ' ' # # $$ $% % & & ' ( ) *** / " - " ! ####$$ % && ( ) *** + / " - " ! # # $$ %%%%&& ( ) * +++ --- / " - " # # $ $ % & & ( ) + / " - " ! ####$$ $ % %& & ( ) , . / " - " # # $$ % &&& ( ) , / " - " ? " - "000 11 222 333 4 4 555 66 777 888 999 < > ? ? " - "0 0 1 2 3 4 4 5 6 7 8 8 9 9 : ; < === > ? " - "0 0 1 2 3 444 555 666 7 888 999 < > ? " - "0 0 1 2 3 4 5 6 6 7 8 8 9 < === > " - "000 111 222 333 4 55 666 7 888 99 : ; < > ? " - " ; " - " @@ AA BBB CC DDD EEEEFFFF GG H HIII JJJ K KL M MN N OO " - "@ @A AB BC CD DE F G GH H I J K K L MMMMNN NO O" - "@ @@A ABBB C D DEEE FFF G HHHH I J KK L MMMMN NNO O" - "@@ @AAAAB BC D DE F G GGH H I J K K L MMMMN NO O" - "@ @@A AB BC CD DE F G GH H I J J K KL M MN NO O" - "@ A ABBB CC DDD EEEEF GG H HIII J K KLLL M MN N OO " - " @@ " - "PPP QQ RRR SS TTT U UV V W WX XY YZZZZ[[ x ]] ^ " - "P PQ QR RS T U UV V W WX XY Y Z[ x ] ^ ^ " - "P PQ QR R SS T U UV V W W XX YY Z [ x ] " - "PPP Q QRRR S T U UV V WWWW XX Y Z [ x ] " - "P Q QR RS S T U UVVV WWWWX X Y Z [ x ] " - "P QQ R R SS T UU V WW X X Y ZZZZ[ x ] " - " Q [[ x ]] ____" - "` l " - " ` aa b cc d ee ff gg h i j k k l m mnnn oo " - " abbb c c ddde e f g gh k k l mmmmn no o" - " aaaab bc d deeeefff g ghhh ii jj kk l mmmmn no o" - " a ab bc cd de f gggh h i j k k l mmmmn no o" - " aa bbb cc ddd ee f gh hiii j k k l m mn n oo " - " gg j " - " { | } ~ ~ " - "ppp qqqr r ss ttt u uv v w wx xy yzzzz { | } ~ ~ " - "p pq qrr s t u uv v w wx xy y z { | } " - "p pq qr ss t u uv v wwww xx yy zz { | } " - "ppp qqqr s t u u v wwwwx x y z { | } " - "p qr ss t uuu v ww x xy zzzz { | } " - " { | } " + " ! ' ' $ % && ' ( ) * * / " + " ! ' ' # # $$$ % % & & ' ( ) ** + / " + " ! ##### $ $ % && ( ) ****** + / " + " ! # # $$$ %%%%% && ( ) ** +++++ ----- / " + " # # $ $ % & & ( ) * * + / " + " ! ##### $$$ % % & & ( ) + , . / " + " # # $ % &&& ( ) , / " + " ? " + "000 11 222 333 4 4 555 66 777 888 999 < > ? ? " + "0 0 1 2 3 4 4 5 6 7 8 8 9 9 : ; < ==== > ? " + "0 0 1 2 3 444 555 666 7 888 999 < > ? " + "0 0 1 2 3 4 5 6 6 7 8 8 9 < ==== > " + "000 111 222 333 4 55 666 7 888 99 : ; < > ? " + " ; " + " @@@ AA BBB CC DDD EEEE FFFF GG H H III JJJ K K L M M N N OO " + "@ @ A A B B C C D D E F G G H H I J K K L MM MM NN N O O " + "@ @@ A A BBB C D D EEE FFF G HHHH I J KK L MMMMM N N N O O " + "@ @ @ AAAA B B C D D E F G GG H H I J K K L M M M N NN O O " + "@ @@ A A B B C C D D E F G G H H I J J K K L M M N N O O " + "@ A A BBB CC DDD EEEE F GG H H III J K K LLL M M N N OO " + " @@@ " + "PPP QQ RRR SS TTTTT U U V V W W X X Y Y ZZZZ [[ x ]] ^ " + "P P Q Q R R S T U U V V W W X X Y Y Z [ x ] ^ ^ " + "P P Q Q R R SS T U U V V W W W X Y Y Z [ x ] ^ ^ " + "PPP Q Q RRR S T U U V V W W W X X Y Z [ x ] " + "P Q Q R R S S T U U V V WWWWW X X Y Z [ x ] " + "P QQ R R SS T UU V W W X X Y ZZZZ [ x ] " + " Q [[ x ]] ____ " + "` l " + " ` aa b cc d ee ff gg h i j k k l mmmm nnn oo " + " a bbb c c ddd e e f g g h k k l m m m n n o o " + " aaaa b b c d d eeee fff g g hhh ii jj kk l m m m n n o o " + " a a b b c c d d e f ggg h h i j k k l m m m n n o o " + " aa bbb cc ddd ee f g h h iii j k k l m m m n n oo " + " gg j " + " { | } ~~ ~ " + "ppp qqq r r ss ttt u u v v w w x x y y zzzz { | } ~ ~~ " + "p p q q rr s t u u v v w w x x y y z { | } " + "p p q q r ss t u u v v w w w x y zz { | } " + "ppp qqq r s t u u v v wwwww x x y z { | } " + "p q r ss t uuu v w w x x y zzzz { | } " + " { | } " ; u64 bits[(16 * 8 * CHAR_NUM_BITS_X * CHAR_NUM_BITS_Y) / 64] = {0}; -- cgit v1.2.3