(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