mirror of https://github.com/mpv-player/mpv
Implement Flash/Steady (swapping foreground/background colors)
and Conceal (filling following chars with spaces) control characters. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@24295 b3059339-0415-0410-9bf9-f77b7e298cf2
This commit is contained in:
parent
c0831f3400
commit
5b673bf021
|
@ -572,6 +572,7 @@ static void decode_page(tt_char* p,int lang,unsigned char* raw)
|
||||||
int bg_color=0;
|
int bg_color=0;
|
||||||
int row,col;
|
int row,col;
|
||||||
int separated=0;
|
int separated=0;
|
||||||
|
int conceal;
|
||||||
|
|
||||||
for(row=0;row<VBI_ROWS;row++) {
|
for(row=0;row<VBI_ROWS;row++) {
|
||||||
lat=(lang==0);
|
lat=(lang==0);
|
||||||
|
@ -579,6 +580,7 @@ static void decode_page(tt_char* p,int lang,unsigned char* raw)
|
||||||
fg_color=7;
|
fg_color=7;
|
||||||
bg_color=0;
|
bg_color=0;
|
||||||
separated=0;
|
separated=0;
|
||||||
|
conceal=0;
|
||||||
for(col=0;col<VBI_COLUMNS;col++){
|
for(col=0;col<VBI_COLUMNS;col++){
|
||||||
i=row*VBI_COLUMNS+col;
|
i=row*VBI_COLUMNS+col;
|
||||||
c=raw[i];
|
c=raw[i];
|
||||||
|
@ -594,11 +596,22 @@ static void decode_page(tt_char* p,int lang,unsigned char* raw)
|
||||||
p[i].bg=bg_color;
|
p[i].bg=bg_color;
|
||||||
|
|
||||||
if ((c&0x60)==0){ //control chars
|
if ((c&0x60)==0){ //control chars
|
||||||
if(c>=0x08 && c<=0x0f){
|
if(c>=0x08 && c<=0x09){//Flash/Steady
|
||||||
|
int tmp;
|
||||||
|
tmp=bg_color;
|
||||||
|
bg_color=fg_color;
|
||||||
|
fg_color=tmp;
|
||||||
|
if(c==0x09){
|
||||||
|
p[i].fg=fg_color;
|
||||||
|
p[i].bg=bg_color;
|
||||||
|
}
|
||||||
|
}else if(c>=0x0a && c<=0x0f){
|
||||||
}else if (c<=0x17){ //colors
|
}else if (c<=0x17){ //colors
|
||||||
fg_color=c&0x0f;
|
fg_color=c&0x0f;
|
||||||
gfx=c>>4;
|
gfx=c>>4;
|
||||||
|
conceal=0;
|
||||||
}else if (c<=0x18){
|
}else if (c<=0x18){
|
||||||
|
conceal=1;
|
||||||
}else if (c<=0x1a){ //Contiguous/Separated gfx
|
}else if (c<=0x1a){ //Contiguous/Separated gfx
|
||||||
separated=!(c&1);
|
separated=!(c&1);
|
||||||
}else if (c<=0x1b){
|
}else if (c<=0x1b){
|
||||||
|
@ -612,7 +625,10 @@ static void decode_page(tt_char* p,int lang,unsigned char* raw)
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(gfx){
|
if(conceal){
|
||||||
|
p[i].gfx=0;
|
||||||
|
p[i].unicode=' ';
|
||||||
|
}else if(gfx){
|
||||||
p[i].unicode=c-0x20;
|
p[i].unicode=c-0x20;
|
||||||
if (p[i].unicode>0x3f) p[i].unicode-=0x20;
|
if (p[i].unicode>0x3f) p[i].unicode-=0x20;
|
||||||
}else
|
}else
|
||||||
|
|
Loading…
Reference in New Issue