// Computergraphik I // Prof. Dr. Juergen Doellner // Sommersemester 2001 // // Rahmenprogramm fuer Aufgabenzettel 3 // Stephan Brumme, 702544 // last changes: May 12, 2001 #include "cgraster.h" #include #include "gl/gl.h" CGRaster::CGRaster(int width, int height) { // speichern von width und height // in Objektvariablen // überprüfen, ob Ausmaße vernünftig sind if (width <= 0 || width > MAXWIDTH) width = MAXWIDTH; if (height <= 0 || height > MAXHEIGHT) height = MAXHEIGHT; m_nWidth = width; m_nHeight = height; // anlegen des bool-Arrays m_arBuffer = new bool[m_nWidth*m_nHeight]; // loeschen des Arrays clear(); } CGRaster::~CGRaster() { // Rasterspeicher freigeben delete [] m_arBuffer; } int CGRaster::width() const { return m_nWidth; } int CGRaster::height() const { return m_nHeight; } void CGRaster::clear() { // setzten aller Werte des bool-Arrays auf false memset(m_arBuffer, false, sizeof(bool)*m_nWidth*m_nHeight); } bool CGRaster::getPixel(int x, int y) const { // liegen Koordinaten innerhalb des Rasters ? if (x<0 || x>=m_nWidth || y<0 || y>=m_nHeight) return false; // Punkt zurückgeben return m_arBuffer[x+y*m_nWidth]; } void CGRaster::setPixel(int x, int y) { // liegen Koordinaten innerhalb des Rasters ? if (x<0 || x>=m_nWidth || y<0 || y>=m_nHeight) return; // Punkt setzen m_arBuffer[x+y*m_nWidth] = true; } void CGRaster::draw() const { // zeichnen aller Pixel, die gesetzt sind // Umgebung sichern glPushAttrib(GL_CURRENT_BIT); // schwarz glColor3f(0.0, 0.0, 0.0); // alle Punkte des Rasters durchlaufen int x,y; for (x=0; x