borcelf@jacobs.cs.orst.edu (Fernando Borcel) (01/12/89)
Here's a LSP example on drawing an ICN# or its mask (something that puzzled me
for awhile...)
---
var
mybitMap: BitMap; {Where the ICN# picture is saved}
bounds: rect; {Part of the icon to be drawn (ICON or Mask)}
destRect: rect; {Where the icon will be drawn in the window}
mywindow: GrafPtr; {The window where the drawing occurs}
MyIcon: Handle; {Handle to an ICN#}
...
...
MyIcon:= getResource('ICN#', icnID);
...
...
mybitMap.baseAddr := MyIcon^; {MybitMap points now to MyIcon}
mybitMap.rowbytes := 4; {ICN#'s are 4 bytes wide}
setpt(myBitMap.bounds.topleft, 0, 0);
setpt(mybitMap.bounds.botright, 32, 64);
{use next two lines to draw icon}
setrect(bounds, 0, 0, 32, 32); {Upper part of MyIcon}
copybits(mybitMap, mywindow^.portbits, bounds, destrect, srcCopy, nil);
{use next two lines to draw Mask on the Icon}
setrect(MaskBounds, 0, 32, 32, 64); {Lower part of MyIcon}
copybits(mybitMap, mywindow^.portbits, Maskbounds, destrect, Mask, nil);
...
---
Of course you'll have to keep track of all your Icon's locations yourself, but
other than that it's pretty straight-forward. It worked for me...
-Fernando
___ __ |{tektronix,hp-pcd}!orstcs!
/ _ _ _ _ _ _/ _ /_/ _ _ _ _ / | jacobs.cs.orst.edu!borcelf
/- /_// // / _// // // / / )/ // // /_// |
_/ /_ / / //_// //_//_/ /__//_// /_ /_ /_ |borcelf@jacobs.cs.orst.edu