summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorMitya Selivanov <automainint@guattari.tech>2024-08-10 16:56:58 +0200
committerMitya Selivanov <automainint@guattari.tech>2024-08-10 16:56:58 +0200
commitbb0a5b8e004b03c487f4fb9ebba96ab56d968d4e (patch)
treec24e7235b9ce0f6088a0982aad76966d06e7b550 /examples
parent495a816647304d5858347b3c030a6ffab0262dc4 (diff)
downloadreduced_system_layer-bb0a5b8e004b03c487f4fb9ebba96ab56d968d4e.zip
Update bit font
Diffstat (limited to 'examples')
-rw-r--r--examples/bitfont.inl.c2
-rwxr-xr-xexamples/ui.c114
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 <math.h>
#include <assert.h>
-#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};