Path: utzoo!utgpu!water!watmath!clyde!rutgers!husc6!mailrus!ames!ucsd!sdcsvax!ucsdhub!hp-sdd!hplabs!hpcea!hpfcdc!hpfcdq!glen From: glen@hpfcdq.HP.COM (Glen Robinson) Newsgroups: comp.graphics Subject: Re: HP Paintjet ? Message-ID: <390009@hpfcdq.HP.COM> Date: 19 Feb 88 23:42:35 GMT References: <124@rna.UUCP> Organization: Hewlett-Packard - Fort Collins, CO Lines: 56 / hpfcdq:comp.graphics / dan@rna.UUCP (Dan Ts'o) / 3:55 pm Feb 10, 1988 / > Has anyone used and programmed an HP Paint Jet color printer ? >Any comments about its quality of output, programmability, etc. ? How hard >would it be to write a UNIX program for the Paint Jet which would allow it >to print color RBG raster images (greatly dithered, I'm sure)... ---------- I've had a bit of experience (did the pcltrans for HP-UX mentioned in other responses). The output can be quite exceptional actually. We support bitmapped displays ranging from 400 X 512 with 16 colors to 1280 X 1024 with 24 bit deep indices and 256 deep color map (every pixel on the screen can be unique). Thru a series of design iterations we decided to access the PaintJet with three planes per dot row (ie r, g, and b), use error diffusion, and interleave processing with scanning. Essentially we took the F-S algorithm spreading the error to 4 adjacent pixels. We use a jump table with the appropriate error values plus or minus half cmap size with four entries each naturally to get the value to propagate. Note that the sum of the error values for each pixel MUST equal the total error for that pixel (fairly easy to do masaging the entries in a table). Paintjet has 9 nozzles (dot row) per actual pass of the head so you can interleave printing 9 sets of 3 rows (r,g, and b) with computing the next 9 sets. Hopefully you have some kind of a parallel interface (centronics or HPIB) otherwise you MUST encode the output if you want any reasonable kind of I/O performance. In any case if you are using serial you probably do NOT want to interleave - i.e. build the whole output file and then cat it. We used lots of other things which are a bit proprietary so I won't go in to them. One thing we do have that helps within Starbase is a method of creating a standardized (for Starbase) bitmap file image containing frame buffer data, color map, various modes, display enables, etc which simplifies things for us. Essentially theses files can be written to and from a framebuffer and used for pcltrans printing. I don't know what size framebuffer you will be dumping, but you should recognize that this is a VERY CPU INTENSIVE algorithm. We chose to error diffuse across the output page regardless of whether or not pixel expansion was taking place (Paintjet is 1440 X 1980 pixels). The end result for a full page output page (from a 770 X 990 window) with an unloaded 4 mips machine (350SRX) is in the order of 6 1/2 to 7 minutes. (note that a simple cat of this size image printing background et al will take on the order of 4 minutes) A final note, it has probably occured to you that screens tend to be largest in the X dimension, while Paintjet is largest in the Y dimension. Hence if you are going to get a full page you will have to do rotation - we used - 90. Good Luck Glen Robinson