$curr_char = 32; $nrow = 7; $ncol = 5; $nchar = 0; $reverse_byte = 0; $gencode = ""; while(1){ for($row=0; $row <= $nrow; $row++){ if(! ($line = <>)){ print "flash unsigned char charmap[",$ncol*$nchar,"] = {\n"; print $gencode; print "};\n\n"; exit(0); } chomp($line); if($row > 0){ $rowbmp[$row-1] = $line; } } for($col=0;$col<$ncol;$col++){ $colbyte[$col] = 0; } for($col=0;$col<$ncol;$col++){ for($row=0; $row < $nrow; $row++){ if(substr($rowbmp[$row], $col, 1) ne " "){ $colbyte[$col] += (1 << ($nrow - $row - 1)); } } } $gencode = $gencode . "\t"; for($col=0;$col<$ncol;$col++){ if($col > 0 ){ $gencode = $gencode . ", "; } $gencode = $gencode . sprintf("0x%02x",transbyte($colbyte[$col])); } $gencode = $gencode . ",\t// \"" . chr($curr_char) . "\"\n"; $curr_char++; $nchar++; } sub transbyte{ my $b = shift; my $r = 0; if($reverse_byte){ if($b & 0x01){ $r|= 0x80;} if($b & 0x02){ $r|= 0x40;} if($b & 0x04){ $r|= 0x20;} if($b & 0x08){ $r|= 0x10;} if($b & 0x10){ $r|= 0x08;} if($b & 0x20){ $r|= 0x04;} if($b & 0x40){ $r|= 0x02;} if($b & 0x80){ $r|= 0x01;} }else{ $r = $b; } return $r; }