A 
pen-list% object maintains a list of 
pen%
 objects to avoid repeatedly creating pen objects. A 
pen%
 object in a pen list cannot be mutated.
A global pen list the-pen-list is created automatically.
Creates an empty pen list.
 | 
|   color : (is-a?/c color%) | 
|   width : (real-in 0 255) | 
|    | style |   | : |   | | (or/c 'transparent 'solid 'xor 'hilite |  |       'dot 'long-dash 'short-dash 'dot-dash |  |       'xor-dot 'xor-long-dash 'xor-short-dash |  |       'xor-dot-dash) |  
  |  
  | 
|   cap : (or/c 'round 'projecting 'butt) = 'round | 
|   join : (or/c 'round 'bevel 'miter) = 'round | 
 | 
|  → (or/c (is-a?/c pen%) #f) | 
|   color-name : string? | 
|   width : (real-in 0 255) | 
|    | style |   | : |   | | (or/c 'transparent 'solid 'xor 'hilite |  |       'dot 'long-dash 'short-dash 'dot-dash |  |       'xor-dot 'xor-long-dash 'xor-short-dash |  |       'xor-dot-dash) |  
  |  
  | 
|   cap : (or/c 'round 'projecting 'butt) = 'round | 
|   join : (or/c 'round 'bevel 'miter) = 'round | 
Finds a pen of the given specification, or creates one and adds it to
the list.  The arguments are the same as for creating a 
pen%
instance plus a cap and join style as for 
set-cap and
set-join. When 
color-name is provided, however, the return
value is 
#f when no color matching 
color-name can be
found in 
the-color-database.