Added -s option to tweak output to match format needed for SmartMatrix library

Now the .c file can be copied directly to the SmartMatrix library without modification
This commit is contained in:
Louis Beaudoin 2014-09-11 00:20:48 -04:00
parent f68c2384bd
commit b07deb7a48

20
bdf2c.c
View File

@ -84,6 +84,7 @@
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
int Outline; ///< true generate outlined font int Outline; ///< true generate outlined font
int SmartMatrix; // modify output to be used in the SmartMatrix library
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
@ -128,10 +129,16 @@ void CreateFontHeaderFile(FILE * out)
/// ///
void Header(FILE * out, const char *name) void Header(FILE * out, const char *name)
{ {
char * headername;
if(!SmartMatrix)
headername = "font";
else
headername = "MatrixFontCommon";
fprintf(out, fprintf(out,
"// Created from bdf2c Version %s, (c) 2009, 2010 by Lutz Sammer\n" "// Created from bdf2c Version %s, (c) 2009, 2010 by Lutz Sammer\n"
"//\tLicense AGPLv3: GNU Affero General Public License version 3\n" "//\tLicense AGPLv3: GNU Affero General Public License version 3\n"
"\n#include \"font.h\"\n\n", VERSION); "\n#include \"%s.h\"\n\n", VERSION, headername);
fprintf(out, fprintf(out,
"\t/// character bitmap for each encoding\n" "\t/// character bitmap for each encoding\n"
@ -197,7 +204,12 @@ void Footer(FILE * out, const char *name, int width, int height, int chars)
name); name);
fprintf(out, "\t.Width = %d, .Height = %d,\n", width, height); fprintf(out, "\t.Width = %d, .Height = %d,\n", width, height);
fprintf(out, "\t.Chars = %d,\n", chars); fprintf(out, "\t.Chars = %d,\n", chars);
if(!SmartMatrix)
fprintf(out, "\t.Widths = __%s_widths__,\n", name); fprintf(out, "\t.Widths = __%s_widths__,\n", name);
else
fprintf(out, "\t.Widths = 0,\n");
fprintf(out, "\t.Index = __%s_index__,\n", name); fprintf(out, "\t.Index = __%s_index__,\n", name);
fprintf(out, "\t.Bitmap = __%s_bitmap__,\n", name); fprintf(out, "\t.Bitmap = __%s_bitmap__,\n", name);
fprintf(out, "};\n\n"); fprintf(out, "};\n\n");
@ -589,6 +601,7 @@ void ReadBdf(FILE * bdf, FILE * out, const char *name)
} }
// Output width table for proportional font. // Output width table for proportional font.
if(!SmartMatrix)
WidthTable(out, name, width_table, chars); WidthTable(out, name, width_table, chars);
// FIXME: Output offset table for proportional font. // FIXME: Output offset table for proportional font.
// OffsetTable(out, name, offset_table, chars); // OffsetTable(out, name, offset_table, chars);
@ -641,7 +654,7 @@ int main(int argc, char *const argv[])
// Parse arguments. // Parse arguments.
// //
for (;;) { for (;;) {
switch (getopt(argc, argv, "bcC:n:hO?-")) { switch (getopt(argc, argv, "bcC:n:hOs?-")) {
case 'b': // bdf file name case 'b': // bdf file name
ReadBdf(stdin, stdout, name); ReadBdf(stdin, stdout, name);
continue; continue;
@ -667,6 +680,9 @@ int main(int argc, char *const argv[])
case 'O': case 'O':
Outline = 1; Outline = 1;
continue; continue;
case 's':
SmartMatrix = 1;
continue;
case EOF: case EOF:
break; break;