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.
- 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.
- 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.
- 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.
- 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
(stroke), fill an enclosed
path with ink (fill), or clip
out all future images that are outside the path
(clip).
- Current Path
- This is the path that the PostScript program is creating at the
moment. The current path is assembled piece by piece.
- 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.
- 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
gsave, and
grestore operators.