202
|
1
|
|
2 typedef struct {
|
|
3 unsigned char *bmp;
|
|
4 unsigned char *pal;
|
|
5 int w,h,c;
|
|
6 } raw_file;
|
|
7
|
|
8 raw_file* load_raw(char *name){
|
|
9 int bpp;
|
|
10 raw_file* raw=malloc(sizeof(raw_file));
|
|
11 unsigned char head[32];
|
|
12 FILE *f=fopen(name,"rb");
|
|
13 if(!f) return NULL; // can't open
|
|
14 if(fread(head,32,1,f)<1) return NULL; // too small
|
|
15 if(memcmp(head,"mhwanh",6)) return NULL; // not raw file
|
|
16 raw->w=head[8]*256+head[9];
|
|
17 raw->h=head[10]*256+head[11];
|
|
18 raw->c=head[12]*256+head[13];
|
|
19 if(raw->c>256) return NULL; // too many colors!?
|
|
20 printf("RAW: %d x %d, %d colors\n",raw->w,raw->h,raw->c);
|
|
21 if(raw->c){
|
|
22 raw->pal=malloc(raw->c*3);
|
|
23 fread(raw->pal,3,raw->c,f);
|
|
24 bpp=1;
|
|
25 } else {
|
|
26 raw->pal=NULL;
|
|
27 bpp=3;
|
|
28 }
|
|
29 raw->bmp=malloc(raw->h*raw->w*bpp);
|
|
30 fread(raw->bmp,raw->h*raw->w*bpp,1,f);
|
|
31 fclose(f);
|
|
32 return raw;
|
|
33 }
|
|
34
|
|
35 static int vo_font_loaded=-1;
|
|
36 static raw_file* vo_font_bmp=NULL;
|
|
37 static raw_file* vo_font_alpha=NULL;
|
|
38
|
|
39 void vo_load_font(char *bmpname,char *alphaname){
|
|
40 vo_font_loaded=0;
|
|
41 if(!(vo_font_bmp=load_raw(bmpname)))
|
|
42 printf("vo: Can't load font BMP\n"); else
|
|
43 if(!(vo_font_alpha=load_raw(alphaname)))
|
|
44 printf("vo: Can't load font Alpha\n"); else
|
|
45 vo_font_loaded=1;
|
|
46 }
|
|
47
|
|
48 int vo_sub_lines=2;
|
|
49 char* vo_sub_text[8];
|
|
50
|
|
51
|
|
52 void vo_draw_text(void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){
|
|
53 int i;
|
|
54 int y=100;
|
|
55
|
|
56 if(vo_sub_lines<=0) return; // no text
|
|
57
|
|
58 if(vo_font_loaded==-1) vo_load_font("font_b.raw","font_a.raw");
|
|
59 if(!vo_font_loaded) return; // no font
|
|
60
|
|
61 // if(!vo_font_bmp) vo_load_font("mplayer_font_lowres_bitmap.raw","mplayer_font_lowres_alpha.raw");
|
|
62
|
|
63 for(i=0;i<vo_sub_lines;i++){
|
|
64 char* text="Hello World!"; //vo_sub_text[i];
|
|
65 draw_alpha(100,y,50,vo_font_bmp->h,vo_font_bmp->bmp,vo_font_alpha->bmp,vo_font_bmp->w);
|
|
66 // x11_draw_alpha(100,y,50,vo_font_bmp->h,vo_font_bmp->bmp,vo_font_alpha->bmp,vo_font_bmp->w);
|
|
67 y+=50;
|
|
68 }
|
|
69
|
|
70 }
|
|
71
|