home *** CD-ROM | disk | FTP | other *** search
Text File | 1989-01-01 | 1.9 KB | 84 lines | [TEXT/MPS ] |
- {
- COPYRIGHT (C) 1984-1989 Apple Computer,Inc.
- All rights reserved
- }
- UNIT IconLDEF;
-
- INTERFACE
-
- Uses MemTypes, QuickDraw, OSIntf, ToolIntf, PackIntf,
- ResEd;
-
- PROCEDURE DrawCell( Message: INTEGER; lSelect: BOOLEAN; lRect: Rect; lCell: Point;
- lDataOffset, lDataLen: INTEGER; lh: ListHandle );
-
- IMPLEMENTATION
-
- { This is the custom drawProc for the list (which contains the resource ID's). It
- simply draws the icon in the given rect and frames a selection rect around it if
- told to. }
- PROCEDURE DrawCell(Message: INTEGER; lSelect: BOOLEAN; lRect: Rect; lCell: Point;
- lDataOffset, lDataLen: INTEGER; lh: ListHandle);
-
- VAR
- i: Handle;
-
- { This routine simply looks up in the list at the given cell, extracts the ID and
- gets the resource called for. Returns NIL if not found. Note, this assumes
- the resfile is set up correctly }
- FUNCTION IconFetch(lCell: point; lHandle: ListHandle): Handle ;
- CONST IconSize = 128;
-
- VAR
- offset, len, id: INTEGER;
- tempH:Handle;
-
- BEGIN
- IconFetch := NIL;
- len:=2;
- LGetCell(@id, len, lCell, lHandle); { Get the ID from the list. }
- IF len > 0 THEN
- BEGIN { Load the resource since we want to draw it. }
- tempH:=Get1Res('ICON', id );
- IF (SizeResource(tempH) < IconSize) THEN
- IconFetch := NIL { Bad resource. }
- ELSE
- IconFetch := tempH;
- END;
- END;
-
- BEGIN { DrawCell }
- CASE message OF
- lInitMsg:
- BEGIN
- WITH lh^^.indent DO
- BEGIN
- h := 8;
- v := 8;
- END;
- END;
- lDrawMsg, lHiliteMsg:
- BEGIN
- { Always use the right sized rectangle. }
- lRect.bottom := lRect.top + lh^^.cellSize.v;
- lRect.right := lRect.left + lh^^.cellSize.h;
-
- i := IconFetch(lCell, lh);
- EraseRect(lRect);
- InsetRect(lRect, lh^^.indent.h, lh^^.indent.v);
- IF lSelect THEN
- FrameRect(lRect); { Select the icon by framing it. }
- IF i <> NIL THEN
- BEGIN
- IF i^ <> NIL THEN
- BEGIN
- InsetRect(lRect, lh^^.indent.h, lh^^.indent.v);
- PlotIcon(lRect, i);
- END;
- END;
- END;
- END;
- END;
-
- END.
-