Important: The information in this document is obsolete and should not be used for new development.
DeviceLoopFor drawing images that are optimized for every screen they cross, use the
PROCEDURE DeviceLoop (drawingRgn: RgnHandle; drawingProc: DeviceLoopDrawingProcPtr; userData: LongInt; flags: DeviceLoopFlags);
- A handle to the region in which you will draw; this drawing region uses coordinates that are local to its graphics port.
- A pointer to your own drawing procedure.
- Any additional data that you wish to supply to your drawing procedure.
- One or more members of the set of flags defined by the
DeviceLoopFlagsdata type:TYPE DeviceLoopFlags = SET OF (singleDevices,dontMatchSeeds,allDevices);
- These flags are described in the following text; if you want to use the default behavior of
DeviceLoop, specify an empty set () in this parameter.
DeviceLoopprocedure searches for graphics devices that intersect your window's drawing region, and it calls your drawing procedure for each video device it finds. In the
drawingRgnparameter, supply a handle to the region in which you wish to draw; in the
drawingProcparameter, supply a pointer to your drawing procedure. In the
flagsparameter, you can specify members of the set of these flags defined by the
singleDevices If this flag is not set,
DeviceLoopcalls your drawing procedure only once for each set of similar graphics devices, and the first one found is passed as the target device. (It is assumed to be representative of all the similar graphics devices.) If you set the
DeviceLoopdoes not group similar graphics devices--that is, those having identical pixel depths, black-and-white or color settings, and matching color table seeds--when it calls your drawing procedure.
dontMatchSeeds If you set the
DeviceLoopdoesn't consider the
ColorTablerecords for graphics devices when comparing them;
DeviceLoopignores this flag if you set the
allDevices If you set the
drawingRgnparameter and calls your drawing procedure for every device. The value of current graphics port's
visRgnfield is not affected when you set this flag.
For each dissimilar video device that intersects this region,
DeviceLoopcalls your drawing procedure. For example, after a call to the Event Manager procedure
BeginUpdate, the region you specify in the
drawingRgnparameter can be the same as the visible region for the active window. Because
DeviceLoopprovides your drawing procedure with the pixel depth and other attributes of each video device, your drawing procedure can optimize its drawing for each video device--for example, by using the
HiliteColorprocedure to set magenta as the highlight color on a color video device.
DeviceLoopprocedure may move or purge memory blocks in the application heap. Your application should not call this procedure at interrupt time.
SEE ALSOListing 5-1 on page 5-7 illustrates the use of
DeviceLoop. See page 5-34 for a description of the drawing procedure you must provide for the
drawingProcparameter. Offscreen graphics worlds are described in the next chapter. The
HiliteColorprocedure is described in the chapter "Color QuickDraw" in this book.