Graphics State
We have learned that PostScript differentiates between constructing a path and painting that path.
In this chapter we are mentioning a few internal graphic states that PostScript keeps track of that effect the resulting marks on the paper.
Almost all state variables have a pair of operators associated with them. One that set the value, the other to get the value.
setgray / currentgray
To influence the grayness with which paths are stroked use the setgray
operator. It takes a single operand, a value between 0
and 1
. Black corresponds to 0
, white corresponds to 1
.
Below you see the same line stroked with different levels of gray.
setlinewidth / currentlinewidth
To influence the thickness with which paths are stroked use the setlinewidth
operator. Just like the setgray
operator, setlinewidth
takes a single operand, a measure how thick the stroked line should be.
Below you see the same line stroked with different thickness levels.
setlinecap / currentlinecap
To influence how the ends of lines are capped when stroked use the setlinecap
operator. It takes a single operand. Its value determines the cap.
operand | cap |
---|---|
0 | butt |
1 | round |
2 | square |
setlinejoin / currentlinejoin
To influence how lines are joined when stroked use the setlinejoin
operator. Just like the setlinecap
operator, setlinejoin
takes a single operand. Its value determines how to join lines.
operand | join |
---|---|
0 | miter |
1 | round |
2 | bevel |
The miter join has some other parameters associated with it. We will let the reference tell you about them.
gsave / grestore
It will probably not surprise you that the graphics state is maintained in a stack as well, the graphics stack.
If you want to revert to a graphics stack after you have stroked a few paths, you can use gsave
to push onto the graphics stack, and grestore
to return to it.
Exercises
- Draw your house in a different shade of gray.