Annotation of sbbs/src/conio/conv2vid.pl, revision 1.1.1.1

1.1       root        1: #!/usr/bin/perl
                      2: 
                      3: use MIME::Decoder;
                      4: 
                      5: my @fontfiles=glob("/usr/share/syscons/fonts/*.fnt");
                      6: $decoder = new MIME::Decoder 'x-uuencode' or die "unsupported";
                      7: 
                      8: my $fonts=0;
                      9: 
                     10: open COUT, "> allfonts.c";
                     11: print COUT "#include <stdio.h>         /* NULL */\n\n";
                     12: print COUT "#include \"allfonts.h\"\n\n";
                     13: my $started;
                     14: my %fontdata;
                     15: foreach my $fontfile (@fontfiles) {
                     16:        my $width,$height;
                     17:        my $decoded=`uudecode -o /dev/stdout $fontfile`;
                     18:        my $bytes=length($decoded);
                     19:        my $fname=$fontfile;
                     20:        $fname =~ s/\.fnt$//;
                     21:        $fname =~ s/^.*\///;
                     22:        $fname =~ s/-/_/g;
                     23:        if($fname =~ /([0-9]+)x([0-9]+)/) {
                     24:                $width=$1;
                     25:                $height=$2;
                     26:        }
                     27: 
                     28:        my $lines=0;
                     29:        $started=0;
                     30:        $fontdata{$fname}="\"";
                     31:        while(length($decoded)) {
                     32:                my $ch=substr($decoded,0,1);
                     33:                $decoded=substr($decoded,1);
                     34:                $fontdata{$fname}.='\x'.unpack("H2",$ch);
                     35:                $lines++;
                     36:                if($height && !($lines % $height)) {
                     37:                        if(length($decoded)) {
                     38:                                $fontdata{$fname}.="\"\n\t\t\"";
                     39:                        }
                     40:                }
                     41:        }
                     42:        $fontdata{$fname}.="\"\n\t";
                     43:        $fonts++;
                     44: }
                     45: 
                     46: open IN, "< /usr/share/syscons/fonts/INDEX.fonts";
                     47: my %fonts;
                     48: my %fontsizes;
                     49: while (<IN>) {
                     50:        next if(/^\s*#/);
                     51:        chomp;
                     52:        my ($filename, $lang, $desc) = split(/:/);
                     53:        next unless ($lang eq 'en');
                     54:        next if ($filename !~ /\.fnt$/);
                     55:        $filename =~ s/\..*?$//;
                     56:        $filename =~ s/-/_/g;
                     57:        $filename =~ s/_(8x[0-9]*)$//;
                     58:        if($1 eq '8x16') {
                     59:                $fontsizes{$filename} |=1;
                     60:        }
                     61:        elsif($1 eq '8x14') {
                     62:                $fontsizes{$filename} |=2;
                     63:        }
                     64:        elsif($1 eq '8x8') {
                     65:                $fontsizes{$filename} |=4;
                     66:        }
                     67:        else {
                     68:                print STDERR "Unknown font size: $1\n";
                     69:        }
                     70:        $desc =~ s/"/\\"/g;
                     71:        $desc =~ s/\s+8x[0-9]*//g;
                     72:        $desc =~ s/,\s*$//g;
                     73:        $fonts{$filename}=$desc;
                     74: }
                     75: close IN;
                     76: my $arraysize=(scalar keys %fonts)+1;
                     77: print COUT "struct conio_font_data_struct conio_fontdata[".$arraysize."] = {\n";
                     78: $started=0;
                     79: foreach my $font (keys %fonts) {
                     80:        if($started) {
                     81:                print COUT "\t,{";
                     82:        }
                     83:        else {
                     84:                print COUT "\t {";
                     85:                $started=1;
                     86:        }
                     87:        if($fontsizes{$font} & 1) {
                     88:                print COUT $fontdata{"$font\_8x16"};
                     89:                print COUT ", ";
                     90:        }
                     91:        else {
                     92:                print COUT "NULL, ";
                     93:        }
                     94:        if($fontsizes{$font} & 2) {
                     95:                print COUT $fontdata{"$font\_8x14"};
                     96:                print COUT ", ";
                     97:        }
                     98:        else {
                     99:                print COUT "NULL, ";
                    100:        }
                    101:        if($fontsizes{$font} & 4) {
                    102:                print COUT $fontdata{"$font\_8x8"};
                    103:                print COUT ", ";
                    104:        }
                    105:        else {
                    106:                print COUT "NULL, ";
                    107:        }
                    108:        print COUT "\"$fonts{$font}\"}\n";
                    109: }
                    110: print COUT "\t,{NULL, NULL, NULL, NULL}\n";
                    111: print COUT "};\n";
                    112: 
                    113: close COUT;
                    114: 
                    115: open HOUT,"> allfonts.h";
                    116: print HOUT <<ENDOFHEADER;
                    117: #ifndef _ALLFONTS_H_
                    118: #define _ALLFONTS_H_
                    119: 
                    120: struct conio_font_data_struct {
                    121:         char *eight_by_sixteen;
                    122:         char *eight_by_fourteen;
                    123:         char *eight_by_eight;
                    124:         char *desc;
                    125: };
                    126: 
                    127: extern struct conio_font_data_struct conio_fontdata[$arraysize];
                    128: 
                    129: #endif
                    130: ENDOFHEADER

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.