Documentation for the CMUgraphics package is found in Manual.txt.

Release notes for Version 1.5.0 ("CMUgraphics Lite")
----------------------------------------------------
Firstly, this will be the final release of the 1.x version of 
CMUgraphics, aside from any necessary bug-fixes.  All further 
development will be focused on the 2.x version.

That said, this version contains a number of significant
improvements (which amazingly, were all performed over a two
day period).  Overall, very little of the actual external 
library interfaces has changed.  Most programs should 
recompile with no or at most few changes.  Some changes will
be required if you want to take advantage of some of the
new capabilities.  Things that have changes that might
affect existing programs:

	- The library is now distributed in two forms, a binary 
	  release and a source release.  

	  This was prompted by the fact that I have been handling
 	  an immense amount of e-mail from people who have
	  difficulties compiling the package.  

	  The binary release is intended to be used by
  	  individuals only interested in simply using the
 	  library. 

	  The source library is for those who are interested in
	  personal edification, making modifications or
	  improvements, and optimization (the binary release was 	 
	  optimized to run on all x86 processors, so if you have
	  a specific target platform you may wish to rebuild from
	  the source).

	- As part of the move to separate binary and source
   	  releases many of the headers have been merged for
	  simplicity.  

	  Now you need only include CMUgraphics.h in your
	  programs to get started.  You will also need to 
	  make sure that colors.h is in the search path (which
	  it should be by default).


	- Optional parameters on some functions (such as
 	  DrawLine, and DrawBezier) have be eliminated.
	  They never were used, so this should not affect any
	  existing programs.


	- Support for printing was eliminated.  This has never
	  worked for some people, and the problem could not be
	  tracked down.  However, support for saving images has
 	  been added to offset this.  This is discussed further 
	  below.


	- DrawBezier has been renamed to DrawBezierSpline.  This
	  was motivated by the introduction of a second spline
	  drawing function, see below for more details.


	- The optional imagetype parameter on the image 
 	  constructor and image.Open *is no longer optional*.
	  This is because support for PNG images has been added
	  and JPEG is no longer the default.  See below for more
	  information.


	- The error reporting system has changed slightly to be
	  more flexible.  By default all error messages are 
	  sent to cerr, but it is also possible to send error
	  messages to a file called "error.txt" (useful when
	  the console is disabled), and to have exceptions 
	  thrown on errors (allowing for possible recovery).
	  For more information look at the error class in
	  CMUgraphics.h


	- At this time there is no Borland version of the 1.5.0
	  library.  This is because I currently do not have
	  access to a Borland compiler.

The following improvements have been made to the library:

	- There are two different binary releases, console, and
	  noconsole.  The later allows for users to create
	  programs that do not have a console window hanging 
	  about.


	- Support for Catmull-Rom Splines has been added.
	  Catmull-Rom splines have slightly different 
	  properties than Bezier Splines.  I personally like 
	  them better.  See manual.txt and Foley, et al for 
	  more details.  


	- This version now supports the PNG image format.  PNG
	  is a lossless image format that supports alpha channels
	  and transparency.  GIF images will never be supported
	  due to an abuse of the patent system.  E-mail if
	  you really want to know the gritty details.

	  Alpha channels and transparency only work when PNG
	  images are *not* scaled.  The scaling routines will
	  ignore them.  


	- In addition to loading PNG images, it is now possible
	  to save image objects as JPEG and PNG files.  PNG 
	  images will generally be larger, but will be of better
	  quality if that is necessary.  This capability is 
	  intended to replace the broken printing support.


	- A small bug in the window handler has been fixed,
	  so that closing a graphics window will do the right
	  thing.


	- Finally, the internals of the library have been 
	  significantly cleaned up.  The most obvious change
	  is that the windowinput class was replaced with the
	  a STL map, and the input queues have been replaced with
	  their STL equivalents.  Most other changes revolve
	  around fixing some of the stupid programming idioms
	  that I used when I wrote the bulk of the library two
 	  years ago. 

This release should be pretty clean overall, but there might
be a few bugs lurking in the new functionality.  Send
bug reports to gw2@andrew.cmu.edu.

Release notes for Version 1.2 of the package
--------------------------------------------
Due to some name conflicts, graphics.h has been renamed to CMUgraphics.h
(and graphics.cpp, CMUgraphics.cpp)

Some constants have been renamed (from version 1.1):

	L_CLICK -> LEFT_CLICK
	R_CLICK -> RIGHT_CLICK
	LEFT    -> LEFT_BUTTON
	RIGHT   -> RIGHT_BUTTON

Also, the default destructor behavior of the window object has 
changed.  If a window is the last window object on screen, it 
will now not disappear until the mouse has been clicked in the 
window.  This behavior can be changed using the SetWaitClose 
function described in "Manual.txt".

With this release, the source for each compiler is the same; 
compiler differences are resolved in the file version.h.
An example of the use of this file is if you're using
Metrowerks version 3, you need to uncomment the following #define 
	#define __MW_CODEWARRIOR3__
and comment out this one
	#define __MW_CODEWARRIOR4__


Some other notes on using the package follow:
---------------------------------------

Demo.cpp is included in the source code for the project and
exercises virtually all of the member functions in the CMUgraphics 
package.  Also included in the graphics folder is House.cpp which 
is more emblematic of a first assignment's solution.  In Metrowerks 
CodeWarrior, to compile House.cpp instead of Demo.cpp, drag it into 
the project window and removeDemo.cpp from the project.  In Microsoft 
Visual C++, remove Demo.cpp from the project and then go to the 
Project menu and select the "Add to Project" submenu and finally 
select files.  Then use the standard file dialog to locate and add 
House.cpp.  In Borland, drag House.cpp into the project window and 
remove Demo.cpp from the project.

-----------------------------------------------------------------

The demo makes use of an ostringstream which is fairly new to the C++ 
Standard and supersedes the older ostrstream.  If your
compiler does not support ostringstreams, e.g., it complains
about the #include <sstream> statement or the declaration of the
ostringstream, you should do the following:

replace
        #include <sstream>
with
        #include <strstream.h>

and replace every declaration of output (there are five)
        ostringstream output;
with
        ostrstream output;

-----------------------------------------------------------------
Notes for Borland users:  the library and include paths are currently 
set to c:\bc5\lib and c:\bc5\include.  If your standard
libraries are located in a different directory, you will have to
right-click the top-level project node, select Edit Local Options
and change the paths appropriately.

Once you compile the project, you'll notice many warnings are
generated.  All can be safely ignored; if you figure out how to 
suppress them, send mail to gw2@andrew.cmu.edu.
