(DEFINE-FILE-INFO READTABLE "INTERLISP" PACKAGE "INTERLISP")
(FILECREATED "16-Sep-87 17:41:23" |{MCS:MCS:STANFORD}<LANE>COURIERIMAGESTREAM.;5| 48423  

      changes to%:  (COURIERPROGRAMS IMAGESTREAM OLDIMAGESTREAM)
                    (VARS COURIERIMAGESTREAMCOMS)

      previous date%: " 3-Sep-87 10:00:43" |{MCS:MCS:STANFORD}<LANE>COURIERIMAGESTREAM.;4|)


(* "
Copyright (c) 1985, 1986, 1987 by Xerox Corporation & Stanford University.  All rights reserved.
")

(PRETTYCOMPRINT COURIERIMAGESTREAMCOMS)

(RPAQQ COURIERIMAGESTREAMCOMS 
       ((* * ImageOp Functions)
        (FNS \BACKCOLOR.COURIER \BITBLT.COURIER \BLTSHADE.COURIER \BOTTOMMARGIN.COURIER 
             \CHARSET.COURIER \CHARWIDTH.COURIER \CHARWIDTHY.COURIER \CLIPPINGREGION.COURIER 
             \CLOSEFN.COURIER \COLOR.COURIER \COURIERIMAGESTREAM.BOUT \DEFAULTSTATE.COURIER 
             \DRAWARC.COURIER \DRAWCIRCLE.COURIER \DRAWCURVE.COURIER \DRAWELLIPSE.COURIER 
             \DRAWLINE.COURIER \DRAWPOINT.COURIER \DRAWPOLYGON.COURIER \FILLCIRCLE.COURIER 
             \FILLPOLYGON.COURIER \FONT.COURIER \LEFTMARGIN.COURIER \LINEFEED.COURIER \MOVETO.COURIER 
             \NEWPAGE.COURIER \OPENIMAGESTREAM.COURIER \OPERATION.COURIER \POPSTATE.COURIER 
             \PUSHSTATE.COURIER \RESET.COURIER \RIGHTMARGIN.COURIER \ROTATE.COURIER \SCALE.COURIER 
             \SCALEDBITBLT.COURIER \SCALE2.COURIER \SPACEFACTOR.COURIER \STRINGWIDTH.COURIER 
             \TERPRI.COURIER \TOPMARGIN.COURIER \TRANSLATE.COURIER \XPOSITION.COURIER 
             \YPOSITION.COURIER \OUTCHAR.COURIER)
        (* * Courier Server Functions)
        (FNS \COURIER.BACKCOLOR \COURIER.BITBLT \COURIER.BLTSHADE \COURIER.BOTTOMMARGIN 
             \COURIER.CHARSET \COURIER.CHARWIDTH \COURIER.CHARWIDTHY \COURIER.CLIPPINGREGION 
             \COURIER.CLOSEIMAGESTREAM \COURIER.COLOR \COURIER.DEFAULTSTATE \COURIER.DRAWARC 
             \COURIER.DRAWCIRCLE \COURIER.DRAWCURVE \COURIER.DRAWELLIPSE \COURIER.DRAWLINE 
             \COURIER.DRAWPOINT \COURIER.DRAWPOLYGON \COURIER.FILLCIRCLE \COURIER.FILLPOLYGON 
             \COURIER.FONT \COURIER.FONTTYPE \COURIER.LEFTMARGIN \COURIER.LINEFEED \COURIER.MOVETO 
             \COURIER.NEWPAGE \COURIER.OPERATION \COURIER.OPENIMAGESTREAM \COURIER.OUTCHAR 
             \COURIER.POPSTATE \COURIER.PUSHSTATE \COURIER.RESET \COURIER.RIGHTMARGIN \COURIER.ROTATE 
             \COURIER.SCALE \COURIER.SCALEDBITBLT \COURIER.SCALE2 \COURIER.SPACEFACTOR 
             \COURIER.STRINGWIDTH \COURIER.TERPRI \COURIER.TOPMARGIN \COURIER.TRANSLATE 
             \COURIER.XPOSITION \COURIER.YPOSITION)
        (* * etc.)
        (FNS \INITCOURIERIMAGESTREAM READSTREAMHANDLE WRITESTREAMHANDLE)
        (COURIERPROGRAMS IMAGESTREAM OLDIMAGESTREAM)
        [INITVARS \COURIERIMAGEOPS \NULLFDEV (IMAGESTREAMALST '((0 . 0]
        (PROP COURIERDEF STREAMHANDLE)
        (GLOBALVARS \COURIERIMAGEOPS \NULLFDEV IMAGESTREAMALST)
        (DECLARE%: DONTCOPY (RECORDS COURIERIMAGEDATA))
        [ADDVARS (IMAGESTREAMTYPES (COURIER (OPENSTREAM \OPENIMAGESTREAM.COURIER]
        (FILES COURIERDEFS BITMAPFNS)
        (P (\INITCOURIERIMAGESTREAM))))
(* * ImageOp Functions)

(DEFINEQ

(\BACKCOLOR.COURIER
  [LAMBDA (STREAM COLOR)                                     (* cdl "10-Oct-85 20:56")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'BACKCOLOR CIS.IMAGESTREAM COLOR])

(\BITBLT.COURIER
  [LAMBDA (SOURCE SOURCELEFT SOURCEBOTTOM STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT 
                 SOURCETYPE OPERATION TEXTURE CLIPPINGREGION)(* cdl "13-Nov-85 19:44")
    (LET (BULK.DATA.STREAM (BITMAP (BITMAPCREATE WIDTH HEIGHT)))
         (BITBLT SOURCE SOURCELEFT SOURCEBOTTOM BITMAP)
         (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
               (SETQ BULK.DATA.STREAM (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'BITBLT 
                                             CIS.IMAGESTREAM NIL DESTINATIONLEFT DESTINATIONBOTTOM 
                                             WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION
                                             ))
               (WRITEBINARYBITMAP BITMAP BULK.DATA.STREAM)
               (CLOSEF BULK.DATA.STREAM))
         NIL])

(\BLTSHADE.COURIER
  [LAMBDA (TEXTURE STREAM LEFT BOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION)
                                                             (* cdl "30-Oct-85 20:59")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'BLTSHADE (SELECTQ TEXTURE
                                                                     (NIL WHITESHADE)
                                                                     (T BLACKSHADE)
                                                                     TEXTURE)
                 CIS.IMAGESTREAM LEFT BOTTOM WIDTH HEIGHT OPERATION CLIPPINGREGION])

(\BOTTOMMARGIN.COURIER
  [LAMBDA (STREAM YPOSITION)                                 (* cdl "10-Oct-85 20:33")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'BOTTOMMARGIN CIS.IMAGESTREAM YPOSITION])

(\CHARSET.COURIER
  [LAMBDA (STREAM CHARACTERSET)                              (* cdl " 7-Nov-85 20:01")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'CHARSET CIS.IMAGESTREAM CHARACTERSET])

(\CHARWIDTH.COURIER
  [LAMBDA (STREAM CHARCODE)                                  (* cdl "26-Nov-85 17:33")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (if CIS.LOCALFONTS?
              then (CHARWIDTH CHARCODE CIS.FONT)
            else (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'CHARWIDTH CIS.IMAGESTREAM CHARCODE])

(\CHARWIDTHY.COURIER
  [LAMBDA (STREAM CHARCODE)                                  (* cdl "26-Nov-85 17:55")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (if CIS.LOCALFONTS?
              then (CHARWIDTHY CHARCODE CIS.FONT)
            else (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'CHARWIDTHY CIS.IMAGESTREAM CHARCODE])

(\CLIPPINGREGION.COURIER
  [LAMBDA (STREAM REGION)                                    (* cdl "10-Oct-85 20:50")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'CLIPPINGREGION CIS.IMAGESTREAM REGION])

(\CLOSEFN.COURIER
  [LAMBDA (STREAM)                                           (* cdl "10-Oct-85 19:01")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'CLOSE CIS.IMAGESTREAM])

(\COLOR.COURIER
  [LAMBDA (STREAM COLOR)                                     (* cdl "10-Oct-85 19:08")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'COLOR CIS.IMAGESTREAM COLOR])

(\COURIERIMAGESTREAM.BOUT
  [LAMBDA (STREAM BYTE)                                      (* cdl "26-Nov-85 16:50")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'OUTCHAR CIS.IMAGESTREAM BYTE])

(\DEFAULTSTATE.COURIER
  [LAMBDA (STREAM)                                           (* ; "Edited  3-Sep-87 09:01 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DEFAULTSTATE CIS.IMAGESTREAM])

(\DRAWARC.COURIER
  [LAMBDA (STREAM CENTERX CENTERY RADIUS ANGLE DEGREES BRUSH DASHING)
                                                             (* ; "Edited  3-Sep-87 08:47 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DRAWARC CIS.IMAGESTREAM CENTERX CENTERY 
                 RADIUS ANGLE DEGREES BRUSH DASHING])

(\DRAWCIRCLE.COURIER
  [LAMBDA (STREAM CENTERX CENTERY RADIUS BRUSH DASHING)      (* cdl "10-Oct-85 18:28")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DRAWCIRCLE CIS.IMAGESTREAM CENTERX CENTERY 
                 RADIUS BRUSH DASHING])

(\DRAWCURVE.COURIER
  [LAMBDA (STREAM KNOTS CLOSED BRUSH DASHING)                (* cdl "21-Nov-85 18:51")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DRAWCURVE CIS.IMAGESTREAM KNOTS CLOSED BRUSH 
                 DASHING])

(\DRAWELLIPSE.COURIER
  [LAMBDA (STREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING)
                                                             (* cdl "10-Oct-85 20:23")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DRAWELLIPSE CIS.IMAGESTREAM CENTERX CENTERY 
                 SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING])

(\DRAWLINE.COURIER
  [LAMBDA (STREAM X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING) (* cdl "10-Nov-85 17:56")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DRAWLINE CIS.IMAGESTREAM X1 Y1 X2 Y2 WIDTH 
                 OPERATION COLOR DASHING])

(\DRAWPOINT.COURIER
  [LAMBDA (STREAM X Y BRUSH OPERATION)                       (* ; "Edited  3-Sep-87 09:20 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DRAWPOINT CIS.IMAGESTREAM X Y BRUSH OPERATION
                 ])

(\DRAWPOLYGON.COURIER
  [LAMBDA (STREAM POINTS CLOSED BRUSH DASHING)               (* cdl "21-Nov-85 18:52")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'DRAWPOLYGON CIS.IMAGESTREAM POINTS CLOSED 
                 BRUSH DASHING])

(\FILLCIRCLE.COURIER
  [LAMBDA (STREAM CENTERX CENTERY RADIUS TEXTURE)            (* cdl "10-Oct-85 19:11")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'FILLCIRCLE CIS.IMAGESTREAM CENTERX CENTERY 
                 RADIUS TEXTURE])

(\FILLPOLYGON.COURIER
  [LAMBDA (STREAM POINTS TEXTURE)                            (* cdl "26-Nov-85 16:25")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'FILLPOLYGON CIS.IMAGESTREAM POINTS TEXTURE])

(\FONT.COURIER
  [LAMBDA (STREAM FONT)                                      (* cdl " 5-Dec-85 19:15")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (PROG1 CIS.FONT (if (AND FONT (NEQ FONT CIS.FONT))
                              then (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'FONT CIS.IMAGESTREAM 
                                          FONT)
                                   (SETQ CIS.FONT FONT])

(\LEFTMARGIN.COURIER
  [LAMBDA (STREAM XPOSITION)                                 (* cdl "10-Oct-85 19:42")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'LEFTMARGIN CIS.IMAGESTREAM XPOSITION])

(\LINEFEED.COURIER
  [LAMBDA (STREAM DELTAY)                                    (* cdl "10-Oct-85 19:54")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'LINEFEED CIS.IMAGESTREAM DELTAY])

(\MOVETO.COURIER
  [LAMBDA (STREAM X Y)                                       (* cdl "10-Oct-85 19:14")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'MOVETO CIS.IMAGESTREAM X Y])

(\NEWPAGE.COURIER
  [LAMBDA (STREAM)                                           (* cdl "10-Oct-85 20:29")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'NEWPAGE CIS.IMAGESTREAM])

(\OPENIMAGESTREAM.COURIER
  [LAMBDA (COURIERSTREAM OPTIONS)                            (* ; "Edited  3-Sep-87 09:29 by cdl")
                                                             (* DECLARATIONS%: (RECORD PAIR
                                                             (KEY VALUE)))
    (LET (FILE TYPE IMAGESTREAM IMAGEOPS STREAM)
         (DECLARE (GLOBALVARS DEFAULTFONT))
         [if (NULL \NULLFDEV)
             then (SETQ \NULLFDEV (create FDEV
                                         CLOSEFILE ← (FUNCTION NILL]
         [SETQ OPTIONS (for PAIR on OPTIONS by (CDDR PAIR)
                          when (with PAIR PAIR (SELECTQ KEY
                                                   (FILE (SETQ FILE VALUE)
                                                         NIL)
                                                   (TYPE (SETQ TYPE VALUE)
                                                         NIL)
                                                   T)) join (with PAIR PAIR (LIST KEY VALUE]
         (if (NULL TYPE)
             then (SETQ TYPE 'DISPLAY))
         (SETQ IMAGESTREAM (COURIER.CALL COURIERSTREAM 'IMAGESTREAM 'OPEN FILE TYPE (MKSTRING OPTIONS 
                                                                                           T)))
         (SETQ IMAGEOPS (create IMAGEOPS
                               IMFONTCREATE ← (COURIER.CALL COURIERSTREAM 'IMAGESTREAM 'FONTTYPE 
                                                     IMAGESTREAM) reusing \COURIERIMAGEOPS))
         (SETQ STREAM (create STREAM
                             IMAGEDATA ← (create COURIERIMAGEDATA
                                                CIS.COURIERSTREAM ← COURIERSTREAM
                                                CIS.IMAGESTREAM ← IMAGESTREAM
                                                CIS.FONT ← (FONTCLASSCOMPONENT DEFAULTFONT
                                                                  (with IMAGEOPS IMAGEOPS 
                                                                        IMFONTCREATE)))
                             IMAGEOPS ← IMAGEOPS
                             OUTCHARFN ← (FUNCTION \OUTCHAR.COURIER)
                             ACCESS ← 'OUTPUT
                             DEVICE ← \NULLFDEV))
         (with STREAM STREAM (SETQ STRMBOUTFN (FUNCTION \COURIERIMAGESTREAM.BOUT)))
         STREAM])

(\OPERATION.COURIER
  [LAMBDA (STREAM OPERATION)                                 (* cdl "10-Oct-85 20:41")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'OPERATION CIS.IMAGESTREAM OPERATION])

(\POPSTATE.COURIER
  [LAMBDA (STREAM)                                           (* ; "Edited  3-Sep-87 08:59 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'POPSTATE CIS.IMAGESTREAM])

(\PUSHSTATE.COURIER
  [LAMBDA (STREAM)                                           (* ; "Edited  3-Sep-87 08:58 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'PUSHSTATE CIS.IMAGESTREAM])

(\RESET.COURIER
  [LAMBDA (STREAM)                                           (* cdl "26-Nov-85 16:42")
    (with STREAM STREAM (SETQ CHARPOSITION 0)
          (with COURIERIMAGEDATA IMAGEDATA (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'RESET 
                                                  CIS.IMAGESTREAM])

(\RIGHTMARGIN.COURIER
  [LAMBDA (STREAM XPOSITION)                                 (* cdl "10-Oct-85 19:42")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'RIGHTMARGIN CIS.IMAGESTREAM XPOSITION])

(\ROTATE.COURIER
  [LAMBDA (STREAM ROTATION)                                  (* ; "Edited  3-Sep-87 08:40 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'ROTATE CIS.IMAGESTREAM ROTATION])

(\SCALE.COURIER
  [LAMBDA (STREAM SCALE)                                     (* cdl "10-Oct-85 18:47")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'SCALE CIS.IMAGESTREAM SCALE])

(\SCALEDBITBLT.COURIER
  [LAMBDA (SOURCE SOURCELEFT SOURCEBOTTOM STREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT 
                 SOURCETYPE OPERATION TEXTURE CLIPPINGREGION CLIPPEDSOURCELEFT CLIPPEDSOURCEBOTTOM 
                 SCALE)                                      (* cdl "13-Nov-85 19:48")
    (LET (BULK.DATA.STREAM (BITMAP (BITMAPCREATE WIDTH HEIGHT)))
         (BITBLT SOURCE SOURCELEFT SOURCEBOTTOM BITMAP)
         (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
               (SETQ BULK.DATA.STREAM (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'SCALEDBITBLT 
                                             CIS.IMAGESTREAM NIL DESTINATIONLEFT DESTINATIONBOTTOM 
                                             WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION 
                                             SCALE))
               (WRITEBINARYBITMAP BITMAP BULK.DATA.STREAM)
               (CLOSEF BULK.DATA.STREAM))
         NIL])

(\SCALE2.COURIER
  [LAMBDA (STREAM X Y)                                       (* ; "Edited  3-Sep-87 08:54 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'SCALE2 CIS.IMAGESTREAM X Y])

(\SPACEFACTOR.COURIER
  [LAMBDA (STREAM FACTOR)                                    (* cdl "10-Oct-85 20:43")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'SPACEFACTOR CIS.IMAGESTREAM FACTOR])

(\STRINGWIDTH.COURIER
  [LAMBDA (STREAM STRING RDTBL)                              (* cdl "26-Nov-85 17:32")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (if CIS.LOCALFONTS?
              then (STRINGWIDTH STRING CIS.FONT)
            else (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'STRINGWIDTH CIS.IMAGESTREAM STRING])

(\TERPRI.COURIER
  [LAMBDA (STREAM)                                           (* cdl "26-Nov-85 16:35")
    (with STREAM STREAM (SETQ CHARPOSITION 0)
          (with COURIERIMAGEDATA IMAGEDATA (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'TERPRI 
                                                  CIS.IMAGESTREAM])

(\TOPMARGIN.COURIER
  [LAMBDA (STREAM YPOSITION)                                 (* cdl "10-Oct-85 20:32")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'TOPMARGIN CIS.IMAGESTREAM YPOSITION])

(\TRANSLATE.COURIER
  [LAMBDA (STREAM X Y)                                       (* ; "Edited  3-Sep-87 08:52 by cdl")

    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'TRANSLATE CIS.IMAGESTREAM X Y])

(\XPOSITION.COURIER
  [LAMBDA (STREAM XPOSITION)                                 (* cdl "10-Oct-85 18:43")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'XPOSITION CIS.IMAGESTREAM XPOSITION])

(\YPOSITION.COURIER
  [LAMBDA (STREAM YPOSITION)                                 (* cdl "10-Oct-85 18:45")
    (with COURIERIMAGEDATA (with STREAM STREAM IMAGEDATA)
          (COURIER.CALL CIS.COURIERSTREAM 'IMAGESTREAM 'YPOSITION CIS.IMAGESTREAM YPOSITION])

(\OUTCHAR.COURIER
  [LAMBDA (STREAM CHARCODE)                                  (* cdl " 3-Dec-85 17:47")
    [if (EQ CHARCODE (CHARCODE EOL))
        then (with STREAM STREAM (SETQ CHARPOSITION 0))
      else (freplace CHARPOSITION of STREAM with (PROGN      (* Ugh. Don't overflow)
                                                        (\LOLOC (\ADDBASE (ffetch CHARPOSITION
                                                                             of STREAM)
                                                                       1]
    (BOUT STREAM CHARCODE])
)
(* * Courier Server Functions)

(DEFINEQ

(\COURIER.BACKCOLOR
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM COLOR)(* ; "Edited 24-Mar-87 20:52 by cdl")

    `(RETURN ,(IMAGEOP 'IMBACKCOLOR IMAGESTREAM IMAGESTREAM COLOR])

(\COURIER.BITBLT
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM BULK.DATA.STREAM DESTINATIONLEFT 
                 DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION)
                                                             (* ; "Edited 24-Mar-87 20:52 by cdl")

    (BITBLT (READBINARYBITMAP WIDTH HEIGHT BULK.DATA.STREAM)
           NIL NIL IMAGESTREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION 
           TEXTURE CLIPPINGREGION)
    '(RETURN])

(\COURIER.BLTSHADE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE TEXTURE IMAGESTREAM LEFT BOTTOM WIDTH HEIGHT OPERATION 
                 CLIPPINGREGION)                             (* cdl "10-Nov-85 16:36")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMBLTSHADE IMAGESTREAM TEXTURE IMAGESTREAM LEFT BOTTOM WIDTH HEIGHT OPERATION 
           CLIPPINGREGION)
    NIL])

(\COURIER.BOTTOMMARGIN
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM YPOSITION)
                                                             (* ; "Edited 24-Mar-87 20:54 by cdl")

    `(RETURN ,(IMAGEOP 'IMBOTTOMMARGIN IMAGESTREAM IMAGESTREAM YPOSITION])

(\COURIER.CHARSET
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM CHARACTERSET)
                                                             (* ; "Edited 24-Mar-87 20:54 by cdl")

    `(RETURN ,(IMAGEOP 'IMCHARSET IMAGESTREAM IMAGESTREAM CHARACTERSET])

(\COURIER.CHARWIDTH
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM CHARCODE)
                                                             (* ; "Edited 24-Mar-87 20:55 by cdl")

    `(RETURN ,(IMAGEOP 'IMCHARWIDTH IMAGESTREAM IMAGESTREAM CHARCODE])

(\COURIER.CHARWIDTHY
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM CHARCODE)
                                                             (* ; "Edited 24-Mar-87 20:55 by cdl")

    `(RETURN ,(IMAGEOP 'IMCHARWIDTHY IMAGESTREAM IMAGESTREAM CHARCODE])

(\COURIER.CLIPPINGREGION
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM REGION)
                                                             (* ; "Edited 24-Mar-87 20:56 by cdl")

    `(RETURN ,(IMAGEOP 'IMCLIPPINGREGION IMAGESTREAM IMAGESTREAM REGION])

(\COURIER.CLOSEIMAGESTREAM
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE HANDLE)           (* ; "Edited 24-Mar-87 20:56 by cdl")
                                                             (* DECLARATIONS%: (RECORD PAIR
                                                             (KEY . VALUE)))
    [LET ((PAIR (ASSOC HANDLE IMAGESTREAMALST)))
         (SETQ IMAGESTREAMALST (DREMOVE PAIR IMAGESTREAMALST))
         (with PAIR PAIR (if (IMAGESTREAMTYPEP VALUE 'DISPLAY)
                             then (CLOSEW VALUE)
                           else (CLOSEF? VALUE]
    '(RETURN])

(\COURIER.COLOR
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM COLOR)(* ; "Edited 24-Mar-87 20:50 by cdl")

    `(RETURN ,(IMAGEOP 'IMCOLOR IMAGESTREAM IMAGESTREAM COLOR])

(\COURIER.DEFAULTSTATE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM)      (* ; "Edited  3-Sep-87 09:00 by cdl")

    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDEFAULTSTATE IMAGESTREAM IMAGESTREAM)
    NIL])

(\COURIER.DRAWARC
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y RADIUS ANGLE DEGREES BRUSH DASHING)
                                                             (* ; "Edited  3-Sep-87 08:46 by cdl")

    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDRAWARC IMAGESTREAM IMAGESTREAM X Y RADIUS ANGLE DEGREES BRUSH DASHING)
    NIL])

(\COURIER.DRAWCIRCLE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y RADIUS BRUSH DASHING)
                                                             (* cdl "10-Nov-85 16:40")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDRAWCIRCLE IMAGESTREAM IMAGESTREAM X Y RADIUS BRUSH DASHING)
    NIL])

(\COURIER.DRAWCURVE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM KNOTS CLOSED BRUSH DASHING)
                                                             (* cdl "21-Nov-85 19:14")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDRAWCURVE IMAGESTREAM IMAGESTREAM KNOTS CLOSED BRUSH DASHING)
    NIL])

(\COURIER.DRAWELLIPSE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM CENTERX CENTERY SEMIMINORRADIUS 
                 SEMIMAJORRADIUS ORIENTATION BRUSH DASHING)  (* cdl "10-Nov-85 16:42")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDRAWELLIPSE IMAGESTREAM IMAGESTREAM CENTERX CENTERY SEMIMINORRADIUS SEMIMAJORRADIUS 
           ORIENTATION BRUSH DASHING)
    NIL])

(\COURIER.DRAWLINE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y X2 Y2 WIDTH OPERATION COLOR DASHING)
                                                             (* cdl "10-Nov-85 17:58")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDRAWLINE IMAGESTREAM IMAGESTREAM X Y X2 Y2 WIDTH OPERATION COLOR DASHING)
    NIL])

(\COURIER.DRAWPOINT
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y BRUSH OPERATION)
                                                             (* ; "Edited  3-Sep-87 09:04 by cdl")

    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDRAWPOINT IMAGESTREAM IMAGESTREAM X Y BRUSH OPERATION)
    NIL])

(\COURIER.DRAWPOLYGON
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM POINTS CLOSED BRUSH DASHING)
                                                             (* cdl "21-Nov-85 20:20")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMDRAWPOLYGON IMAGESTREAM IMAGESTREAM POINTS CLOSED BRUSH DASHING)
    NIL])

(\COURIER.FILLCIRCLE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y RADIUS TEXTURE)
                                                             (* cdl "10-Nov-85 16:43")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMFILLCIRCLE IMAGESTREAM IMAGESTREAM X Y RADIUS TEXTURE)
    NIL])

(\COURIER.FILLPOLYGON
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM POINTS TEXTURE)
                                                             (* cdl "26-Nov-85 16:25")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMFILLPOLYGON IMAGESTREAM IMAGESTREAM POINTS TEXTURE)
    NIL])

(\COURIER.FONT
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM FONT) (* ; "Edited 24-Mar-87 20:58 by cdl")

    `(RETURN ,(IMAGEOP 'IMFONT IMAGESTREAM IMAGESTREAM FONT])

(\COURIER.FONTTYPE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM)      (* ; "Edited 24-Mar-87 20:58 by cdl")

    `(RETURN ,(with IMAGEOPS (with STREAM IMAGESTREAM IMAGEOPS)
                    IMFONTCREATE])

(\COURIER.LEFTMARGIN
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM XPOSITION)
                                                             (* ; "Edited 24-Mar-87 20:59 by cdl")

    `(RETURN ,(IMAGEOP 'IMLEFTMARGIN IMAGESTREAM IMAGESTREAM XPOSITION])

(\COURIER.LINEFEED
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM DELTAY)
                                                             (* ; "Edited 24-Mar-87 20:59 by cdl")

    `(RETURN ,(IMAGEOP 'IMLINEFEED IMAGESTREAM IMAGESTREAM DELTAY])

(\COURIER.MOVETO
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y)  (* cdl "10-Nov-85 16:46")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMMOVETO IMAGESTREAM IMAGESTREAM X Y)
    NIL])

(\COURIER.NEWPAGE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM)      (* cdl "10-Nov-85 16:47")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMNEWPAGE IMAGESTREAM IMAGESTREAM)
    NIL])

(\COURIER.OPERATION
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM OPERATION)
                                                             (* ; "Edited 24-Mar-87 20:59 by cdl")

    `(RETURN ,(IMAGEOP 'IMOPERATION IMAGESTREAM IMAGESTREAM OPERATION])

(\COURIER.OPENIMAGESTREAM
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE FILE IMAGETYPE OPTIONS)
                                                             (* ; "Edited 24-Mar-87 21:00 by cdl")

    (LET [STREAM (HANDLE (ADD1 (CAR (in IMAGESTREAMALST largest CAR]
         (DECLARE (SPECVARS STREAM))
         (SETQ STREAM (OPENSTRINGSTREAM OPTIONS 'INPUT))
         [SETQ OPTIONS (CAR (NLSETQ (READ STREAM]
         (CLOSEF STREAM)
         (PUTASSOC HANDLE (OPENIMAGESTREAM FILE IMAGETYPE OPTIONS)
                IMAGESTREAMALST)
         `(RETURN ,HANDLE])

(\COURIER.OUTCHAR
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM CHARCODE)
                                                             (* cdl " 7-Nov-85 18:49")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (\OUTCHAR IMAGESTREAM CHARCODE)
    NIL])

(\COURIER.POPSTATE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM)      (* ; "Edited  3-Sep-87 08:58 by cdl")

    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMPOPSTATE IMAGESTREAM IMAGESTREAM)
    NIL])

(\COURIER.PUSHSTATE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM)      (* ; "Edited  3-Sep-87 08:57 by cdl")

    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMPUSHSTATE IMAGESTREAM IMAGESTREAM)
    NIL])

(\COURIER.RESET
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM)      (* cdl "10-Nov-85 16:48")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMRESET IMAGESTREAM IMAGESTREAM)
    NIL])

(\COURIER.RIGHTMARGIN
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM XPOSITION)
                                                             (* ; "Edited 24-Mar-87 21:00 by cdl")

    `(RETURN ,(IMAGEOP 'IMRIGHTMARGIN IMAGESTREAM IMAGESTREAM XPOSITION])

(\COURIER.ROTATE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM COLOR ROTATION)
                                                             (* ; "Edited  3-Sep-87 08:38 by cdl")

    `(RETURN ,(IMAGEOP 'IMROTATE IMAGESTREAM IMAGESTREAM ROTATION])

(\COURIER.SCALE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM SCALE)(* ; "Edited 24-Mar-87 21:00 by cdl")

    `(RETURN ,(IMAGEOP 'IMSCALE IMAGESTREAM IMAGESTREAM SCALE])

(\COURIER.SCALEDBITBLT
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM BULK.DATA.STREAM DESTINATIONLEFT 
                 DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION TEXTURE CLIPPINGREGION SCALE)
                                                             (* cdl "13-Nov-85 19:46")
    (SCALEDBITBLT (READBINARYBITMAP WIDTH HEIGHT BULK.DATA.STREAM)
           NIL NIL IMAGESTREAM DESTINATIONLEFT DESTINATIONBOTTOM WIDTH HEIGHT SOURCETYPE OPERATION 
           TEXTURE CLIPPINGREGION SCALE)
    '(RETURN])

(\COURIER.SCALE2
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y)  (* ; "Edited  3-Sep-87 08:53 by cdl")

    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMSCALE2 IMAGESTREAM IMAGESTREAM X Y)
    NIL])

(\COURIER.SPACEFACTOR
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM FACTOR)
                                                             (* ; "Edited 24-Mar-87 21:01 by cdl")

    `(RETURN ,(IMAGEOP 'IMSPACEFACTOR IMAGESTREAM IMAGESTREAM FACTOR])

(\COURIER.STRINGWIDTH
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM STRING)
                                                             (* ; "Edited 24-Mar-87 21:01 by cdl")

    `(RETURN ,(IMAGEOP 'IMSTRINGWIDTH IMAGESTREAM IMAGESTREAM STRING])

(\COURIER.TERPRI
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM)      (* cdl "10-Nov-85 16:52")
    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMTERPRI IMAGESTREAM IMAGESTREAM)
    NIL])

(\COURIER.TOPMARGIN
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM YPOSITION)
                                                             (* ; "Edited 24-Mar-87 21:02 by cdl")

    `(RETURN ,(IMAGEOP 'IMTOPMARGIN IMAGESTREAM IMAGESTREAM YPOSITION])

(\COURIER.TRANSLATE
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM X Y)  (* ; "Edited  3-Sep-87 08:51 by cdl")

    (COURIER.RETURN COURIERSTREAM PROGRAM PROCEDURE)
    (IMAGEOP 'IMTRANSLATE IMAGESTREAM IMAGESTREAM X Y)
    NIL])

(\COURIER.XPOSITION
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM XPOSITION)
                                                             (* ; "Edited 24-Mar-87 21:02 by cdl")

    `(RETURN ,(IMAGEOP 'IMXPOSITION IMAGESTREAM IMAGESTREAM XPOSITION])

(\COURIER.YPOSITION
  [LAMBDA (COURIERSTREAM PROGRAM PROCEDURE IMAGESTREAM YPOSITION)
                                                             (* ; "Edited 24-Mar-87 21:02 by cdl")

    `(RETURN ,(IMAGEOP 'IMYPOSITION IMAGESTREAM IMAGESTREAM YPOSITION])
)
(* * etc.)

(DEFINEQ

(\INITCOURIERIMAGESTREAM
  [LAMBDA NIL                                                (* ; "Edited  3-Sep-87 09:59 by cdl")

    (SETQ \COURIERIMAGEOPS (create IMAGEOPS
                                  IMAGETYPE ← 'COURIER
                                  IMCLOSEFN ← (FUNCTION \CLOSEFN.COURIER)
                                  IMXPOSITION ← (FUNCTION \XPOSITION.COURIER)
                                  IMYPOSITION ← (FUNCTION \YPOSITION.COURIER)
                                  IMFONT ← (FUNCTION \FONT.COURIER)
                                  IMLEFTMARGIN ← (FUNCTION \LEFTMARGIN.COURIER)
                                  IMRIGHTMARGIN ← (FUNCTION \RIGHTMARGIN.COURIER)
                                  IMLINEFEED ← (FUNCTION \LINEFEED.COURIER)
                                  IMDRAWLINE ← (FUNCTION \DRAWLINE.COURIER)
                                  IMDRAWCURVE ← (FUNCTION \DRAWCURVE.COURIER)
                                  IMDRAWCIRCLE ← (FUNCTION \DRAWCIRCLE.COURIER)
                                  IMFILLCIRCLE ← (FUNCTION \FILLCIRCLE.COURIER)
                                  IMFILLPOLYGON ← (FUNCTION \FILLPOLYGON.COURIER)
                                  IMBITBLT ← (FUNCTION \BITBLT.COURIER)
                                  IMBLTSHADE ← (FUNCTION \BLTSHADE.COURIER)
                                  IMMOVETO ← (FUNCTION \MOVETO.COURIER)
                                  IMSCALE ← (FUNCTION \SCALE.COURIER)
                                  IMTERPRI ← (FUNCTION \TERPRI.COURIER)
                                  IMFONTCREATE ← 'DISPLAY
                                  IMCOLOR ← (FUNCTION \COLOR.COURIER)
                                  IMBACKCOLOR ← (FUNCTION \BACKCOLOR.COURIER)
                                  IMSTRINGWIDTH ← (FUNCTION \STRINGWIDTH.COURIER)
                                  IMCHARWIDTH ← (FUNCTION \CHARWIDTH.COURIER)
                                  IMCHARWIDTHY ← (FUNCTION \CHARWIDTHY.COURIER)
                                  IMRESET ← (FUNCTION \RESET.COURIER)
                                  IMDRAWPOLYGON ← (FUNCTION \DRAWPOLYGON.COURIER)
                                  IMSCALEDBITBLT ← (FUNCTION \SCALEDBITBLT.COURIER)
                                  IMTOPMARGIN ← (FUNCTION \TOPMARGIN.COURIER)
                                  IMBOTTOMMARGIN ← (FUNCTION \BOTTOMMARGIN.COURIER)
                                  IMNEWPAGE ← (FUNCTION \NEWPAGE.COURIER)
                                  IMDRAWELLIPSE ← (FUNCTION \DRAWELLIPSE.COURIER)
                                  IMCLIPPINGREGION ← (FUNCTION \CLIPPINGREGION.COURIER)
                                  IMOPERATION ← (FUNCTION \OPERATION.COURIER)
                                  IMSPACEFACTOR ← (FUNCTION \SPACEFACTOR.COURIER)
                                  IMCHARSET ← (FUNCTION \CHARSET.COURIER)
                                  IMROTATE ← (FUNCTION \ROTATE.COURIER)
                                  IMDRAWARC ← (FUNCTION \DRAWARC.COURIER)
                                  IMTRANSLATE ← (FUNCTION \TRANSLATE.COURIER)
                                  IMSCALE2 ← (FUNCTION \SCALE2.COURIER)
                                  IMPUSHSTATE ← (FUNCTION \PUSHSTATE.COURIER)
                                  IMPOPSTATE ← (FUNCTION \POPSTATE.COURIER)
                                  IMDEFAULTSTATE ← (FUNCTION \DEFAULTSTATE.COURIER)
                                  IMDRAWPOINT ← (FUNCTION \DRAWPOINT.COURIER])

(READSTREAMHANDLE
  [LAMBDA (STREAM PROGRAM TYPE)                              (* cdl "10-Nov-85 17:13")
                                                             (* DECLARATIONS%: (RECORD ITEM
                                                             (TYPENAME VALUE)))
    (CDR (ASSOC (COURIER.READ STREAM PROGRAM 'UNSPECIFIED)
                IMAGESTREAMALST])

(WRITESTREAMHANDLE
  [LAMBDA (STREAM ITEM PROGRAM TYPE)                         (* cdl "10-Nov-85 17:13")
    (COURIER.WRITE STREAM ITEM PROGRAM 'UNSPECIFIED])
)

(COURIERPROGRAM IMAGESTREAM (1111 1)
    TYPES
      [(X1 INTEGER)
       (Y1 INTEGER)
       (X2 INTEGER)
       (Y2 INTEGER)
       (ANGLE INTEGER)
       (RADIUS INTEGER)
       (SEMIMINORRADIUS INTEGER)
       (SEMIMAJORRADIUS INTEGER)
       (X NUMBER)
       (Y NUMBER)
       (LEFT NUMBER)
       (BOTTOM NUMBER)
       (WIDTH NUMBER)
       (HEIGHT NUMBER)
       (SCALE NUMBER)
       (COLOR NUMBER)
       (ROTATION NUMBER)
       (ORIENTATION NUMBER)
       (CHARACTERSET NUMBER)
       (CHARACTER CARDINAL)
       (CLOSED BOOLEAN)
       (FILE ATOM)
       (IMAGETYPE ATOM)
       (OPTIONS STRING)
       (DASHING (SEQUENCE CARDINAL))
       (KNOTS (SEQUENCE POSITION))
       (SOURCETYPE (ENUMERATION (NIL 0)
                          (INPUT 1)
                          (INVERT 2)
                          (TEXTURE 3]
    INHERITS
      (INTERLISP)
    PROCEDURES
      ((OPEN 0 (FILE IMAGETYPE OPTIONS)
             RETURNS
             (CARDINAL)
             REPORTS NIL IMPLEMENTEDBY \COURIER.OPENIMAGESTREAM)
       (CLOSE 1 (CARDINAL)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.CLOSEIMAGESTREAM)
       (DRAWLINE 2 (STREAMHANDLE X1 Y1 X2 Y2 WIDTH OPERATION COLOR DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWLINE)
       (DRAWCIRCLE 3 (STREAMHANDLE X1 Y1 RADIUS BRUSH DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWCIRCLE)
       (OUTCHAR 4 (STREAMHANDLE CHARACTER)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.OUTCHAR)
       (DRAWCURVE 5 (STREAMHANDLE KNOTS CLOSED BRUSH DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWCURVE)
       (DRAWPOLYGON 6 (STREAMHANDLE KNOTS CLOSED BRUSH DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWPOLYGON)
       (SCALE 7 (STREAMHANDLE SCALE)
              RETURNS
              (SCALE)
              REPORTS NIL IMPLEMENTEDBY \COURIER.SCALE)
       (XPOSITION 8 (STREAMHANDLE X)
              RETURNS
              (X)
              REPORTS NIL IMPLEMENTEDBY \COURIER.XPOSITION)
       (YPOSITION 9 (STREAMHANDLE Y)
              RETURNS
              (Y)
              REPORTS NIL IMPLEMENTEDBY \COURIER.YPOSITION)
       (COLOR 10 (STREAMHANDLE COLOR)
              RETURNS
              (COLOR)
              REPORTS NIL IMPLEMENTEDBY \COURIER.COLOR)
       (FILLCIRCLE 11 (STREAMHANDLE X1 Y1 RADIUS TEXTURE)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.FILLCIRCLE)
       (MOVETO 12 (STREAMHANDLE X1 Y1)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.MOVETO)
       (RESET 13 (STREAMHANDLE)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.RESET)
       (BLTSHADE 14 (TEXTURE STREAMHANDLE LEFT BOTTOM WIDTH HEIGHT OPERATION REGION)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.BLTSHADE)
       (RIGHTMARGIN 15 (STREAMHANDLE X)
              RETURNS
              (X)
              REPORTS NIL IMPLEMENTEDBY \COURIER.RIGHTMARGIN)
       (LEFTMARGIN 16 (STREAMHANDLE X)
              RETURNS
              (X)
              REPORTS NIL IMPLEMENTEDBY \COURIER.LEFTMARGIN)
       (TERPRI 17 (STREAMHANDLE)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.TERPRI)
       (STRINGWIDTH 18 (STREAMHANDLE STRING)
              RETURNS
              (WIDTH)
              REPORTS NIL IMPLEMENTEDBY \COURIER.STRINGWIDTH)
       (LINEFEED 19 (STREAMHANDLE Y)
              RETURNS
              (Y)
              REPORTS NIL IMPLEMENTEDBY \COURIER.LINEFEED)
       (FONT 20 (STREAMHANDLE FONT)
             RETURNS
             (FONT)
             REPORTS NIL IMPLEMENTEDBY \COURIER.FONT)
       (DRAWELLIPSE 21 (STREAMHANDLE X1 Y1 SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWELLIPSE)
       (NEWPAGE 22 (STREAMHANDLE)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.NEWPAGE)
       (TOPMARGIN 23 (STREAMHANDLE Y)
              RETURNS
              (Y)
              REPORTS NIL IMPLEMENTEDBY \COURIER.TOPMARGIN)
       (BOTTOMMARGIN 24 (STREAMHANDLE Y)
              RETURNS
              (Y)
              REPORTS NIL IMPLEMENTEDBY \COURIER.BOTTOMMARGIN)
       (SPACEFACTOR 25 (STREAMHANDLE X)
              RETURNS
              (WIDTH)
              REPORTS NIL IMPLEMENTEDBY \COURIER.SPACEFACTOR)
       (OPERATION 26 (STREAMHANDLE OPERATION)
              RETURNS
              (OPERATION)
              REPORTS NIL IMPLEMENTEDBY \COURIER.OPERATION)
       (CHARWIDTH 27 (STREAMHANDLE CHARACTER)
              RETURNS
              (WIDTH)
              REPORTS NIL IMPLEMENTEDBY \COURIER.CHARWIDTH)
       (CHARWIDTHY 28 (STREAMHANDLE CHARACTER)
              RETURNS
              (WIDTH)
              REPORTS NIL IMPLEMENTEDBY \COURIER.CHARWIDTHY)
       (CLIPPINGREGION 29 (STREAMHANDLE REGION)
              RETURNS
              (REGION)
              REPORTS NIL IMPLEMENTEDBY \COURIER.CLIPPINGREGION)
       (BACKCOLOR 30 (STREAMHANDLE COLOR)
              RETURNS
              (COLOR)
              REPORTS NIL IMPLEMENTEDBY \COURIER.BACKCOLOR)
       (FILLPOLYGON 31 (STREAMHANDLE KNOTS TEXTURE)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.FILLPOLYGON)
       (BITBLT 32 (STREAMHANDLE BULK.DATA.SOURCE LEFT BOTTOM WIDTH HEIGHT SOURCETYPE OPERATION 
                         TEXTURE REGION)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.BITBLT)
       (SCALEDBITBLT 33 (STREAMHANDLE BULK.DATA.SOURCE LEFT BOTTOM WIDTH HEIGHT SOURCETYPE OPERATION 
                               TEXTURE REGION NUMBER)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.SCALEDBITBLT)
       (CHARSET 34 (STREAMHANDLE CHARACTERSET)
              RETURNS
              (CHARACTERSET)
              REPORTS NIL IMPLEMENTEDBY \COURIER.CHARSET)
       (FONTTYPE 35 (STREAMHANDLE)
              RETURNS
              (ATOM)
              REPORTS NIL IMPLEMENTEDBY \COURIER.FONTTYPE)
       (ROTATE 36 (STREAMHANDLE ROTATION)
              RETURNS
              (ROTATION)
              REPORTS NIL IMPLEMETEDBY \COURIER.ROTATE)
       (DRAWARC 37 (STREAMHANDLE X1 Y1 RADIUS ANGLE ROTATION BRUSH DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWARC)
       (TRANSLATE 38 (STREAMHANDLE X Y)
              RETURNS NIL REPORTS NIL IMPLEMETEDBY \COURIER.TRANSLATE)
       (SCALE2 39 (STREAMHANDLE X Y)
              RETURNS NIL REPORTS NIL IMPLEMETEDBY \COURIER.SCALE2)
       (PUSHSTATE 40 (STREAMHANDLE)
              RETURNS NIL REPORTS NIL IMPLEMETEDBY \COURIER.PUSHSTATE)
       (POPSTATE 41 (STREAMHANDLE)
              RETURNS NIL REPORTS NIL IMPLEMETEDBY \COURIER.POPSTATE)
       (DEFAULTSTATE 42 (STREAMHANDLE)
              RETURNS NIL REPORTS NIL IMPLEMETEDBY \COURIER.DEFAULTSTATE)
       (DRAWPOINT 43 (STREAMHANDLE X1 Y1 BRUSH OPERATION)
              RETURNS NIL REPORTS NIL IMPLEMETEDBY \COURIER.DRAWPOINT))
    ERRORS
      NIL)

(COURIERPROGRAM OLDIMAGESTREAM (1111 0)
    TYPES
      ((X NUMBER)
       (Y NUMBER)
       (X1 INTEGER)
       (Y1 INTEGER)
       (X2 INTEGER)
       (Y2 INTEGER)
       (COLOR NUMBER)
       (RADIUS CARDINAL)
       (DASHING (SEQUENCE CARDINAL))
       (SCALE NUMBER)
       (LEFT NUMBER)
       (BOTTOM NUMBER)
       (WIDTH NUMBER)
       (HEIGHT NUMBER)
       (SEMIMINORRADIUS NUMBER)
       (SEMIMAJORRADIUS NUMBER)
       (ORIENTATION NUMBER))
    INHERITS
      (INTERLISP IMAGESTREAM)
    PROCEDURES
      ((DRAWLINE 2 (STREAMHANDLE X1 Y1 X2 Y2 CARDINAL OPERATION COLOR DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWLINE)
       (DRAWCIRCLE 3 (STREAMHANDLE X Y RADIUS BRUSH DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWCIRCLE)
       (SCALE 7 (STREAMHANDLE SCALE)
              RETURNS
              (CARDINAL)
              REPORTS NIL IMPLEMENTEDBY \COURIER.SCALE)
       (XPOSITION 8 (STREAMHANDLE NUMBER)
              RETURNS
              (CARDINAL)
              REPORTS NIL IMPLEMENTEDBY \COURIER.XPOSITION)
       (YPOSITION 9 (STREAMHANDLE NUMBER)
              RETURNS
              (CARDINAL)
              REPORTS NIL IMPLEMENTEDBY \COURIER.YPOSITION)
       (COLOR 10 (STREAMHANDLE COLOR)
              RETURNS
              (CARDINAL)
              REPORTS NIL IMPLEMENTEDBY \COURIER.COLOR)
       (FILLCIRCLE 11 (STREAMHANDLE X Y RADIUS TEXTURE)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.FILLCIRCLE)
       (MOVETO 12 (STREAMHANDLE CARDINAL CARDINAL)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.MOVETO)
       (DRAWELLIPSE 21 (STREAMHANDLE X Y SEMIMINORRADIUS SEMIMAJORRADIUS ORIENTATION BRUSH DASHING)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.DRAWELLIPSE)
       (BITBLT 32 (STREAMHANDLE BULK.DATA.SOURCE LEFT BOTTOM WIDTH HEIGHT ATOM OPERATION TEXTURE 
                         REGION)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.BITBLT)
       (SCALEDBITBLT 33 (STREAMHANDLE BULK.DATA.SOURCE LEFT BOTTOM WIDTH HEIGHT ATOM OPERATION 
                               TEXTURE REGION NUMBER)
              RETURNS NIL REPORTS NIL IMPLEMENTEDBY \COURIER.SCALEDBITBLT)
       (CHARSET 34 (STREAMHANDLE NUMBER)
              RETURNS
              (CARDINAL)
              REPORTS NIL IMPLEMENTEDBY \COURIER.CHARSET))
    ERRORS
      NIL)

(RPAQ? \COURIERIMAGEOPS NIL)

(RPAQ? \NULLFDEV NIL)

(RPAQ? IMAGESTREAMALST '((0 . 0)))

(PUTPROPS STREAMHANDLE COURIERDEF (READSTREAMHANDLE WRITESTREAMHANDLE))
(DECLARE%: DOEVAL@COMPILE DONTCOPY

(GLOBALVARS \COURIERIMAGEOPS \NULLFDEV IMAGESTREAMALST)
)
(DECLARE%: DONTCOPY 
(DECLARE%: EVAL@COMPILE

(RECORD COURIERIMAGEDATA (CIS.COURIERSTREAM CIS.IMAGESTREAM CIS.FONT CIS.LOCALFONTS?)
                         CIS.LOCALFONTS? ← T)
)
)

(ADDTOVAR IMAGESTREAMTYPES (COURIER (OPENSTREAM \OPENIMAGESTREAM.COURIER)))
(FILESLOAD COURIERDEFS BITMAPFNS)
(\INITCOURIERIMAGESTREAM)
(PUTPROPS COURIERIMAGESTREAM COPYRIGHT ("Xerox Corporation & Stanford University" 1985 1986 1987))
(DECLARE%: DONTCOPY
  (FILEMAP (NIL (3163 20828 (\BACKCOLOR.COURIER 3173 . 3447) (\BITBLT.COURIER 3449 . 4311) (
\BLTSHADE.COURIER 4313 . 4988) (\BOTTOMMARGIN.COURIER 4990 . 5274) (\CHARSET.COURIER 5276 . 5553) (
\CHARWIDTH.COURIER 5555 . 5930) (\CHARWIDTHY.COURIER 5932 . 6310) (\CLIPPINGREGION.COURIER 6312 . 6597
) (\CLOSEFN.COURIER 6599 . 6861) (\COLOR.COURIER 6863 . 7129) (\COURIERIMAGESTREAM.BOUT 7131 . 7408) (
\DEFAULTSTATE.COURIER 7410 . 7697) (\DRAWARC.COURIER 7699 . 8115) (\DRAWCIRCLE.COURIER 8117 . 8442) (
\DRAWCURVE.COURIER 8444 . 8757) (\DRAWELLIPSE.COURIER 8759 . 9216) (\DRAWLINE.COURIER 9218 . 9544) (
\DRAWPOINT.COURIER 9546 . 9865) (\DRAWPOLYGON.COURIER 9867 . 10185) (\FILLCIRCLE.COURIER 10187 . 10506
) (\FILLPOLYGON.COURIER 10508 . 10795) (\FONT.COURIER 10797 . 11253) (\LEFTMARGIN.COURIER 11255 . 
11535) (\LINEFEED.COURIER 11537 . 11810) (\MOVETO.COURIER 11812 . 12078) (\NEWPAGE.COURIER 12080 . 
12344) (\OPENIMAGESTREAM.COURIER 12346 . 14803) (\OPERATION.COURIER 14805 . 15083) (\POPSTATE.COURIER 
15085 . 15364) (\PUSHSTATE.COURIER 15366 . 15647) (\RESET.COURIER 15649 . 15981) (\RIGHTMARGIN.COURIER
 15983 . 16265) (\ROTATE.COURIER 16267 . 16551) (\SCALE.COURIER 16553 . 16819) (\SCALEDBITBLT.COURIER 
16821 . 17801) (\SCALE2.COURIER 17803 . 18082) (\SPACEFACTOR.COURIER 18084 . 18363) (
\STRINGWIDTH.COURIER 18365 . 18742) (\TERPRI.COURIER 18744 . 19078) (\TOPMARGIN.COURIER 19080 . 19358)
 (\TRANSLATE.COURIER 19360 . 19645) (\XPOSITION.COURIER 19647 . 19925) (\YPOSITION.COURIER 19927 . 
20205) (\OUTCHAR.COURIER 20207 . 20826)) (20866 34249 (\COURIER.BACKCOLOR 20876 . 21075) (
\COURIER.BITBLT 21077 . 21598) (\COURIER.BLTSHADE 21600 . 21999) (\COURIER.BOTTOMMARGIN 22001 . 22276)
 (\COURIER.CHARSET 22278 . 22549) (\COURIER.CHARWIDTH 22551 . 22818) (\COURIER.CHARWIDTHY 22820 . 
23089) (\COURIER.CLIPPINGREGION 23091 . 23364) (\COURIER.CLOSEIMAGESTREAM 23366 . 23983) (
\COURIER.COLOR 23985 . 24176) (\COURIER.DEFAULTSTATE 24178 . 24429) (\COURIER.DRAWARC 24431 . 24806) (
\COURIER.DRAWCIRCLE 24808 . 25148) (\COURIER.DRAWCURVE 25150 . 25492) (\COURIER.DRAWELLIPSE 25494 . 
25904) (\COURIER.DRAWLINE 25906 . 26272) (\COURIER.DRAWPOINT 26274 . 26615) (\COURIER.DRAWPOLYGON 
26617 . 26965) (\COURIER.FILLCIRCLE 26967 . 27295) (\COURIER.FILLPOLYGON 27297 . 27619) (\COURIER.FONT
 27621 . 27809) (\COURIER.FONTTYPE 27811 . 28048) (\COURIER.LEFTMARGIN 28050 . 28321) (
\COURIER.LINEFEED 28323 . 28584) (\COURIER.MOVETO 28586 . 28816) (\COURIER.NEWPAGE 28818 . 29046) (
\COURIER.OPERATION 29048 . 29317) (\COURIER.OPENIMAGESTREAM 29319 . 29901) (\COURIER.OUTCHAR 29903 . 
30183) (\COURIER.POPSTATE 30185 . 30428) (\COURIER.PUSHSTATE 30430 . 30675) (\COURIER.RESET 30677 . 
30901) (\COURIER.RIGHTMARGIN 30903 . 31176) (\COURIER.ROTATE 31178 . 31445) (\COURIER.SCALE 31447 . 
31638) (\COURIER.SCALEDBITBLT 31640 . 32172) (\COURIER.SCALE2 32174 . 32417) (\COURIER.SPACEFACTOR 
32419 . 32686) (\COURIER.STRINGWIDTH 32688 . 32955) (\COURIER.TERPRI 32957 . 33183) (
\COURIER.TOPMARGIN 33185 . 33454) (\COURIER.TRANSLATE 33456 . 33705) (\COURIER.XPOSITION 33707 . 33976
) (\COURIER.YPOSITION 33978 . 34247)) (34267 38311 (\INITCOURIERIMAGESTREAM 34277 . 37745) (
READSTREAMHANDLE 37747 . 38136) (WRITESTREAMHANDLE 38138 . 38309)))))
STOP