annotate libvo/sub.c @ 213:6ec8f6ab6cb1

subtitle+OSD font support
author arpi_esp
date Sun, 25 Mar 2001 04:28:40 +0000
parents 6ad0715dfac8
children fbfc2077ba72
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
1
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
2 //static int vo_font_loaded=-1;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
3 font_desc_t* vo_font=NULL;
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
4
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
5 int vo_sub_lines=2;
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
6 unsigned char* vo_sub_text[8];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
7
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
8 unsigned char* vo_osd_text="00:00:00";
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
9
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
10 void vo_draw_text(int dxs,int dys,void (*draw_alpha)(int x0,int y0, int w,int h, unsigned char* src, unsigned char *srca, int stride)){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
11 int i;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
12 int y;
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
13
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
14 if(!vo_font) return; // no font
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
15
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
16 if(vo_osd_text){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
17 int len=strlen(vo_osd_text);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
18 int j;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
19 int y=10;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
20 int x=20;
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
21
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
22 for(j=0;j<len;j++){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
23 int c=vo_osd_text[j];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
24 int font=vo_font->font[c];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
25 if(font>=0)
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
26 draw_alpha(x,y,
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
27 vo_font->width[c],
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
28 vo_font->pic_a[font]->h,
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
29 vo_font->pic_b[font]->bmp+vo_font->start[c],
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
30 vo_font->pic_a[font]->bmp+vo_font->start[c],
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
31 vo_font->pic_a[font]->w);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
32 x+=vo_font->width[c]+vo_font->charspace;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
33 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
34
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
35 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
36
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
37 #if 1
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
38
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
39 if(vo_sub_lines<=0) return; // no text
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
40 y=dys-(1+vo_sub_lines)*vo_font->height;
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
41
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
42 for(i=0;i<vo_sub_lines;i++){
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
43 unsigned char* text="Hello World! HÛDEJÓ!"; //vo_sub_text[i];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
44 int len=strlen(text);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
45 int j;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
46 int xsize=-vo_font->charspace;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
47 int x=0;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
48
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
49 for(j=0;j<len;j++){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
50 int w=vo_font->width[text[j]];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
51 if(w>100) printf("gazvan: %d (%d=%c)\n",w,text[j],text[j]);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
52 xsize+=w+vo_font->charspace;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
53 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
54 //printf("text width = %d\n",xsize);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
55
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
56 if(xsize>dxs) printf("Warning! SUB too wide!!! (%d>%d)\n",xsize,dxs);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
57
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
58 x=dxs/2-xsize/2;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
59
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
60 for(j=0;j<len;j++){
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
61 int c=text[j];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
62 int font=vo_font->font[c];
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
63 if(x>=0 && x+vo_font->width[c]<dxs)
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
64 if(font>=0)
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
65 draw_alpha(x,y,
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
66 vo_font->width[c],
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
67 vo_font->pic_a[font]->h,
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
68 vo_font->pic_b[font]->bmp+vo_font->start[c],
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
69 vo_font->pic_a[font]->bmp+vo_font->start[c],
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
70 vo_font->pic_a[font]->w);
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
71 x+=vo_font->width[c]+vo_font->charspace;
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
72 }
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
73
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
74 y+=vo_font->height;
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
75 }
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
76
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
77 #endif
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
78
202
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
79 }
6ad0715dfac8 grey+alpha rendering support (for .sub)
arpi_esp
parents:
diff changeset
80
213
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
81
6ec8f6ab6cb1 subtitle+OSD font support
arpi_esp
parents: 202
diff changeset
82