(FILECREATED "27-Mar-85 00:20:29" {ERIS}<LISPNEW>PATCHES>READBITMAPPATCH.;2 2438   

      changes to:  (FNS READBITMAP)

      previous date: "27-Mar-85 00:15:25" {ERIS}<LISPNEW>PATCHES>READBITMAPPATCH.;1)


(* Copyright (c) 1985 by Xerox Corporation. All rights reserved.)

(PRETTYCOMPRINT READBITMAPPATCHCOMS)

(RPAQQ READBITMAPPATCHCOMS ((FNS READBITMAP)))
(DEFINEQ

(READBITMAP
  [LAMBDA (FILE)                                             (* rmk: "27-Mar-85 00:20")
                                                             (* reads the a bitmap from the input file.)
    (SKIPSEPRS FILE)
    (OR (EQ (READC FILE)
	    (QUOTE %())
	(ERROR "BAD FORMAT OF BITMAP IN FILE"))
    (PROG [BASE BM W BITSPERPIXEL (WIDTH (RATOM FILE))
		(HEIGHT (RATOM FILE))
		(STRM (GETSTREAM FILE (QUOTE INPUT]
          [SETQ BITSPERPIXEL (SELECTQ (SKIPSEPRS STRM)
				      ((%" %))
					1)
				      (PROGN                 (* after height can come the bits per pixel.)
					     (RATOM FILE]
          (SETQ W (FOLDHI (ITIMES BITSPERPIXEL WIDTH)
			  BITSPERWORD))
          (SETQ BM (BITMAPCREATE WIDTH HEIGHT BITSPERPIXEL))
          (SETQ BASE (fetch BITMAPBASE of BM))
          (COND
	    ((OR (EQ WIDTH 0)
		 (EQ HEIGHT 0)))
	    [(EQ (SKIPSEPRS STRM)
		 (QUOTE %"))
	      (FRPTQ HEIGHT (SKIPSEPRS STRM)
		     (OR (EQ (\BIN STRM)
			     (CHARCODE %"))
			 (GO BAD))
		     (FRPTQ W [\PUTBASEBYTE BASE 0 (LOGOR (LLSH (IDIFFERENCE (\BIN STRM)
									     (SUB1 (CHARCODE A)))
								4)
							  (IDIFFERENCE (\BIN STRM)
								       (SUB1 (CHARCODE A]
			    [\PUTBASEBYTE BASE 1 (LOGOR (LLSH (IDIFFERENCE (\BIN STRM)
									   (SUB1 (CHARCODE A)))
							      4)
							(IDIFFERENCE (\BIN STRM)
								     (SUB1 (CHARCODE A]
			    (SETQ BASE (\ADDBASE BASE 1)))
		     (OR (EQ (\BIN STRM)
			     (CHARCODE %"))
			 (GO BAD]
	    (T (GO BAD)))
          (SKIPSEPRS STRM)
          (OR (EQ (\BIN STRM)
		  (CHARCODE %)))
	      (GO BAD))
          (RETURN BM)
      BAD (ERROR "BAD FORMAT OF BITMAP IN FILE"])
)
(PUTPROPS READBITMAPPATCH COPYRIGHT ("Xerox Corporation" 1985))
(DECLARE: DONTCOPY
  (FILEMAP (NIL (371 2352 (READBITMAP 381 . 2350)))))
STOP