[comp.windows.news] Scanned images in NeWS

adrianb@natmlab.dms.oz (Adrian Baddeley) (03/11/88)

Question: is there a 'clean' way to control the decisions 
made by the NeWS server in displaying scanned images ?

We have several Sun-3's running NeWS 1.1 and we display
images using the NeWS/PostScript operators "image",
"buildimage" or "readcanvas". Two problems appear when
you are doing this for image analysis research (rather than
just to achieve nice graphics). 

	- For small images (say less than 30 pixels across) 
	the NeWS server's colour dithering actually smears
	whole pixels. What should be a 30x30 checkerboard
	looks like it has been in the rain.
	See code below for an example.

	- NeWS has decreed the contents of the screen's 
	hardware colour lookup table, and these 256 colours
	may give a bad rendering of some images. There doesn't
	seem to be a NeWS facility for altering the colour table.
	We have resorted to tricking NeWS by altering the
	framebuffer colour map using pixrect calls (or writing 
	directly to /dev/fb). Any better suggestions??

Example of dithering problem: the following asks for
an n-by-n image of a single colour. It should appear as a 
solid block of colour. Instead, for small n you get a 
rather fetching watercolour effect.

..........................................
100 100 scale
/str 3 string def
/x 0 def /y 0 def /negy 0 def                                             
/makeimage {  					
	currentfile str readhexstring pop pop	% read byte data
	/y exch store /x exch store		% read width & height
        /negy y neg store 
        x y 24 [x 0 0 negy 0 y] {str} buildimage imagecanvas % display
} def
50 50 makeimage FF0000		% a 50x50 block of red: comes out OK
1 1 makeimage FF0000		% a 1x1 block of red: looks smeared
10 10 makeimage FF0000		% a 10x10 block of red: bottom line smeared

.................................................................
		"Dyslexia? What's lysdexia?"
Adrian Baddeley, CSIRO Division of Mathematics & Statistics, Sydney.
POST: CSIRO Div of Maths & Stats,Box 218, Lindfield NSW 2070, Australia.
PHONE: +61 2 467 6062 (24 hrs) 	ACSNET: adrianb@natmlab.dms.oz.au{@munnari.oz}