home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PROG_C / WINCPP.ZIP / WBUFF.CPP < prev    next >
C/C++ Source or Header  |  1994-01-22  |  2KB  |  91 lines

  1. #include "window.h"
  2.  
  3. WindowBuffer::WindowBuffer()
  4. {
  5.     RowSize = ColSize = 0;
  6.     Buffer = NULL;
  7. }
  8.  
  9.  
  10. WindowBuffer::WindowBuffer(const WindowBuffer &wb)
  11. {
  12.     if (wb.Buffer == NULL) {
  13.         RowSize = ColSize = 0;
  14.         Buffer = NULL;
  15.     }
  16.     RowSize = wb.RowSize;
  17.     ColSize = wb.ColSize;
  18.     Buffer = new Cell[RowSize * ColSize];
  19.     memcpy(Buffer, wb.Buffer, RowSize*ColSize*sizeof(Cell));
  20.     if (Buffer == NULL)
  21.         fprintf(stderr, "Unable to allocate buffer space\n");
  22. }
  23.  
  24.  
  25. WindowBuffer::~WindowBuffer()
  26. {
  27.     delete Buffer;
  28. }
  29.  
  30.  
  31. void WindowBuffer::SetSize(int rows, int cols)
  32. {
  33.     RowSize = rows;
  34.     ColSize = cols;
  35.     if (Buffer != NULL)
  36.         delete Buffer;
  37.     Buffer = new Cell[rows * cols];
  38.     if (Buffer == NULL)
  39.         fprintf(stderr, "Unable to allocate buffer space\n");
  40. }
  41.  
  42.  
  43. void WindowBuffer::Fill(uchar attr, uchar c)
  44. {
  45.     if (Buffer == NULL)
  46.         return;
  47.     else {
  48.         int row, col;
  49.  
  50.         for (row=0; row<RowSize; row++)
  51.             for (col=0; col<ColSize; col++)
  52.                 Buffer[row*ColSize+col].Put(attr, c);
  53.     }
  54. }
  55.  
  56.  
  57. void WindowBuffer::Put(int row, int col, uchar attr, uchar c)
  58. {
  59.     if (Buffer == NULL)
  60.         return;
  61.     else
  62.         Buffer[row*ColSize+col].Put(attr, c);
  63. }
  64.  
  65.  
  66. void WindowBuffer::Put(int row, int col, short word)
  67. {
  68.     if (Buffer == NULL)
  69.         return;
  70.     else
  71.         Buffer[row*ColSize+col].Put(word);
  72. }
  73.  
  74.  
  75. void WindowBuffer::Get(int row, int col, uchar &attr, uchar &c)
  76. {
  77.     if (Buffer == NULL)
  78.         return;
  79.     else
  80.         Buffer[row*ColSize+col].Get(attr, c);
  81. }
  82.  
  83.  
  84. short WindowBuffer::Get(int row, int col)
  85. {
  86.     if (Buffer == NULL)
  87.         return 0;
  88.     else
  89.         return Buffer[row*ColSize+col].Get();
  90. }
  91.