Mercurial > mplayer.hg
comparison stream/tvi_vbi.c @ 24276:e8b635a55781
Implement Hold/Release graphics (showing control chars as
graphics instead of spaces).
author | voroshil |
---|---|
date | Wed, 29 Aug 2007 17:43:13 +0000 |
parents | a12f357e8bd0 |
children | 298578b37f21 |
comparison
equal
deleted
inserted
replaced
24275:a12f357e8bd0 | 24276:e8b635a55781 |
---|---|
571 int fg_color=0; | 571 int fg_color=0; |
572 int bg_color=0; | 572 int bg_color=0; |
573 int row,col; | 573 int row,col; |
574 int separated=0; | 574 int separated=0; |
575 int conceal; | 575 int conceal; |
576 int hold; | |
577 tt_char tt_held; | |
576 | 578 |
577 for(row=0;row<VBI_ROWS;row++) { | 579 for(row=0;row<VBI_ROWS;row++) { |
578 lat=(lang==0); | 580 lat=(lang==0); |
579 gfx=0; | 581 gfx=0; |
580 fg_color=7; | 582 fg_color=7; |
581 bg_color=0; | 583 bg_color=0; |
582 separated=0; | 584 separated=0; |
583 conceal=0; | 585 conceal=0; |
586 hold=0; | |
587 tt_held=tt_space; | |
584 for(col=0;col<VBI_COLUMNS;col++){ | 588 for(col=0;col<VBI_COLUMNS;col++){ |
585 i=row*VBI_COLUMNS+col; | 589 i=row*VBI_COLUMNS+col; |
586 c=raw[i]; | 590 c=raw[i]; |
587 p[i].raw=c; | 591 p[i].raw=c; |
588 if(c&0x80){ //damaged char | 592 if(c&0x80){ //damaged char |
608 }else if(c>=0x0a && c<=0x0f){ | 612 }else if(c>=0x0a && c<=0x0f){ |
609 }else if (c<=0x17){ //colors | 613 }else if (c<=0x17){ //colors |
610 fg_color=c&0x0f; | 614 fg_color=c&0x0f; |
611 gfx=c>>4; | 615 gfx=c>>4; |
612 conceal=0; | 616 conceal=0; |
617 if(!gfx) hold=0; | |
613 }else if (c<=0x18){ | 618 }else if (c<=0x18){ |
614 conceal=1; | 619 conceal=1; |
615 }else if (c<=0x1a){ //Contiguous/Separated gfx | 620 }else if (c<=0x1a){ //Contiguous/Separated gfx |
616 separated=!(c&1); | 621 separated=!(c&1); |
617 }else if (c<=0x1b){ | 622 }else if (c<=0x1b){ |
618 lat=!lat; | 623 lat=!lat; |
619 }else if (c<=0x1d){ | 624 }else if (c<=0x1d){ |
620 bg_color=(c&1)?fg_color:0; | 625 bg_color=(c&1)?fg_color:0; |
621 p[i].bg=bg_color; | 626 p[i].bg=bg_color; |
627 }else{ //Hold/Release Graphics | |
628 hold=!(c&1); | |
622 } | 629 } |
623 p[i].ctl=1; | 630 p[i].ctl=1; |
631 if(hold || c==0x1f){ | |
632 p[i]=tt_held; | |
633 p[i].fg=fg_color; | |
634 p[i].bg=bg_color; | |
635 }else | |
624 p[i].unicode=p[i].gfx?0:' '; | 636 p[i].unicode=p[i].gfx?0:' '; |
625 continue; | 637 continue; |
626 } | 638 } |
627 | 639 |
628 if(conceal){ | 640 if(conceal){ |
629 p[i].gfx=0; | 641 p[i].gfx=0; |
630 p[i].unicode=' '; | 642 p[i].unicode=' '; |
631 }else if(gfx){ | 643 }else if(gfx){ |
632 p[i].unicode=c-0x20; | 644 p[i].unicode=c-0x20; |
633 if (p[i].unicode>0x3f) p[i].unicode-=0x20; | 645 if (p[i].unicode>0x3f) p[i].unicode-=0x20; |
646 tt_held=p[i]; | |
634 }else | 647 }else |
635 p[i].unicode=conv2uni(c,p[i].lng); | 648 p[i].unicode=conv2uni(c,p[i].lng); |
636 | 649 |
637 p[i].fg=fg_color; | 650 p[i].fg=fg_color; |
638 p[i].bg=bg_color; | 651 p[i].bg=bg_color; |