    ! EDREVIEW - The EDWIN PDF reviewing routine

    !############################################################################
    !#                                                                          #
    !#  This is a module from the EDWIN Graphics Package, which was developed   #
    !#  in the Department of Computer Science, at Edinburgh University, from    #
    !#  1978 to the present day, release 5 of EDWIN in October 1984.            #
    !#                                                                          #
    !#  The principal author of the EDWIN Graphics Package was J Gordon Hughes, #
    !#  while working for the Edinburgh University Computer Sceince Department. #
    !#  Parts of EDWIN have been produced by many different people, too many    #
    !#  too mention, working for different departments of Edinburgh and Leeds   #
    !#  Universities.                                                           #
    !#                                                                          #
    !#  This module is regarded as being in the public domain, and the authors  #
    !#  and accept no responsibility regarding the uses to which the software   #
    !#  will be put.                                                            #
    !#                                                                          #
    !############################################################################

    from Edwin include iprocs
    from Edwin include icodes
    from Edwin include types
    from Edwin include specs
    from Edwin include shapes

    external routine REVIEW alias "EDWIN_REVIEW"
       integer WORD, CODE, R, X, Y, Z, P, XL, YB, XR, YT, ACTION, WX, WY
       switch C (0:15)

       Action = False
       cycle
          READ (WORD)
          CODE = WORD&15
          if CODE<=5 start;    !Draw, Move, Point
              READ(X)
              if WORD&16=0 start;   !Long form
                  READ(Y)
              finishelse start
                  Y=X&255; X=X>>8&255
                  X=X!!(¬255) if X&128#0
                  Y=Y!!(¬255) if Y&128#0
              finish
        finish
        ->C(CODE)

    C(0): LINE ABS (X, Y)
          continue

    C(1): MOVE ABS (X, Y)
          continue

    C(2): MARKER ABS (WORD>>12&15, X, Y)
          Action = True
          continue

    C(3): LINE REL (X, Y)
          Action = True
          continue

    C(4): MOVE REL (X, Y)
          continue

    C(5): MARKER REL (WORD>>12&15, X, Y)
          Action = True
          continue

    C(6): ! Polygons
          READ (X)
          begin
             record (POINTFM) array P (1:X)
             integer I
             for I = 1, 1, X cycle
                  READ (P(I)_X);   READ (P(I)_Y)
             repeat
             Polygon (X, P)
          end
          continue

    C(8): ! SET new WINDOW
          READ(XL);  READ(XR);  READ(CODE);  READ (YB);  READ (YT)
          WINDOW (XL, XR, YB, YT)
          continue

    C(9): ! Character
          Character (Word >> 4)
          Action = true
          continue

    C(11): ! Newframe
           return if Action = true
           continue

    C(12): ! Terminate
           return

    C(13): ! Rectangle
           READ (WX);   READ (WY);   READ (WORD);  READ (X);   READ (Y)
           RECTANGLE (WX, WY, X, Y)
           continue

    C(14): !Circle
           READ (X)
           Circle (X)
           continue

    C(15): ! New attribute setting.
    C(10): if CODE=10 then X=WORD>>4&255 else READ(X)
           Y = WORD >> 12 & 15
           if Y=15 start
               ASPECT RATIOING (X)
           else
               if CODE = 10 start
                   PDF INSERT ((Y <<8 ! X) << 4 ! Pdf attribute, 0, 0)
               else
                   PDF INSERT (Y << 12 ! Pdf gen attrib, X, 0)
               finish
               SET ATTRIBUTE (Y, X)
           finish
      repeat

    C(*): signal 14, 5
    end

    end of file