// Sample of an extension to the Monitors control panel
// Assuming inclusion of MacHeaders
// constants used in code
#define textItem 1 // StaticText item in cdev
#define lineItem 2 // separation line
#define downItem 3 // Down Arrow user item
#define upItem 4 // Up Arrow user item
#define countItem 6 // frame for count
#define brightItem 9 // radio button " filter
#define lessItem 10 // radio button " aliasing
#define slotCount 6 // a reasonable value
#define initMsg 1 // initialization
#define okMsg 2 // user clicked OK button
#define cancelMsg 3 // user clicked Cancel button
#define hitMsg 4 // user clicked control in Options dialog box
#define nulMsg 5 // periodic event
#define updateMsg 6 // update event
#define activateMsg 7 // not used
#define deactivateMsg 8 // not used
#define keyEvtMsg 9 // keyboard event
#define superMsg 10 // show superuser controls
#define normalMsg 11 // show only normal controls
#define startupMsg 12 // code has been loaded
// resource IDs
#define MemErrAlert 130 // alert to user: out of memory
#define deepAlert 131 // all other errors
#define dataRes -4080 // store data
// global typedefs
struct ScrnRecord { // 'scrn' info for each screen
short srSlot; // slot # for the screen's video card
long srDCtlDevBase; // base address of card's memory
short srMode; // sRsrcID for desired Mode
short srFlagMask; // 0x77FE
short srFlags; // active,main screen, B/W or color
short srColorTable; // resource ID of desired 'clut'
short srGammaTable; // resource ID of desired 'gamma'
Rect srRect; // device's rectangle global coordinates short srCtlCount; // number of control calls
};
typedef struct ScrnRecord ScrnRecord; // Record type for 'scrn' info
typedef ScrnRecord *ScrnRecordPtr; // Pointer type for 'scrn' info
typedef ScrnRecordPtr *ScrnRecordHandle; // Handle type for 'scrn' info
struct ScrnRsrc { // complete 'scrn' resource
short count; // # of screens con figured here
ScrnRecord scrnRecs[slotCount]; // config for each one
};
typedef struct ScrnRsrc ScrnRsrc; // record type for 'scrn' resource
typedef ScrnRsrc *ScrnRsrcPtr; // pointer type for 'scrn' resource
typedef ScrnRsrcPtr *ScrnRsrcHandle; // handle type for 'scrn' resource
struct MonitorData { // local data for extension
Boolean isSuperUser; // is the user a superuser? short filteringSetting; // new filter setting
short oldFiltering; // previous filter setting
short sleepTime; // new sleep time
short oldSleep; // previous sleep time
};
typedef struct MonitorData MonitorData; // record type for local data
typedef MonitorData *MonitorDataPtr; // pointer type for local data
typedef MonitorDataPtr *MonitorDataHandle; // handle type for local data
// some handy typedefs