6.10 Shading

                         S H D P A T 

SHDPAT  selects  shading patterns  used by  routines such as
SHDCRV and AREAF.

The call is:  CALL SHDPAT (IPAT)               level 1, 2, 3

IPAT     is an integer between 0 and 17. The predefined pat-
         terns  are shown in appendix B.

                          M Y P A T

MYPAT defines a global shading pattern.

The call is:  CALL MYPAT (IANGLE, ITYPE, IDENS, ICROSS)
                                               level 1, 2, 3

IANGLE        is the angle of shading lines (0 - 179).
ITYPE         defines the type of shading lines:
        = 0   no shading lines.
        = 1   equidistant lines.
        = 2   double shading lines.
        = 3   triple shading lines.
        = 4   thick shading lines.
        = 5   dotted lines.
        = 6   dashed lines.
        = 7   dashed-dotted lines.
IDENS         defines  the  distance  between  shading lines
              (0: small distance, 9: big distance).
ICROSS        indicates  whether  shading  lines are hatched
              (0: not hatched, 1: hatched).

Examples:     The following calls to  MYPAT  show the prede-
              fined shading patterns used by SHDPAT:

  IPAT = 0:   CALL MYPAT (  0, 0, 0, 0)
  IPAT = 1:   CALL MYPAT ( 45, 1, 5, 0)
  IPAT = 2:   CALL MYPAT (150, 4, 5, 0)
  IPAT = 3:   CALL MYPAT (135, 1, 5, 0)
  IPAT = 4:   CALL MYPAT ( 45, 4, 5, 0)
  IPAT = 5:   CALL MYPAT ( 45, 1, 5, 1)
  IPAT = 6:   CALL MYPAT (135, 2, 1, 0)
  IPAT = 7:   CALL MYPAT ( 45, 4, 5, 1)
  IPAT = 8:   CALL MYPAT ( 30, 1, 4, 0)
  IPAT = 9:   CALL MYPAT ( 45, 2, 1, 1)
  IPAT = 10:  CALL MYPAT (  0, 1, 5, 1)
  IPAT = 11:  CALL MYPAT ( 45, 3, 1, 0)
  IPAT = 12:  CALL MYPAT ( 70, 4, 7, 0)
  IPAT = 13:  CALL MYPAT ( 45, 3, 1, 1)
  IPAT = 14:  CALL MYPAT (  0, 4, 5, 1)
  IPAT = 15:  CALL MYPAT ( 45, 2, 1, 0)
  IPAT = 16:  CALL MYPAT (  0, 1, 0, 0)
  IPAT = 17:  CALL MYPAT (  0, 5, 5, 0)

                         N O A R L N 

With the routine  NOARLN  the outlines of shaded regions can
be suppressed.

The call is:  CALL NOARLN                      level 1, 2, 3

6.11 Attribute Cycles

The attributes line style, colour and shading pattern can be
changed  automatically  by routines such as  CURVE,  SHDCRV,
BARS and PIEGRF according to a predefined cycle.

Line styles:  SOLID,  DOT, DASH, CHNDSH, CHNDOT, DASHM, DOTL
              and DASHL.
Colours:      WHITE/BLACK, RED, GREEN, YELLOW, BLUE, ORANGE,
              CYAN and MAGENTA.
Shading:      Pattern numbers from 0 to 17.

The following subroutines allow the redefining of cycles.

                         L I N C Y C 

LINCYC changes the line style cycle.

The call is:  CALL LINCYC (INDEX, ITYP)        level 1, 2, 3

INDEX         is an index between 1 and 30.
ITYP          is an integer between  0 and 7  containing the
              line style  (0 = SOLID,   1 = DOT,   2 = DASH,
              3 = CHNDSH,  4 = CHNDOT,  5 = DASHM, 6 = DOTL,
              7 = DASHL).

                         C L R C Y C 

CLRCYC changes the colour cycle.

The call is:  CALL CLRCYC (INDEX, ICLR)        level 1, 2, 3

INDEX         is an index between 1 and 30.
ICLR          is a colour number (see SETCLR).

                         P A T C Y C 

PATCYC changes the shading pattern cycle.

The call is:   CALL PATCYC (INDEX, IPAT)       level 1, 2, 3

INDEX          is an index between 1 and 30.
IPAT           is a pattern  number  between  0 and 17 or is
               determined by the formula  
               IANGLE * 1000 + ITYPE * 100 + IDENS * 10 +
                                                      ICROSS
               with the parameters described in MYPAT.

6.12 Base Transformations

The following  subroutines  create  a transformation  matrix
that  affects plot vectors  contained  within page  borders.
Vectors may be scaled, shifted and rotated and the transfor-
mations can be combined in any order.

                         T R F S H F 

TRFSHF affects the shifting of plot vectors.

The call is:    CALL TRFSHF (NXSHFT, NYSHFT)   level 1, 2, 3

NXSHFT, NYSHFT  are plot coordinates  that define the magni-
                tude of shifting in the X- and Y-direction.

                         T R F S C L 

TRFSCL affects the scaling of plot vectors.
 
The call is:  CALL TRFSCL (XSCL, YSCL)         level 1, 2, 3

XSCL, YSCL    are  scaling factors  for the  X- and Y-direc-
              tion.

                         T R F R O T 

TRFROT affects the rotation of plot vectors around a point.

The call is:  CALL TRFROT (XANG, NX, NY)       level 1, 2, 3

XANG          is the rotation angle measured in degrees in a
              counter-clockwise direction.
NX, NY        are  the  plot  coordinates  of  the  rotation
              point.

                         T R F R E S 

