From abef6da56913f1c55528103e60a50451a39628b1 Mon Sep 17 00:00:00 2001 From: WlodekM Date: Sun, 16 Jun 2024 10:35:45 +0300 Subject: initial commit --- misc/bitmap_font_gen.cs | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 misc/bitmap_font_gen.cs (limited to 'misc/bitmap_font_gen.cs') diff --git a/misc/bitmap_font_gen.cs b/misc/bitmap_font_gen.cs new file mode 100644 index 0000000..13b0713 --- /dev/null +++ b/misc/bitmap_font_gen.cs @@ -0,0 +1,41 @@ +void Main() +{ + Console.WriteLine("static cc_uint8 font_bitmap[][8] = {"); + using (Bitmap bmp = new Bitmap(@"C:\classicube-dev\default.png")) + { + for (int CY = 0; CY < 16; CY++) + for (int CX = 0; CX < 16; CX++) + DecodeTile(bmp, CX, CY); + } + Console.WriteLine("}"); +} + +static void DecodeTile(Bitmap bmp, int cx, int cy) { + int c = (cy << 4) | cx; + if (c <= 32 || c >= 127) return; + + int X = cx * 8, Y = cy * 8; + + Console.Write("\t{ "); + + for (int y = Y; y < Y + 8; y++) { + uint mask = 0; + int shift = 0; + + for (int x = X; x < X + 8; x++, shift++) { + Color P = bmp.GetPixel(x, y); + + if (P.A == 0) { + mask |= 0u << shift; + } else if (P.R == 255 && P.G == 255 && P.B == 255 && P.A == 255) { + mask |= 1u << shift; + } else { + throw new InvalidOperationException("unsupported colour" + P); + } + } + + string suffix = y == Y + 7 ? " " : ","; + Console.Write("0x" + mask.ToString("X2") + suffix); + } + Console.WriteLine("}, /* " + (char)c + " */"); +} -- cgit 1.4.1-2-gfad0