Chapters: 1: Introduction 2: Simple example 3: Invocation 4: Finer Control 5: X-Y Plots 6: Contour Plots 7: Image Plots 8: Examples 9: Gri Commands 10: Programming 11: Environment 12: Emacs Mode 13: History 14: Installation 15: Gri Bugs 16: Test Suite 17: Gri in Press 18: Acknowledgments 19: License Indices: Concepts Commands Variables | ## 8.7: Drawing gray polygons The following example shows how to draw polygons of a graylevel that is read in. It also draws a bullet (within the polygon). See the help lines at the start.

    `Draw Polygon And Bullet'
    Draw a polygon of a given graylevel, with a bullet
    (black dot) at an indicated location.  The polygon
    coordinates are read in by this command, as are
    the graylevel and the location of the bullet.

    Variables used:
      .black.
      .white.

    Input data read:

    line   1:
      A code (which is ignored) and a graylevel
      to draw the polygon with. The value for this
      graylevel ranges from .black. (which codes
      to black ink on the paper) to .white.
      (which codes to blank paper).

    line   2:
      An (x,y) location for the bullet.

    line   3:
      Skipped.

    line 4-n:
      Locations of vertices of polygon, ended with a blank line.
    {
      read .code. .graylevel. # Read line 1
      read .x. .y.            # Read line 2
      skip                    # Skip line 3
      read columns x y        # Read a polygon
      # Adjust .graylevel. to range between 0
      # (for black ink) and 1 (for white paper),
      # then set graylevel and draw polygon.
      .graylevel. = {rpn .graylevel. \
          .black. - .white. .black. - /}
      set graylevel .graylevel.
      draw curve filled
      # Draw black bullet
      set graylevel 0
      draw symbol bullet at .x. .y.
      # Clean up local storage.
      delete .code.
      delete .graylevel.
      delete .x.
      delete .y.
    }