IMDKERN - This directory contains the source for the simple GIO/IMD kernel, used to draw graphics in a display frame buffer. It uses the data stream interface to open the frame buffer and uses code from SGI to rasterize the graphics. Special graphcap entries used by this kernel: CI Color index of graphics pixels FN Display frame buffer LO Width in pixels of line size 1.0 LS Difference in pixels between line sizes DB Print debug messages? Revision notes... ---------------- IMDKERN notes 20 December 1989 Z. G. Levay, STScI o Make private copy idskern of gio/sgikern. o Change "sgi" filename and procedure prefixes to "imd" throughout the code. Change sgk.x to idk.x. Changed imd_open to imd_fopen to aviod conflict with a procedure in libds. The files are: font.com, font.h, idk.com, idk.h, idk.x, imd.com, imd.h, imdcancel.x, imdclear.x, imdclose.x, imdclws.x, imdcolor.x, imddrawch.x, imdescape.x, imdfa.x, imdfaset.x, imdflush.x, imdfont.x, imdfopen.x, imdgcell.x, imdinit.x, imdipl.x, imdkern.par, imdline.x, imdopenws.x, imdpcell.x, imdpl.x, imdplset.x, imdpm.x, imdpmset.x, imdreset.x, imdtx.x, imdtxset.x, ltype.dat, mkpkg, t_imdkern.x, x_imdkern.x, o Modify mkpkg to build the task locally without updating the system library or install the task. o Add global parameters "frame" and "color" to task imdkern. Modified imd_fopen to read task parameters and pass as arguments to imd_openws. Added these parameters to imd_openws and the call to idk_open. o In idk_open, added frame and color to the calling sequence. Added a call to imd_mapframe to open the frame buffer as an image, changed setting the bitmap size to use the frame buffer size (via IMIO) instead of graphcap parameters. Set the bits per bitmap word to 8. Set the maximum bitmap size to 2048x2048 pixels. Ripped out the code for opening the SGI metacode file, DD string manipulation, etc. Added ttygeti calls to read the frame and color from the graphcap in case they were passed as INDEF. In idk_frame, changed the code to map an input and output section of the frame buffer (via IMIO), read the bitmap line by line, testing each word for any on bits, and writing the color index value to the frame buffer pixel for each on bitmap bit. Set the I/O buffer sizes to 64 lines (somewhat arbitrarily). In idk_open, Changed the code to compute the x and y max (right and top edges) of the bitmap by one pixel to draw to the edge. In idk_linewidth, changed the code to compute the gap at the frame edges by one pixel. Removed sections of code dealing with non-bitmap format, rotated or flipped bitmaps. ---------------- Installation and checkout. (12/21/89 dct) Installed code in gio/imdkern. Put hooks for new task IMDKERN in the PLOT package. Moved imdkern.par to plot, moved frame,color params to after "generic". Deleted file imdipl.x, identical to imdpl.x. Renamed imdfopen.x to imdopen.x for consistency with other kernels; changed procedure name to imd_opendev to avoid name collision with imdopen. Deleted idk.h, contains only SGI metecode defs not used in idk.x. In t_imdkern.x, moved the clgeti's for color,frame to after the clgeti for "generic" (required by startup protocol for graphics subkernel). For the generic case, added initializers to set values to -1 to flag not set. Got rid of the IS_INDEFs in idk.x. Nothing wrong with these, I just try to avoid using INDEF in low level system code. mkpkg - link xx_imdkern.e, not x_imdkern.e, rename in the install (this is necessary to permit local testing of new versions, else the installed BIN version is used).