XEROX AISBLT 2 4 1 AISBLT 1 4 By: Nick Briggs (Briggs.pa@xerox.com) This document last edited on September 21, 1988. INTRODUCTION The AISBLT module provides a fast(er) interface for reading AIS format files into Lisp bitmaps. It does not provide all the arcane features found in the READAIS module. CLIENT INTERFACE The functions provided by the AISBLT module which are intended to be used by clients are (AISBLT.BITMAP FILE SOURCE-LEFT SOURCE-BOTTOM DESTINATION DESTINATION-LEFT DESTINATION-BOTTOM WIDTH HEIGHT HOW FILTER) [Function] The SOURCE-LEFT, SOURCE-BOTTOM, DESTINATION, DESTINATION-LEFT, DESTINATION-BOTTOM, WIDTH, and HEIGHT arguments are interpreted in the same way as the corresponding arguments to BITBLT. FILE is either an open stream, or a filename. If a filename is provided it will be passed to FINDFILE, which searches the directories specified by the special variable AISDIRECTORIES [Variable] which should be a list of directories where the AIS file is likely to be found. The argument HOW should be one of the atoms FSA, :FSA, TRUNCATE, :TRUNCATE. HOW is only applicable in the cases where the source and destination are a different number of bits per pixel (source bpp > destination bpp). If HOW is not specified, it defaults to FSA. FSA indicates that the source should be reduced to the bits per pixel of the destination by applying the Floyd-Steinberg dithering algorithm, as described in Newman & Sproull, Principles of Interactive Computer Graphics, pg. 226. TRUNCATE indicates that only the high order bit(s) of the source should be used. The function (AISFILEHEADER STREAM) [Function] Can be used to determine whether a file has a well formed AIS header, and what the attributes indicated in the header are. The result of the function is a property list describing the AIS attributes: :RASTER [Key] The :RASTER property will always be present. The value is also a property list :SCAN-COUNT [Key] An integer value indicating the number of scan lines in the image :SCAN-LENGTH [Key] An integer value indicating the number of pixels in a scan line of the image :SCAN-DIRECTION [Key] An integer, indicating the direction of the scan. Scan direction 3 is top to bottom, left to right, and is the only scan direction that this package will deal with at this time. :SAMPLES-PER-PIXEL [Key] An integer, indicating the number of samples per pixel. This package will only deal with files having one sample per pixel at this time. :CODING-TYPE [Key] An unsigned integer indicating the coding type of the raster image. A value of 1 indicates uncompressed array format, and is the only type recognized by this package at this time. For convenience, the constant AIS-RASTER-CODING-UCA [Constant] is bound to the value 1. If the raster coding types are extended, more constants will be defined. The rest of the properties are coding type dependent. For the AIS-RASTER-CODING-UCA file, the following properties are present: :BITS-PER-SAMPLE [Key] An unsigned integer, indicating number of bits per sample :WORDS-PER-SCAN-LINE [Key] An unsigned integer, indicating how many 16 bit words form a single scan line of the image. :SCAN-LINES-PER-BLOCK [Key] A signed integer, indicating how many scan lines are present before there is block padding. A value of -1 indicates no blocking. :PADDING-PER-BLOCK [Key] A signed integer, indicating how many padding words per block. A value of -1 indicates no blocking. :PLACEMENT [Key] The placement property is optional. The value is a property list with keys :LEFT, :BOTTOM, :WIDTH, and :HEIGHT. The values are unsigned integers. :PHOTOMETRY [Key] The photomety property is optional. The value is a property list with keys :SIGNAL (integer), :SENSE (integer), :SCALE (integer), :SCALE-A (pair of integers), :SCALE-B (pair of integers), :SCALE-C (pair of integers), :SPOT-TYPE (integer), :SPOT-WIDTH (integer), :SPOT-LENGTH (integer), :SAMPLE-MIN (integer), and :SAMPLE-MAX (integer). A complete description of the meaning of the photometry parameters can be found on page 38 of the AIS format description, filed on {indigo}aismanual.press. (LIST ((PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "") STARTINGPAGE# 1) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL))) (PAGE NIL (PAPERSIZE Letter FOLIOINFO (ARABIC "" "")) (0 0 612 792) ((FOLIO NIL (PARALOOKS (QUAD CENTERED) CHARLOOKS (SUPERSCRIPT 0 INVISIBLE OFF SELECTPOINT OFF PROTECTED OFF SIZE 10 FAMILY MODERN OVERLINE OFF STRIKEOUT OFF UNDERLINE OFF EXPANSION REGULAR SLOPE REGULAR WEIGHT MEDIUM INVERTED OFF USERINFO NIL STYLE NIL) FORMATINFO (ARABIC "" "")) (174 36 288 36) NIL) (HEADING NIL (HEADINGTYPE RUNNINGHEAD) (84 744 528 36) NIL) (TEXT NIL NIL (84 96 456 600) NIL)))))2$$2,,8,8H PAGEHEADING RUNNINGHEAD HELVETICA MODERN MODERN MODERN MODERNMODERN LOGO HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN  HRULE.GETFNMODERN '0 X   VP >`  PBM!c:\eQNz