Previous: setpes Up: ../plot79_s.html Next: setpis


SETPFI

       SUBROUTINE  SETPFI (PINDEX,ANGLE,HATCH)
 C$    (Set Polygon Fill Index)
 C$    Set the polygon fill index  parameters.  They are used  for
 C$    filling  polygons  subsequently  drawn  with  the   polygon
 C$    absolute/relative primitives  (PGNAx/PGNRx).  Polygons  are
 C$    filled with parallel lines at specified line spacings and a
 C$    single fixed  angle, and  if desired,  the filling  may  be
 C$    automatically repeated with the same line spacings but  the
 C$    angle incremented  by 90  degrees to  give a  cross-hatched
 C$    effect.
 C$
 C$    By   additionally   specifying   alternate   line   widths,
 C$    intensities,  styles,  and  colors,   it  is  possible   to
 C$    significantly extend the varieties of patterns available.
 C$
 C$    Eighty-five  (85)   predefined  patterns   are   available,
 C$    corresponding to fill indices  0..84, with overall  pattern
 C$    intensity increasing with  the pattern  index.  Fill  index
 C$    values larger than  84 can  be used  to construct  specific
 C$    shading patterns.
 C$
 C$    The line spacings are specified  by the digits of the  fill
 C$    index.  The digits taken from  left to right represent  the
 C$    spacing between adjacent lines of the pattern, measured  in
 C$    steps of 0.002 unit  in normalized device coordinate  (NDC)
 C$    space.  When  the  digits  are exhausted,  the  pattern  is
 C$    repeated cyclically.  Thus,  the digits in  the fill  index
 C$    631 represent the parallel  lines with NDC spacings  0.012,
 C$    0.006, 0.002, 0.012, 0.006, 0.002, etc.  Zero digits in the
 C$    fill  index  represent  zero  spacing,  and  are  therefore
 C$    ignored.   They  are   nevertheless  useful  for   defining
 C$    patterns whose indices  would otherwise  conflict with  the
 C$    built-in fill indices.
 C$
 C$    Fill index 0 corresponds to no polygon filling, and is  the
 C$    default value established at CORE initialization time.  The
 C$    other  built-in  fill  indices  1..84  are  constructed  by
 C$    repeating the twelve basic patterns in the following  table
 C$    seven times, each time halving the line spacing  parameter,
 C$    d, of the  previous group.  The  value of d  for the  first
 C$    group of twelve is 0.032, so that the closest lines in fill
 C$    indices 79..84 (which have spacing d/64, d/128) are 0.00025
 C$    NDC unit  apart.   On  typical raster  CRT  displays,  with
 C$    resolutions of 512 to 4096 scan lines, this is equal to  or
 C$    smaller than  one pixel  in  width, giving  solid  filling.
 C$    Because coordinate roundoff to pixel boundaries can  result
 C$    in blank raster lines or  missed pixels in a tight  shading
 C$    pattern, it is desirable to choose a line spacing which  is
 C$    about half  the  raster  spacing  in  order  to  get  solid
 C$    filling.
 C$
 C$      Fill Index       Spacing      Angle      Hatch
 C$    =============      =======      =====      =====
 C$          1               d            0         No
 C$          2               d           45         No
 C$          3               d           90         No
 C$          4               d          135         No
 C$          5               d            0        Yes
 C$          6               d           45        Yes
 C$          7             d,d/2          0         No
 C$          8             d,d/2         45         No
 C$          9             d,d/2         90         No
 C$         10             d,d/2        135         No
 C$         11             d,d/2          0        Yes
 C$         12             d,d/2         45        Yes
 C$    =============      =======      =====      =====
 C$
 C$    The subroutine arguments are:
 C$
 C$    PINDEX..........Polygon  style  fill   index,  an   INTEGER
 C$                    value in  the  range  0..MAXINT.   Negative
 C$                    values are  illegal  and will  generate  an
 C$                    error  message  with  the  current  polygon
 C$                    style left unchanged.  A 0 index suppresses
 C$                    polygon  filling,   and  is   the   default
 C$                    established at  CORE  initialization.   The
 C$                    ANGLE and  HATCH  parameters  are  recorded
 C$                    internally but  will  be  ignored  for  the
 C$                    built-in patterns with indices 0..84.  Note
 C$                    that trailing zeroes can  be appended to  a
 C$                    non-built-in fill  index  without  changing
 C$                    its  interpretation.   Thus,  for  example,
 C$                    fill indices 507,  570, 5070, 5700,  57000,
 C$                    etc.  would  give  spacings  of  5*0.002  =
 C$                    0.010 and 7*0.002 =  0.014 which could  not
 C$                    otherwise be  obtained  with the  index  57
 C$                    since  the  latter  is  used  to  select  a
 C$                    built-in pattern.
 C$
 C$    ANGLE...........Angle   (in   floating-point  degrees)   of
 C$                    shading  lines  measured   counterclockwise
 C$                    from the horizontal axis.
 C$
 C$    HATCH........... .FALSE. - No cross-hatching
 C$                     .TRUE.  - Cross-hatch polygon by repeating
 C$                               the pattern at ANGLE+90.0.
 C$    (26-JAN-82)