Important: The information in this document is obsolete and should not be used for new development.
GDevice
Color QuickDraw stores state information for video devices and offscreen graphics worlds inGDevicerecords. When the system starts up, it allocates and initializes one handle to aGDevicerecord for each video device it finds. When you use theNewGWorldfunction (described in the chapter "Offscreen Graphics Worlds" in this book), Color QuickDraw automatically creates aGDevicerecord for the new offscreen graphics world. The system links theseGDevicerecords in a list, called the device list. (You can find a handle to the first element in the device list in the global variableDeviceList.) By default, theGDevicerecord corresponding to the first video device found is marked as the current device; all other graphics devices in the list are initially marked as inactive.
When the user moves a window or creates a window on another screen, and your application draws into that window, Color QuickDraw automatically makes the video device for that screen the current device. Color QuickDraw stores that information in the global variable
- Note
- Printing graphics ports, described in the chapter "Printing Manager" in this book, do not have
GDevicerecords.![]()
TheGDevice.
GDevicerecords that correspond to video devices have drivers associated with them. These drivers can be used to change the mode of the video device from black and white to color and to change the pixel depth. The set of routines supported by a video driver is defined and described in Designing Cards and Drivers for the Macintosh Family, third edition. Application-createdGDevicerecords usually don't require drivers.A
GDevicerecord is defined as follows:
TYPE GDevice = RECORD gdRefNum: Integer; {reference number of screen } { driver} gdID: Integer; {reserved; set to 0} gdType: Integer; {device type--indexed or direct} gdITable: ITabHandle; {handle to inverse table for } { Color Manager} gdResPref: Integer; {preferred resolution} gdSearchProc: SProcHndl; {handle to list of search } { functions} gdCompProc: CProcHndl; {handle to list of complement } { functions} gdFlags: Integer; {graphics device flags} gdPMap: PixMapHandle; {handle to PixMap record for } { displayed image} gdRefCon: LongInt; {reference value} gdNextGD: GDHandle; {handle to next graphics device} gdRect: Rect; {graphics device's global bounds} gdMode: LongInt; {graphics device's current mode} gdCCBytes: Integer; {width of expanded cursor data} gdCCDepth: Integer; {depth of expanded cursor data} gdCCXData: Handle; {handle to cursor's expanded } { data} gdCCXMask: Handle; {handle to cursor's expanded } { mask} gdReserved: LongInt; {reserved for future use--must } { be 0} END;
Field Description
gdRefNum- The reference number of the driver for the screen associated with the video device. For most video devices, this information is set at system startup time.
gdID- Reserved. If you create your own
GDevicerecord, set this field to 0.gdType- The general type of graphics device. Values include
CONST clutType = 0; {CLUT device--that is, one with } { colors mapped with a color } { lookup table} fixedType = 1; {fixed colors--that is, the } { color lookup table can't } { be changed} directType = 2; {direct RGB colors}
- These types are described in more detail in the chapter "Color Manager" in Advanced Color Imaging on the Mac OS.
gdITable- A handle to the inverse table for color mapping; the inverse table is described in the chapter "Color Manager" in Advanced Color Imaging on the Mac OS.
gdResPref- The preferred resolution for inverse tables.
gdSearchProc- A handle to the list of search functions, as described in the chapter "Color Manager" in Advanced Color Imaging on the Mac OS; its value is
NILfor the default function.gdCompProc- A handle to a list of complement functions, as described in the chapter "Color Manager" in Advanced Color Imaging on the Mac OS; its value is
NILfor the default function.gdFlags- The
GDevicerecord's attributes. To set the attribute bits in thegdFlagsfield, use theSetDeviceAttributeprocedure (described on page 5-21)--do not set these flags directly in theGDevicerecord. The constants representing each bit are listed here.CONST {flag bits for gdFlags field of GDevice record} gdDevType = 0; {if bit is set to 0, graphics device is } { black and white; if set to 1, } { graphics device supports color} burstDevice = 7; {if bit is set to 1, graphics device } { supports block transfer} ext32Device = 8; {if bit is set to 1, graphics device } { must be used in 32-bit mode} ramInit = 10; {if bit is set to 1, graphics device has } { been initialized from RAM} mainScreen = 11; {if bit is set to 1, graphics device is } { the main screen} allInit = 12; {if bit is set to 1, all graphics devices } { were initialized from 'scrn' resource} screenDevice = 13; {if bit is set to 1, graphics device is } { a screen} noDriver = 14; {if bit is set to 1, GDevice } { record has no driver} screenActive = 15; {if bit is set to 1, graphics device is } { active}Your application should never need to directly change the fields of a
gdPMap- A handle to a
PixMaprecord giving the dimension of the image buffer, along with the characteristics of the graphics device (resolution, storage format, color depth, and color table).PixMaprecords are described in the chapter "Color QuickDraw" in this book. ForGDevicerecords, the high bit of the global variableTheGDevice^^.gdPMap^^.pmTable^^.ctFlagsis always set.gdRefCon- A value used by system software to pass device-related parameters. Since a graphics device is shared, you shouldn't store data here.
gdNextGD- A handle to the next graphics device in the device list. If this is the last graphics device in the device list, the field contains 0.
gdRect- The boundary rectangle of the graphics device represented by the
GDevicerecord. The main screen has the upper-left corner of the rectangle set to (0,0). All other graphics devices are relative to this point.gdMode- The current setting for the graphics device mode. This value is passed to the video driver to set its pixel depth and to specify color or black and white; applications don't need this information. See Designing Cards and Drivers for the Macintosh Family, third edition, for more information about the modes specified in this field.
gdCCBytes- The
rowBytesvalue of the expanded cursor. Your application should not change this field. Cursors are described in the chapter "Cursor Utilities."gdCCDepth- The depth of the expanded cursor. Your application should not change this field.
gdCCXData- A handle to the cursor's expanded data. Your application should not change this field.
gdCCXMask- A handle to the cursor's expanded mask. Your application should not change this field.
gdReserved- Reserved for future expansion; it must be set to 0 for future compatibility.
GDevicerecord. If you find it absolutely necessary for your application to so, immediately use theGDeviceChangedprocedure to notify Color QuickDraw that your application has changed theGDevicerecord. TheGDeviceChangedprocedure is described in the chapter "Color QuickDraw" in this book.