Annotation of sbbs/sbbs3/ctrl/previewformunit.cpp, revision 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.