📄 generate_rocklatin.c
字号:
/*************************************************************************** * __________ __ ___. * Open \______ \ ____ ____ | | _\_ |__ _______ ___ * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ * \/ \/ \/ \/ \/ * $Id: generate_rocklatin.c,v 1.1 2003/01/10 10:05:32 kjer Exp $ * * Copyright (C) 2003 by Kjell Ericson * * All files in this archive are subject to the GNU General Public License. * See the file COPYING in the source tree root for full license agreement. * * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY * KIND, either express or implied. * ****************************************************************************/#include <stdio.h>#include <stdlib.h>#define CHAR_WIDTH 8#define CHAR_HEIGHT 8#define BITMAP_WIDTH ((CHAR_WIDTH)*17)#define BITMAP_HEIGHT ((CHAR_HEIGHT)*17)#define SIZE 2unsigned int bitmap[BITMAP_WIDTH][BITMAP_HEIGHT];extern unsigned char extended_font_player[256][8];extern unsigned char font_new_player[256][5];extern unsigned char font_old_player[256][5];extern unsigned short new_lcd_rocklatin1_to_xlcd[];extern unsigned short old_lcd_rocklatin1_to_xlcd[];extern unsigned char lcd_player_extended_lcd_to_rocklatin1[];unsigned char (* font)[256][5];unsigned short *rocklatin;char show_subst=0;char show_hardware=0;char shadow_show_hardware=0;void set_pixel(int x, int y, int col){ bitmap[x][y]=col;}void draw_extended_char(unsigned char chr, int x, int y){ int x2, y2; unsigned char *data; short mapped_char; int col=0; data=extended_font_player[chr]; col=0xf00000; for (x2=0; x2<5; x2++) { for (y2=0; y2<7; y2++) { if (data[y2]&((1<<4)>>x2)) set_pixel(x+x2, y+y2, col); else set_pixel(x+x2, y+y2, 0xc0c0c0); } }}void draw_char(unsigned char chr, int x, int y){ int x2, y2; unsigned char *data; short mapped_char; int col=0; if (show_hardware) mapped_char=chr; else { mapped_char=rocklatin[chr]; if (chr<=0x20 && mapped_char==0xff) mapped_char=rocklatin[' ']; } if (mapped_char>=512) { if (show_subst) { chr=lcd_player_extended_lcd_to_rocklatin1[mapped_char-512]; mapped_char=rocklatin[chr]; data=(*font)[mapped_char]; } else { draw_extended_char(mapped_char-512, x, y); return; } col=0xf00000; } else if (mapped_char<256) { data=(*font)[mapped_char]; } else if (mapped_char>=256) { mapped_char=mapped_char-256; } for (x2=0; x2<5; x2++) { for (y2=0; y2<7; y2++) { if (data[x2]&(1<<y2)) set_pixel(x+x2, y+y2, col); else set_pixel(x+x2, y+y2, 0xc0c0c0); } }}int main (int argc, char** argv){ int x, y; int loop; char *filename; FILE *fp; for (loop=0; loop<6; loop++) { switch (loop) { case 0: font=&font_old_player; rocklatin=old_lcd_rocklatin1_to_xlcd; filename="lcd_old.gif"; show_subst=0; show_hardware=0; break; case 1: font=&font_new_player; rocklatin=new_lcd_rocklatin1_to_xlcd; filename="lcd_new.gif"; show_subst=0; show_hardware=0; break; case 2: font=&font_old_player; rocklatin=old_lcd_rocklatin1_to_xlcd; filename="lcd_old_subst.gif"; show_subst=1; show_hardware=0; break; case 3: font=&font_new_player; rocklatin=new_lcd_rocklatin1_to_xlcd; filename="lcd_new_subst.gif"; show_subst=1; show_hardware=0; break; case 4: font=&font_old_player; rocklatin=old_lcd_rocklatin1_to_xlcd; filename="lcd_old_hw.gif"; show_subst=1; show_hardware=1; break; case 5: font=&font_new_player; rocklatin=new_lcd_rocklatin1_to_xlcd; filename="lcd_new_hw.gif"; show_subst=1; show_hardware=1; break; default: printf("Not in loop!\n"); exit(0); } fp=fopen("tmp.pnm", "wb"); if (!fp) { printf("Error opening %s!\n", filename); exit(0); } memset(bitmap, 255, sizeof(bitmap)); fprintf(fp, "P3\n#PNM showing a picture of the Rocklatin charset\n"); fprintf(fp, "%d %d\n255\n", BITMAP_HEIGHT*SIZE, BITMAP_WIDTH*SIZE); shadow_show_hardware=show_hardware; show_hardware=0; for (x=0; x<16; x++) { draw_char(x+(x<10?'0':'A'-10), CHAR_WIDTH+CHAR_WIDTH*x+1, 0); draw_char(x+(x<10?'0':'A'-10), 1, CHAR_WIDTH+CHAR_WIDTH*x); } show_hardware=shadow_show_hardware; for (x=0; x<16; x++) { for (y=0; y<16; y++) { draw_char(x+y*16, CHAR_WIDTH+CHAR_WIDTH*x+1, y*CHAR_HEIGHT+CHAR_HEIGHT); } } for (y=0; y<BITMAP_HEIGHT; y++) { int i, z; for (i=0; i<SIZE; i++) { for (x=0; x<BITMAP_WIDTH; x++) { unsigned int col=bitmap[x][y]; if (y<CHAR_HEIGHT || x<CHAR_WIDTH) { col=0xffffffff-col; } for (z=0; z<SIZE; z++) { fprintf(fp, "%d ", (col>>16)&255); fprintf(fp, "%d ", (col>>8)&255); fprintf(fp, "%d ", (col)&255); } } fprintf(fp, "\n"); } } fclose(fp); { char buffer[200]; sprintf(buffer, "convert tmp.pnm %s", filename); system(buffer); system("rm tmp.pnm"); } }}unsigned char font_new_player[256][5] = { { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 00 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 01 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 02 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 03 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 04 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 05 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 06 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 07 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 08 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 09 */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0a */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0b */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0c */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0d */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0e */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 0f */ { 0x3e, 0x1c, 0x1c, 0x08, 0x08 }, /* 10 */ { 0x08, 0x08, 0x1c, 0x1c, 0x3e }, /* 11 */ { 0x02, 0x04, 0x08, 0x10, 0x20 }, /* 12 */ { 0x00, 0x4f, 0x00, 0x4f, 0x00 }, /* 13 */ { 0x06, 0x0f, 0x7f, 0x01, 0x7f }, /* 14 */ { 0x48, 0x56, 0x55, 0x35, 0x09 }, /* 15 */ { 0x0c, 0x0c, 0x0c, 0x0c, 0x0c }, /* 16 */ { 0x10, 0x38, 0x54, 0x10, 0x1f }, /* 17 */ { 0x04, 0x02, 0x7f, 0x02, 0x04 }, /* 18 */ { 0x10, 0x20, 0x7f, 0x20, 0x10 }, /* 19 */ { 0x7f, 0x3e, 0x1c, 0x08, 0x7f }, /* 1a */ { 0x7f, 0x08, 0x1c, 0x3e, 0x7f }, /* 1b */ { 0x7f, 0x08, 0x2a, 0x1c, 0x08 }, /* 1c */ { 0x08, 0x1c, 0x2a, 0x08, 0x7f }, /* 1d */ { 0x02, 0x0e, 0x3e, 0x0e, 0x02 }, /* 1e */ { 0x20, 0x38, 0x3e, 0x38, 0x20 }, /* 1f */ { 0x00, 0x00, 0x00, 0x00, 0x00 }, /* 20 */ { 0x00, 0x00, 0x4f, 0x00, 0x00 }, /* 21 */ { 0x00, 0x07, 0x00, 0x07, 0x00 }, /* 22 */ { 0x14, 0x7f, 0x14, 0x7f, 0x14 }, /* 23 */ { 0x24, 0x2a, 0x7f, 0x2a, 0x12 }, /* 24 */ { 0x23, 0x13, 0x08, 0x64, 0x62 }, /* 25 */ { 0x36, 0x49, 0x55, 0x22, 0x50 }, /* 26 */ { 0x00, 0x05, 0x03, 0x00, 0x00 }, /* 27 */ { 0x00, 0x1c, 0x22, 0x41, 0x00 }, /* 28 */ { 0x00, 0x41, 0x22, 0x1c, 0x00 }, /* 29 */ { 0x14, 0x08, 0x3e, 0x08, 0x14 }, /* 2a */ { 0x08, 0x08, 0x3e, 0x08, 0x08 }, /* 2b */ { 0x00, 0x50, 0x30, 0x00, 0x00 }, /* 2c */ { 0x08, 0x08, 0x08, 0x08, 0x08 }, /* 2d */ { 0x00, 0x30, 0x30, 0x00, 0x00 }, /* 2e */ { 0x20, 0x10, 0x08, 0x04, 0x02 }, /* 2f */ { 0x3e, 0x51, 0x49, 0x45, 0x3e }, /* 30 */ { 0x00, 0x42, 0x7f, 0x40, 0x00 }, /* 31 */ { 0x42, 0x61, 0x51, 0x49, 0x46 }, /* 32 */ { 0x21, 0x41, 0x45, 0x4b, 0x31 }, /* 33 */ { 0x18, 0x14, 0x12, 0x7f, 0x10 }, /* 34 */ { 0x27, 0x45, 0x45, 0x45, 0x39 }, /* 35 */ { 0x3c, 0x4a, 0x49, 0x49, 0x30 }, /* 36 */ { 0x01, 0x01, 0x71, 0x0d, 0x03 }, /* 37 */ { 0x36, 0x49, 0x49, 0x49, 0x36 }, /* 38 */ { 0x06, 0x49, 0x49, 0x29, 0x1e }, /* 39 */ { 0x00, 0x36, 0x36, 0x00, 0x00 }, /* 3a */ { 0x00, 0x5b, 0x3b, 0x00, 0x00 }, /* 3b */ { 0x08, 0x14, 0x22, 0x41, 0x00 }, /* 3c */ { 0x14, 0x14, 0x14, 0x14, 0x14 }, /* 3d */ { 0x00, 0x41, 0x22, 0x14, 0x08 }, /* 3e */ { 0x02, 0x01, 0x51, 0x09, 0x06 }, /* 3f */ { 0x32, 0x49, 0x79, 0x41, 0x3e }, /* 40 */ { 0x7e, 0x11, 0x11, 0x11, 0x7e }, /* 41 */ { 0x7f, 0x49, 0x49, 0x49, 0x36 }, /* 42 */ { 0x3e, 0x41, 0x41, 0x41, 0x22 }, /* 43 */ { 0x7f, 0x41, 0x41, 0x22, 0x1c }, /* 44 */ { 0x7f, 0x49, 0x49, 0x49, 0x41 }, /* 45 */ { 0x7f, 0x09, 0x09, 0x09, 0x01 }, /* 46 */ { 0x3e, 0x41, 0x49, 0x49, 0x7a }, /* 47 */ { 0x7f, 0x08, 0x08, 0x08, 0x7f }, /* 48 */ { 0x00, 0x41, 0x7f, 0x41, 0x00 }, /* 49 */ { 0x20, 0x41, 0x41, 0x3f, 0x01 }, /* 4a */ { 0x7f, 0x08, 0x14, 0x22, 0x41 }, /* 4b */ { 0x7f, 0x40, 0x40, 0x40, 0x40 }, /* 4c */ { 0x7f, 0x02, 0x0c, 0x02, 0x7f }, /* 4d */ { 0x7f, 0x04, 0x08, 0x10, 0x7f }, /* 4e */ { 0x3e, 0x41, 0x41, 0x41, 0x3e }, /* 4f */ { 0x7f, 0x09, 0x09, 0x09, 0x06 }, /* 50 */ { 0x3e, 0x41, 0x41, 0x21, 0x5e }, /* 51 */ { 0x7f, 0x09, 0x19, 0x29, 0x46 }, /* 52 */ { 0x26, 0x49, 0x49, 0x49, 0x32 }, /* 53 */ { 0x01, 0x01, 0x7f, 0x01, 0x01 }, /* 54 */ { 0x3f, 0x40, 0x40, 0x40, 0x3f }, /* 55 */ { 0x1f, 0x20, 0x40, 0x20, 0x1f }, /* 56 */ { 0x3f, 0x40, 0x38, 0x40, 0x3f }, /* 57 */ { 0x63, 0x14, 0x08, 0x14, 0x63 }, /* 58 */ { 0x03, 0x04, 0x78, 0x04, 0x03 }, /* 59 */ { 0x61, 0x51, 0x49, 0x45, 0x43 }, /* 5a */ { 0x00, 0x7f, 0x41, 0x41, 0x00 }, /* 5b */ { 0x15, 0x16, 0x7c, 0x16, 0x15 }, /* 5c */ { 0x00, 0x41, 0x41, 0x7f, 0x00 }, /* 5d */ { 0x04, 0x02, 0x01, 0x02, 0x04 }, /* 5e */ { 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 5f */ { 0x00, 0x01, 0x02, 0x04, 0x00 }, /* 60 */ { 0x20, 0x54, 0x54, 0x54, 0x78 }, /* 61 */ { 0x7f, 0x48, 0x44, 0x44, 0x38 }, /* 62 */ { 0x38, 0x44, 0x44, 0x44, 0x20 }, /* 63 */ { 0x38, 0x44, 0x44, 0x48, 0x7f }, /* 64 */ { 0x38, 0x54, 0x54, 0x54, 0x18 }, /* 65 */ { 0x08, 0x7e, 0x09, 0x01, 0x02 }, /* 66 */ { 0x0c, 0x52, 0x52, 0x52, 0x3e }, /* 67 */ { 0x7f, 0x08, 0x04, 0x04, 0x78 }, /* 68 */ { 0x00, 0x44, 0x7d, 0x40, 0x00 }, /* 69 */ { 0x20, 0x40, 0x44, 0x3d, 0x00 }, /* 6a */ { 0x7f, 0x10, 0x28, 0x44, 0x00 }, /* 6b */ { 0x00, 0x41, 0x7f, 0x40, 0x00 }, /* 6c */ { 0x7c, 0x04, 0x18, 0x04, 0x78 }, /* 6d */ { 0x7c, 0x08, 0x04, 0x04, 0x78 }, /* 6e */ { 0x38, 0x44, 0x44, 0x44, 0x38 }, /* 6f */ { 0x7c, 0x14, 0x14, 0x14, 0x08 }, /* 70 */ { 0x08, 0x14, 0x14, 0x18, 0x7c }, /* 71 */ { 0x7c, 0x08, 0x04, 0x04, 0x08 }, /* 72 */ { 0x48, 0x54, 0x54, 0x54, 0x20 }, /* 73 */ { 0x04, 0x3f, 0x44, 0x40, 0x20 }, /* 74 */ { 0x3c, 0x40, 0x40, 0x20, 0x7c }, /* 75 */ { 0x1c, 0x20, 0x40, 0x20, 0x1c }, /* 76 */ { 0x3c, 0x40, 0x30, 0x40, 0x3c }, /* 77 */ { 0x44, 0x28, 0x10, 0x28, 0x44 }, /* 78 */ { 0x4c, 0x50, 0x50, 0x50, 0x3c }, /* 79 */ { 0x44, 0x64, 0x54, 0x4c, 0x44 }, /* 7a */ { 0x00, 0x08, 0x36, 0x41, 0x00 }, /* 7b */ { 0x00, 0x00, 0x7f, 0x00, 0x00 }, /* 7c */ { 0x00, 0x41, 0x36, 0x08, 0x00 }, /* 7d */ { 0x08, 0x08, 0x2a, 0x1c, 0x08 }, /* 7e */ { 0x08, 0x1c, 0x2a, 0x08, 0x08 }, /* 7f */ { 0x40, 0x40, 0x40, 0x40, 0x40 }, /* 80 */ { 0x60, 0x60, 0x60, 0x60, 0x60 }, /* 81 */ { 0x70, 0x70, 0x70, 0x70, 0x70 }, /* 82 */ { 0x78, 0x78, 0x78, 0x78, 0x78 }, /* 83 */ { 0x7c, 0x7c, 0x7c, 0x7c, 0x7c }, /* 84 */ { 0x7e, 0x7e, 0x7e, 0x7e, 0x7e }, /* 85 */ { 0x7f, 0x7f, 0x7f, 0x7f, 0x7f }, /* 86 */ { 0x08, 0x2a, 0x1c, 0x2a, 0x08 }, /* 87 */ { 0x7f, 0x00, 0x00, 0x00, 0x7f }, /* 88 */ { 0x7f, 0x7f, 0x00, 0x00, 0x7f }, /* 89 */ { 0x7f, 0x7f, 0x7f, 0x00, 0x7f }, /* 8a */ { 0x00, 0x7f, 0x00, 0x00, 0x00 }, /* 8b */ { 0x00, 0x7f, 0x7f, 0x00, 0x00 }, /* 8c */ { 0x00, 0x7f, 0x7f, 0x7f, 0x00 }, /* 8d */ { 0x00, 0x7f, 0x7f, 0x7f, 0x7f }, /* 8e */ { 0x3e, 0x3e, 0x3e, 0x3e, 0x3e }, /* 8f */ { 0x1c, 0x3e, 0x3e, 0x3e, 0x1c }, /* 90 */ { 0x7f, 0x41, 0x41, 0x41, 0x7f }, /* 91 */ { 0x7f, 0x5b, 0x41, 0x5f, 0x7f }, /* 92 */ { 0x7f, 0x4d, 0x55, 0x59, 0x7f }, /* 93 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -