% This file was converted from HTML to LaTeX with Nathan Torkington's
% html2latex program
% Version 0.9b
\chapter{Graphics Concepts}

There are a few concepts that you need to know about before we dive 
into the language itself.  These concepts are the concepts PostScript 
uses to describe and manipulate images on a page.  There are really 
only a few.

\begin{description}

\item[{\bf Device Space}]
This is the coordinate space understood by the printer hardware.  This 
coordinate system is typically measured in terms of the device's 
resolution.  There is really nothing else that can be said about this 
space, as PostScript programs are typically not expressed using it.

\item[{\bf User Space}]
This is the coordinate system used by PostScript programs to describe 
the location of points and lines.  User space is essentially the same 
as the first quadrant of the standard coordinate system used in high 
school math classes.  Point (0, 0) is in the lower left corner.  
Coordinates are real numbers, so there is no set resolution in user 
space.  The interpreter automatically converts user space coordinates 
to device space.

\item[{\bf Current Transformation Matrix}]
The transformation of user space coordinates to device space 
coordinates is done through the current transformation matrix.  This 
matrix is a three by three matrix that allows the user to rotate, 
scale, and translate the entire user space within the device space.  
This is the source of a lot of PostScript's power, as will be 
demonstrated later.

\item[{\bf Path}]
A path is a collection of (possibly disjoint) line segments and curves 
arranged on the page.  The path does not describe actual ink on the 
paper; it merely describes an imaginary tracing over the page.  There 
are operators which allow the user to draw ink along the path 
(\code{stroke}), fill an enclosed path with ink (\code{fill}), or clip 
out all future images that are outside the path (\code{clip}).

\item[{\bf Current Path}]
This is the path that the PostScript program is creating at the 
moment.  The current path is assembled piece by piece.

\item[{\bf Clipping Path}]
The PostScript rendering system will ignore any part of a line 
segment, curve, or bitmap that extends outside a certain region; it 
will only draw the parts of those elements which are within the 
region.  The region is described by a path called the clipping path.  
The clipping path is usually a rectangle about a quarter of an inch in 
from the edge of the page, but it can easily be set by the user to an 
arbitrary path.

\item[{\bf Graphics State}]
This is a collection of various settings that describe the current 
state of the graphics system.  Things like the current path, the 
current font, and the current transformation matrix make up the 
graphics state.  Often, a program will need to temporarily save a 
graphics state to be used later.  There are a couple of ways of doing 
this, but the easiest is to push the state onto a special graphics 
state stack and pop it back later.  This can be accomplished with the 
\code{gsave}, and \code{grestore} operators.
\end{description}

