rokicki@Neon.Stanford.EDU (Tomas G. Rokicki) (12/12/90)
Does anyone know how to draw a filled box to a precise device-dependent size?
For instance, I want exactly a 2 pixel by 100 pixel filled rectangle on a
300 dpi device.
Now some constraints. If that same image is printed at 1270, I want to get
the correct (ie, 2*1270/300, 100*1270/300) size, within a pixel or two.
(So just subtracting one from the size and using fill doesn't work.) I
want to get the same size rectangle no matter where on the page it is
found (so transform/itransform should help.)
I can do this with image. Let us say for the moment that image and
imagemask don't exist; I need to do this with fill.
I need this to work on an original LaserWriter and more recent PostScript
devices.
Any suggestions?
This is a recent attempt:
%! PostScript
72 300 div dup scale
1000 1000 moveto
% width height drawfilledbox -
/baddrawfilledbox {
.01 sub /height exch def .01 sub /width exch def
gsave
currentpoint transform round exch round exch itransform moveto
0 width rlineto height 0 rlineto 0 width neg rlineto fill
grestore
} def
/gooddrawfilledbox {
/height exch def /width exch def
gsave
currentpoint translate height width scale
1 1 false [1 0 0 1 0 0] { 8 string } imagemask
grestore
} def
100 { 2 100 baddrawfilledbox 0 4 rmoveto } repeat
0 100 rmoveto
100 { 2 100 gooddrawfilledbox 0 4 rmoveto } repeat
showpage