/*******************************************************************/ // "Меркурий"-"Правда" - open source переводчик // распространяется в соответсвии с лицензией GNU v 2.0 // // библиотека интерфейса с текстовым терминалом (OS/2 & M$-Windows) // Анисимов Д.В. сегодня /*******************************************************************/ # include # include # include # include # include # define max(a,b) (((a) > (b)) ? (a) : (b)) # define min(a,b) (((a) < (b)) ? (a) : (b)) char *Symbol ; uchar *Color ; class t_Save_Screen { long *stek ; // ╖═╞╝╛╗╜═╜╗╔ ╝║╚═─│╔╘ ▄╙·═╜═ short l_stek ; // ╓╚╗╜╜═ ╛═──╗╒═ Stek short j_stek ; // √╙═╖═│╔╚▀ ╞╝─╚╔╓╜╔ё╝ ─╒╝║╝╓╜╝ё╝ ║═╘│═ public: t_Save_Screen( short l ); ~t_Save_Screen( void ); void save ( short y1, short x1, short y2, short x2 ); void save_rame( short y1, short x1, short y2, short x2 ); void restore( void ); } ; short Cur_X=0,Cur_Y=0 ; short n_Line,n_Col ; t_Save_Screen Save( 10000 ) ; void s_rame( short y1, short x1, short y2, short x2, uchar f ); void s_quadro( short y1, short x1, short y2, short x2, uchar f ); /***************************************************************************/ void s_begin_schone( void ) { short i ; n_Line=50 ; n_Col =78 ; Symbol=(char *)Calloc( n_Line*n_Col,sizeof(char) ); Color =(uchar *)Calloc( n_Line*n_Col,1 ); for( i=0 ; i>4 ); } //if( (f&0x80)!=0 ) attr_on ( A_BLINK,NULL ); // else attr_off( A_BLINK,NULL ); //if( (f&0x08)!=0 ) attr_on ( A_BOLD ,NULL ); // else attr_off( A_BOLD ,NULL ); putch( Symbol[r+x] ); f1=f ; } } gotoxy( 1+Cur_X,1+Cur_Y ); } /* ----------------------------------------------------------------------- */ char Screen[ 16000 ]; void s_redraw( void ) { short x,y,r,r1 ; for( y=0 ; y