diff options
author | Alec Murphy <alec@checksum.fail> | 2017-07-15 23:26:30 -0400 |
---|---|---|
committer | Alec Murphy <alec@checksum.fail> | 2017-07-15 23:26:30 -0400 |
commit | a56991c90e009a3c81a001b8fbd0acb69f5a282a (patch) | |
tree | 1b8152543095ca831ac5b2c45cc1e0d1e65f02ba | |
parent | 6be0ba955f5a0df3cc6facc7b6583b4513e049df (diff) |
Fix some ANSI bg/fg attributes
-rwxr-xr-x | Load.HC | 61 |
1 files changed, 52 insertions, 9 deletions
@@ -108,6 +108,8 @@ U0 TempleTermSession(I64 sock) DCFill(tt_buf,tt_cur_bg); tt_buf->color=tt_cur_fg; + I64 rv; + I64 ansi_pos=0; I64 rx_size=1024; I64 i=0; @@ -638,7 +640,7 @@ U0 TempleTermSession(I64 sock) DCDel(sr_dc); break; - case 'T': + case 'T': StrPrint(sr_buf, ansi_buf); StrFirstOcc(sr_buf,"S")[0]=0; sr_dc=DCNew(640,(tt_sr_y2*8)-(tt_sr_y1*8)); @@ -648,6 +650,24 @@ U0 TempleTermSession(I64 sock) break; case 'm': + + if (StrFind(";7m",ansi_buf)) + { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv; + if (tt_cur_bg>7) { tt_cur_bg-=8; }; + }; + if (StrFind("[7m",ansi_buf)) + { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv; + if (tt_cur_bg>7) { tt_cur_bg-=8; }; + }; + if (StrFind("[7;",ansi_buf)) + { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv; + if (tt_cur_bg>7) { tt_cur_bg-=8; }; + }; + if (StrFind(";7;",ansi_buf)) + { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv; + if (tt_cur_bg>7) { tt_cur_bg-=8; }; + }; + if (StrFind(";1m",ansi_buf)) { bold=8; }; if (StrFind("[1m",ansi_buf)) { bold=8; }; if (StrFind("[1;",ansi_buf)) { bold=8; }; @@ -706,7 +726,11 @@ U0 TempleTermSession(I64 sock) if (StrFind("107",ansi_buf)) { tt_cur_bg=bold+7; }; if (StrFind("[0m",ansi_buf)) { tt_cur_bg=BLACK; tt_cur_fg=WHITE; }; - if (StrFind("[7m",ansi_buf)) { tt_cur_bg=WHITE; tt_cur_fg=BLACK; }; + + if (StrFind("[7m",ansi_buf)) + { tt_cur_fg=rv; tt_cur_fg=tt_cur_bg; tt_cur_bg=rv; + if (tt_cur_bg>7) { tt_cur_bg-=8; }; + }; break; @@ -755,6 +779,8 @@ U0 TempleTermSession(I64 sock) ansi_buf[ansi_pos-1]=0; tt_cur_x=Str2I64(ansi_buf+k); tt_cur_y=Str2I64(ansi_buf+1); + tt_cur_fg=WHITE; + tt_cur_bg=BLACK; }; break; @@ -810,7 +836,15 @@ U0 TempleTermSession(I64 sock) }; break; + // line wrapping doesn't seem to matter... + case 'h': + break; + case 'l': + break; + default: + //StrPrint(sr_buf, "Code: %02X", ansi_buf[ansi_pos-1]); + //PopUpOk(sr_buf); break; }; @@ -847,6 +881,10 @@ U0 TempleTermSession(I64 sock) if(tt_cur_x<0) { tt_cur_x=0; }; break; case 10: + // change back to default attrs when we line feed? + tt_cur_bg=BLACK; + tt_cur_fg=WHITE; + tt_cur_y++; break; case 13: @@ -867,6 +905,10 @@ U0 TempleTermSession(I64 sock) if(tt_cur_x==Fs->parent_task->win_width) { tt_cur_x-=Fs->parent_task->win_width; + // change back to default attrs when we line wrap? + tt_cur_bg=BLACK; + tt_cur_fg=WHITE; + tt_cur_y++; }; break; @@ -953,6 +995,12 @@ U0 TempleTermSession(I64 sock) Sleep(1); }; + Free(rz_ibuf); + Free(rz_filename); + Free(rz_shortfn); + Free(rx_buf); + Free(ad_seq); + Free(sr_buf); PostMsg(Fs->parent_task,MSG_KEY_DOWN_UP,REMOTE_Q,0); } @@ -1118,9 +1166,6 @@ I64 TempleTermConnect(U8 *host, I64 port=23) }; - Free(rz_shortfn); - Free(rz_filename); - Free(rz_ibuf); RegWrite("WalnutLabs/TempleTerm", "Fs->parent_task->display_flags=%d;\n", Fs->display_flags); RegAppend("WalnutLabs/TempleTerm", "Fs->parent_task->win_left=%d;\n", @@ -1137,10 +1182,10 @@ I64 TempleTermConnect(U8 *host, I64 port=23) Fs->win_height); Kill(session); close(sock); - Fs->draw_it=NULL; + PopUpOk("Connection closed."); + Fs->draw_it=NULL; DCFill; SndRst; - PopUpOk("Connection closed."); MenuPop; return 0; } @@ -1152,8 +1197,6 @@ I64 TempleTermConnect(U8 *host, I64 port=23) }; } - - U0 Run() { res=0; |