home *** CD-ROM | disk | FTP | other *** search
/ Boldly Go Collection / version40.iso / TS / 17A / DRWIN101.ZIP / TEXTSCR.CPP < prev    next >
C/C++ Source or Header  |  1991-08-02  |  2KB  |  54 lines

  1. #include <stdiostr.h>
  2.  
  3. #include "textscr.hpp"
  4. #include "scrutil.hpp"
  5.  
  6.  
  7.  
  8. TextScreen::TextScreen(WORD fill)      //constructor
  9. {
  10.   rows=cols=0;                         //initialize rows/columns
  11.   save=NULL;                           //initialize save pointer
  12.   video=(WORD far*)SCRSEG_COLOR;       //pretend its a color monitor
  13.   if (!setscrseg()) return;            //make sure text mode is ok
  14.   video=scrseg;                        //pointer to video RAM
  15.   rows=getsrows();                     //rows available on screen
  16.   cols=getscols();                     //columns available on screen
  17.   roco=rows*cols;                      //positions on screen
  18.   save=new WORD[roco];                 //get room for screen
  19.   Save();                              //save current screen
  20.   if (fill) Fill(fill);                //they want to fill it
  21. }   //TextScreen::TextScreen
  22.  
  23.  
  24. TextScreen::~TextScreen(void)          //destructor
  25. {
  26.   if (!save) return;                   //must have been graphics mode
  27.   Restore();                           //restore screen
  28.   delete save;                         //clear the new'd thing
  29. }   //TextScreen::~TextScreen
  30.  
  31.  
  32. void TextScreen::Fill(WORD fill)       //fill screen with attr:char
  33. {
  34.   for (int i=0;i<roco;i++) video[i]=fill;  //fill 'er up
  35. }   //TextScreen::Fill
  36.  
  37. void TextScreen::Save(void)
  38. {
  39.   if (!save) return;
  40.   row=getcrow();
  41.   col=getccol();
  42.   siz=getcsiz();
  43.   for (int i=0;i<roco;i++) save[i]=video[i];   //save screen
  44. }   //TextScreen::Save(void)
  45.  
  46. void TextScreen::Restore(void)         //restores the saved screen
  47. {
  48.   if (!save) return;                   //must have been graphics mode
  49.   for (int i=0;i<roco;i++) video[i]=save[i];   //restore screen
  50.   setcpos(row,col);
  51.   setcsiz(siz);
  52. }   //TextScreen::Restore
  53.  
  54.