changeset 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
files stream/tvi_vbi.c
diffstat 1 files changed, 13 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/stream/tvi_vbi.c	Wed Aug 29 17:28:41 2007 +0000
+++ b/stream/tvi_vbi.c	Wed Aug 29 17:43:13 2007 +0000
@@ -573,6 +573,8 @@
     int row,col;
     int separated=0;
     int conceal;
+    int hold;
+    tt_char tt_held;
 
     for(row=0;row<VBI_ROWS;row++)   {
         lat=(lang==0);
@@ -581,6 +583,8 @@
         bg_color=0;
         separated=0;
         conceal=0;
+        hold=0;
+        tt_held=tt_space;
         for(col=0;col<VBI_COLUMNS;col++){
             i=row*VBI_COLUMNS+col;
             c=raw[i];
@@ -610,6 +614,7 @@
                     fg_color=c&0x0f;
                     gfx=c>>4;
                     conceal=0;
+                    if(!gfx) hold=0;
                 }else if (c<=0x18){
                     conceal=1;
                 }else if (c<=0x1a){ //Contiguous/Separated gfx
@@ -619,8 +624,15 @@
                 }else if (c<=0x1d){
                     bg_color=(c&1)?fg_color:0;
                     p[i].bg=bg_color;
+                }else{ //Hold/Release Graphics
+                    hold=!(c&1);
                 }
                 p[i].ctl=1;
+                if(hold || c==0x1f){
+                    p[i]=tt_held;
+                    p[i].fg=fg_color;
+                    p[i].bg=bg_color;
+                }else
                 p[i].unicode=p[i].gfx?0:' ';
                 continue;
             }
@@ -631,6 +643,7 @@
             }else if(gfx){
                 p[i].unicode=c-0x20;
                 if (p[i].unicode>0x3f) p[i].unicode-=0x20;
+                tt_held=p[i];
             }else
                 p[i].unicode=conv2uni(c,p[i].lng);