//   Image Base class for CS4731: COMPUTER GRAPHICS
//   Copyright (C) 1999,2000  Mark R. Stevens
//
//   This program is free software; you can redistribute it and/or modify
//   it under the terms of the GNU General Public License as published by
//   the Free Software Foundation; either version 2 of the License, or
//   (at your option) any later version.
//
//   This program is distributed in the hope that it will be useful,
//   but WITHOUT ANY WARRANTY; without even the implied warranty of
//   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
//   GNU General Public License for more details.
//
//   You should have received a copy of the GNU General Public License
//   along with this program; if not, write to the Free Software
//   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.

#ifndef IMAGE
#define IMAGE

// Image class definition
class Image  {

 public:

  // constructors
  Image           (int            w, 
		   int            h);

  // The image dimensions
  int width        (               ) const;
  int height       (               ) const;

  // clears the image
  void clear       (unsigned char r, 
		    unsigned char g, 
		    unsigned char b);

  // set data
  void  writePixel (int           x,
		    int           y, 
		    float         z,
		    unsigned char r,
		    unsigned char g,
		    unsigned char b);

  // draw the image to the screen
  void draw        (               ) const;

 private:

  // image dimensions
  int w, h;

  // image data
  unsigned char *pixels;

  // z buffer
  float         *zbuffer;

};

#endif



