home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 10 / 10.iso / l / l291 / 6.ddi / STAR.FO$ / STAR.bin
Encoding:
Text File  |  1990-12-11  |  1.6 KB  |  66 lines

  1. C  Program to draw star-shaped polygons
  2.  
  3.        INCLUDE 'FGRAPH.FI'
  4.        INCLUDE 'FGRAPH.FD'
  5.  
  6.        INTEGER*2              status, side, r, draw
  7.        INTEGER*2              offset, mode
  8.        REAL                   pi
  9.        DOUBLE PRECISION       rad
  10.        RECORD / xycoord /     poly [FAR] (5)
  11.        RECORD / xycoord /     oldorigin
  12.        RECORD / videoconfig / vc
  13.  
  14.        DATA pi / 3.14159 /
  15.  
  16. C  Set graphics mode, find dimensions, set origin
  17.  
  18.        status = setvideomode( $MAXRESMODE )
  19.        CALL getvideoconfig( vc )
  20.        CALL setvieworg( 0, vc.numypixels / 2, oldorigin )
  21.        offset = INT2( vc.numxpixels / 7 )
  22.  
  23. C  Calculate the points of the star (every 144 degrees)
  24.  
  25.        r = 90
  26.  
  27.        DO draw = 1, 5   ! Begin draw loop
  28.  
  29.        DO side = 1, 5
  30.          rad = 144 * pi / 180
  31.          poly(side).xcoord = INT2( COS( side*rad ) *r ) + draw*offset
  32.          poly(side).ycoord = INT2( SIN( side*rad ) *r )
  33.        END DO
  34.  
  35. C        Set the write mode
  36.  
  37.          IF (draw .EQ. 1) status = setwritemode( $GOR )
  38.          IF (draw .NE. 1) THEN
  39.            mode = getwritemode()
  40.            SELECT CASE ( mode )
  41.              CASE (0)
  42.                status = setwritemode( $GAND    )
  43.              CASE (1)
  44.                status = setwritemode( $GPRESET )
  45.              CASE (2)
  46.                status = setwritemode( $GPRSET  )
  47.              CASE (3)
  48.                status = setwritemode( $GXOR    )
  49.            END SELECT
  50.          END IF
  51.  
  52. C        Set a color and draw the polygon
  53.  
  54.          status = setcolor( draw )
  55.          status = polygon( $GFILLINTERIOR, poly, 5 )
  56.  
  57.        END DO        ! End draw loop
  58.  
  59.        READ( *, * )  ! Wait for user to press ENTER
  60.  
  61. C  Exit the program
  62.  
  63.        status = setvideomode( $DEFAULTMODE )
  64.  
  65.        END
  66.