home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
PROG_C
/
WINCPP.ZIP
/
WBUFF.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1994-01-22
|
2KB
|
91 lines
#include "window.h"
WindowBuffer::WindowBuffer()
{
RowSize = ColSize = 0;
Buffer = NULL;
}
WindowBuffer::WindowBuffer(const WindowBuffer &wb)
{
if (wb.Buffer == NULL) {
RowSize = ColSize = 0;
Buffer = NULL;
}
RowSize = wb.RowSize;
ColSize = wb.ColSize;
Buffer = new Cell[RowSize * ColSize];
memcpy(Buffer, wb.Buffer, RowSize*ColSize*sizeof(Cell));
if (Buffer == NULL)
fprintf(stderr, "Unable to allocate buffer space\n");
}
WindowBuffer::~WindowBuffer()
{
delete Buffer;
}
void WindowBuffer::SetSize(int rows, int cols)
{
RowSize = rows;
ColSize = cols;
if (Buffer != NULL)
delete Buffer;
Buffer = new Cell[rows * cols];
if (Buffer == NULL)
fprintf(stderr, "Unable to allocate buffer space\n");
}
void WindowBuffer::Fill(uchar attr, uchar c)
{
if (Buffer == NULL)
return;
else {
int row, col;
for (row=0; row<RowSize; row++)
for (col=0; col<ColSize; col++)
Buffer[row*ColSize+col].Put(attr, c);
}
}
void WindowBuffer::Put(int row, int col, uchar attr, uchar c)
{
if (Buffer == NULL)
return;
else
Buffer[row*ColSize+col].Put(attr, c);
}
void WindowBuffer::Put(int row, int col, short word)
{
if (Buffer == NULL)
return;
else
Buffer[row*ColSize+col].Put(word);
}
void WindowBuffer::Get(int row, int col, uchar &attr, uchar &c)
{
if (Buffer == NULL)
return;
else
Buffer[row*ColSize+col].Get(attr, c);
}
short WindowBuffer::Get(int row, int col)
{
if (Buffer == NULL)
return 0;
else
return Buffer[row*ColSize+col].Get();
}