TRFRES resets base transformations.

The call is:  CALL TRFRES                      level 1, 2, 3

6.13 Shielded Regions

This section  describes how  to protect  regions  from being
overwritten.  Shielded regions can be defined  automatically
by  DISLIN  or explicitly by the user.  Shielded regions are
stored  in a  buffer  which can  then be manipulated  by the
user.

                         S H I E L D 

SHIELD  selects shielded regions which are set automatically
by DISLIN.

The call is:  CALL SHIELD (CAREA, CMODE)       level 1, 2, 3

CAREA         is a character string defining the regions:
  = 'MESSAG'  is used for text and numbers plotted by MESSAG
              and NUMBER.
  = 'SYMBOL'  will shield symbols.
  = 'BARS'    will shield bars plotted by BARS.
  = 'PIE'     will shield pie segments plotted by PIEGRF.
  = 'LEGEND'  will protect  legends.  All legend  attributes
              should be set before calling CURVE because the
              shielded region of a legend is defined by CUR-
              VE.  If there  is no legend  position  defined
              with  LEGPOS,  CURVE assumes  that the  legend
              lies  in the  upper right  corner  of the axis
              system.
CMODE         is a character string defining a status:
  = 'ON'      means that  the regions  defined above will be
              written  to the  shielding buffer and are pro-
              tected.
  = 'OFF'     means that regions will not be  written to the
              shielding  buffer.   Regions  that  are  still
              stored in the buffer will be shielded.
  = 'DELETE'  removes regions from the shielding buffer.
  = 'RESET'   is a  combination  of   'OFF'  and   'DELETE'.
              Regions are removed from and will not be writ-
              ten to the shielding buffer. To save computing
              time, this command should always be used  when
              shielding is no longer needed.
  = 'NOVIS'   The shielding of regions held in the shielding
              buffer is disabled. This is not valid for  re-
              gions newly written to the buffer.
  = 'VIS'     Disabled  regions will be  protected.  This is
              the default value for regions newly written to
              the buffer.

The following routines set user-defined regions:

The calls are: 

     CALL SHLREC  (NX, NY, NW, NH)          for rectangles
     CALL SHLRCT  (NX, NY, NW, NH, THETA)   for rotated 
                                            rectangles
     CALL SHLCIR  (NX, NY, NR)              for circles
     CALL SHLELL  (NX, NY, NA, NB, THETA)   for rotated
                                            ellipses
     CALL SHLPIE  (NX, NY, NR, ALPHA, BETA) for pie segments
     CALL SHLPOL  (NXRAY, NYRAY, N)         for polygons.

NX, NY       are  plot coordinates  of the upper left corner
             or the centre point.
NW, NH       are the width and height of rectangles.
NR, NA, NB   are radii in plot coordinates.
THETA        is a  rotation  angle  measured in degrees in a
             counter-clockwise direction.
ALPHA, BETA  are starting and ending angles for pie segments
             measured  in  degrees  in  a  counter-clockwise
             direction.
NXRAY, NYRAY are arrays  of the  dimension N containing  the
             corner points of a polygon.

                         S H L I N D 

The index of  shielded  regions  in the  buffer  can be  re-
quested with SHLIND. It returns the index of the region last
written to the buffer.

The call is:  CALL SHLIND (ID)                 level 1, 2, 3

ID            is the returned index.

                         S H L D E L 

SHLDEL removes entries from the shielding buffer.

The call is:  CALL SHLDEL (ID)                 level 1, 2, 3

ID            is the index of a shielded region. If ID is 0,
              all regions defined by the user  will be dele-
              ted.

                         S H L R E S 

SHLRES deletes regions last written to the shielding buffer.

The call is:  CALL SHLRES (N)                  level 1, 2, 3

N             is the number of regions to delete.

                         S H L V I S 

SHLVIS  disables or  enables shielded regions.  Disabled re-
gions  are no  longer protected  but are still  held  in the
shielding buffer.

The call is:  CALL SHLVIS (ID, CMODE)          level 1, 2, 3

ID            is the index of a shielded region. If ID is 0,
              all entries
              are disabled or enabled.
CMODE = 'ON'  enables shielded  regions. This is the default
              value for regions newly written to the buffer.
      = 'OFF' disables shielded regions.

Notes:     -  A frame  is plotted  around regions defined by
              the user.  The thickness  of frames can be set
              with FRAME.  Regions defined  automatically by
              DISLIN  are not enclosed by a frame but frames
              plotted  by  MESSAG  after  using  FRMESS  and
              shielded regions defined by MESSAG are identi-
              cal.
           -  Shielded regions can overlap each other. 
           -  The statement   CALL RESET  ('SHIELD')  resets
              shielding. All regions defined by  DISLIN  and
              the user are removed from the shielding buffer
              and no new regions will be written to the buf-
              fer.
           -  The number of shielded  regions is  limited to
              the size of the shielding buffer  which is set
              to  1000 words.  The number  of words  used by
              regions are: 
                  SHLREC = 6, SHLRCT = 7, SHLCIR = 5,
                  SHLELL = 7, SHLPIE = 7 and SHLPOL = 2*N+3.
           -  Shielding  of regions  is computer  intensive.
              Therefore, shielding should be used very care-
              fully  and shielded regions  should be deleted
              from the buffer when no longer needed.
           -  Base transformations  do not affect the  posi-
              tion of shielded regions.
           -  SHLPOL can be used between the routines GRFINI
              and GRFFIN.  The shielded  region will be pro-
              jected into  3-D space.  This is not valid for
              other shielded regions.

