//*************************************************
//
// image.h - Declares a container class for groups of
//	     graphical shapes
//
// Written by: H. Welch 9/10/98
//
// Modified by: H. Welch 9/14/98
//		Switched to storage of pointers
//
// Modified by: H. Welch 9/2/99
//		Changed Expose to ReDraw to avoid name
//		conflicts with X
//
// Modified by: H. Welch 9/14/99
//		Removed C style void parameters
//
// Modified by: H. Welch/4/2001
//		Added const to Redraw and Write to set a proper example
//
//*************************************************

#ifndef IMAGE_H
#define IMAGE_H

#include <iostream.h>
#include "shape.h"

class image {

private:
	// You must decide which data objects are appropriate
	
public:
	image();				// Constructor
	image(const image& im);			// Copy constructor
	image& operator= (const image& r);	// Assignment =
	
	~image();				// Destructor
	
	// Methods for management
	void Add(shape* sh_ptr);		// Add shape to image

	// Methods for I/O
	void ReDraw() const;			// Draw all the shapes in the image
	void Write(ostream& ostr) const;	// Output image shapes to file
	void Read(istream& istr);		// Input image shapes from file

	// Methods for changing an image
	void Xform();				// Transform image shapes
	void Zoom();				// Zoom the image
	void Unzoom();				// Unzoom the image
	void Reset();				// Reset the image
	void Erase();				// Erase the image
	
};
#endif
