Annotation of sbbs/sbbs3/ctrl/previewformunit.cpp, revision 1.1.1.1

1.1       root        1: //---------------------------------------------------------------------------
                      2: 
                      3: #include <vcl.h>
                      4: #pragma hdrstop
                      5: 
                      6: #include "MainFormUnit.h"
                      7: #include "PreviewFormUnit.h"
                      8: //---------------------------------------------------------------------------
                      9: #pragma package(smart_init)
                     10: #pragma resource "*.dfm"
                     11: TPreviewForm *PreviewForm;
                     12: //---------------------------------------------------------------------------
                     13: __fastcall TPreviewForm::TPreviewForm(TComponent* Owner)
                     14:        : TForm(Owner)
                     15: {
                     16:     Width=MainForm->SpyTerminalWidth;
                     17:     Height=MainForm->SpyTerminalHeight;
                     18:     Terminal = new TEmulVT(this);
                     19:     Terminal->Parent=this;
                     20:     Terminal->Align=alClient;
                     21:     Terminal->Rows=MAX_ROW;
                     22:     Terminal->Font=MainForm->SpyTerminalFont;
                     23:     Terminal->AutoWrap=true;
                     24:     ActiveControl=Terminal;
                     25: }
                     26: //---------------------------------------------------------------------------
                     27: __fastcall TPreviewForm::~TPreviewForm()
                     28: {
                     29:        delete Terminal;
                     30: }
                     31: 
                     32: #define ANSI_ESC "\x1b["
                     33: 
                     34: //---------------------------------------------------------------------------
                     35: void __fastcall TPreviewForm::FormShow(TObject *Sender)
                     36: {
                     37:        char str[128];
                     38: 
                     39:        Caption="Previewing " + Filename.UpperCase();
                     40: 
                     41:     Terminal->Clear();
                     42: 
                     43:     FILE* fp=fopen(Filename.c_str(),"rb");
                     44: 
                     45:     if(fp==NULL)
                     46:            return;
                     47: 
                     48:     int ch;
                     49:        while(!feof(fp)) {
                     50:        ch=fgetc(fp);
                     51:         if(ch==EOF)
                     52:                break;
                     53:                if(ch==1) { /* ctrl-a */
                     54:                        ch=fgetc(fp);
                     55:                        if(ch==EOF)
                     56:                                break;
                     57:                        switch(toupper(ch)) {
                     58:                                case 'A':
                     59:                                        sprintf(str,"\1");
                     60:                                        break;
                     61:                                case '<':
                     62:                                        sprintf(str,"\b");
                     63:                                        break;
                     64:                                case '>':
                     65:                                        sprintf(str,ANSI_ESC"K");
                     66:                                        break;
                     67:                                case '[':
                     68:                                        sprintf(str,"\r");
                     69:                                        break;
                     70:                                case ']':
                     71:                                        sprintf(str,"\n");
                     72:                                        break;
                     73:                                case 'L':
                     74:                                        sprintf(str,ANSI_ESC"2J");
                     75:                                        break;
                     76:                                case '-':
                     77:                                case '_':
                     78:                                case 'N':
                     79:                                        sprintf(str,ANSI_ESC"0m");
                     80:                                        break;
                     81:                                case 'H':
                     82:                                        sprintf(str,ANSI_ESC"1m");
                     83:                                        break;
                     84:                                case 'I':
                     85:                                        sprintf(str,ANSI_ESC"5m");
                     86:                                        break;
                     87:                                case 'K':
                     88:                                        sprintf(str,ANSI_ESC"30m");
                     89:                                        break;
                     90:                                case 'R':
                     91:                                        sprintf(str,ANSI_ESC"31m");
                     92:                                        break;
                     93:                                case 'G':
                     94:                                        sprintf(str,ANSI_ESC"32m");
                     95:                                        break;
                     96:                                case 'Y':
                     97:                                        sprintf(str,ANSI_ESC"33m");
                     98:                                        break;
                     99:                                case 'B':
                    100:                                        sprintf(str,ANSI_ESC"34m");
                    101:                                        break;
                    102:                                case 'M':
                    103:                                        sprintf(str,ANSI_ESC"35m");
                    104:                                        break;
                    105:                                case 'C':
                    106:                                        sprintf(str,ANSI_ESC"36m");
                    107:                                        break;
                    108:                                case 'W':
                    109:                                        sprintf(str,ANSI_ESC"37m");
                    110:                                        break;
                    111:                                case '0':
                    112:                                        sprintf(str,ANSI_ESC"40m");
                    113:                                        break;
                    114:                                case '1':
                    115:                                        sprintf(str,ANSI_ESC"41m");
                    116:                                        break;
                    117:                                case '2':
                    118:                                        sprintf(str,ANSI_ESC"42m");
                    119:                                        break;
                    120:                                case '3':
                    121:                                        sprintf(str,ANSI_ESC"43m");
                    122:                                        break;
                    123:                                case '4':
                    124:                                        sprintf(str,ANSI_ESC"44m");
                    125:                                        break;
                    126:                                case '5':
                    127:                                        sprintf(str,ANSI_ESC"45m");
                    128:                                        break;
                    129:                                case '6':
                    130:                                        sprintf(str,ANSI_ESC"46m");
                    131:                                        break;
                    132:                                case '7':
                    133:                                        sprintf(str,ANSI_ESC"47m");
                    134:                                        break;
                    135:                 case '.':
                    136:                 case ',':
                    137:                 case ';':
                    138:                        /* ignore delay codes */
                    139:                        continue;
                    140:                                default:
                    141:                     if(ch>=0x7f)       /* move cursor right x columns */
                    142:                         sprintf(str,ANSI_ESC"%uC",ch-0x7f);
                    143:                     else
                    144:                                                sprintf(str,"\1%c",ch);
                    145:                                        break;
                    146:                        }
                    147:             Terminal->WriteBuffer(str,strlen(str));
                    148:                }
                    149:                else
                    150:                        Terminal->WriteBuffer(&ch,1);
                    151:     }
                    152:     fclose(fp);
                    153: }
                    154: //---------------------------------------------------------------------------
                    155: void __fastcall TPreviewForm::FormClose(TObject *Sender,
                    156:       TCloseAction &Action)
                    157: {
                    158:     MainForm->SpyTerminalWidth=Width;
                    159:     MainForm->SpyTerminalHeight=Height;
                    160: 
                    161: }
                    162: //---------------------------------------------------------------------------
                    163: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.