/* GraphicsModule_Types.h Data types and structures used by After Dark graphics modules. For more information, consult the programmer's section of the manual. By Patrick Beard and Bruce Burkhalter Copyright ©1989, 1990, 1991 Berkeley Systems, Inc. */ #ifndef __GRAPHICSMODULE_TYPES__ #define __GRAPHICSMODULE_TYPES__ #ifndef __QUICKDRAW__ #include "QuickDraw.h" #endif /* #ifdef applec #ifndef __SOUND__ #include#endif #endif #ifdef THINK_C #include #endif */ #if THINK_C == 1 #include #else #ifndef __SOUND__ #include "Sound.h" #endif #endif /* Messages that are passed to main() by After Dark: Initialize - Allocate module's storage and get started. Close - Deallocate storage and shutdown. Blank - Blank out the screen (make it black). DrawFrame - Draw next frame of animation sequence. ModuleSelected - The module has specific processing to do when selected. DoAbout - Module can execute special code for an about message. ButtonMessage - Module wants to put up a dialog when a button is pressed. */ typedef enum { Initialize, Close, Blank, DrawFrame, ModuleSelected, About, ButtonMessage=8 } GMMessage; /* Return messages */ /* The first three messages can be returned by DoInitialize(), DoClose(), DoBlank(), DoDrawFrame() RefreshResources is valid only after a "SetUp" message. */ enum { ModuleError = -1, /* After Dark will display the string params->errorMessage. */ RestartMe = 1, /* After Dark will call main() with an "Initialize" message. */ ImDone, /* After Dark will not call main() again and take over drawing. */ RefreshResources /* After Dark will redraw all controls after "SetUp" message. */ }; /* bits in systemConfig that are special. */ #define AnyMultiBit (1L << 1) /* At least one monitor is multibit*/ #define MultiModuleRunning (1L << 10) /* multimodule is present. */ #define ModuleMayNotAnimate (1L << 9) /* you may not animate. */ #define SoundAvailable (1L << 15) /* do we have sound? */ #define ExtensionsAvailable (1L << 14) /* are there extensions? */ /* types for looking at the monitors on the system. */ struct MonitorData { Rect bounds; /* limiting rect of monitor (global coords) */ Boolean synchFlag; /* flag set by monitor vbl task */ char curDepth; /* current pixel depth */ }; typedef struct MonitorData MonitorData, *MonitorDataPtr; struct MonitorsInfo { short monitorCount; /* number of monitors on system */ MonitorData monitorList[1]; /* the monitors */ }; typedef struct MonitorsInfo MonitorsInfo, *MonitorsInfoPtr; /* copy of quickdraw globals */ struct AD_QDGlobals { GrafPtr qdThePort; Pattern qdWhite; Pattern qdBlack; Pattern qdGray; Pattern qdLtGray; Pattern qdDkGray; Cursor qdArrow; BitMap qdScreenBits; long qdRandSeed; }; typedef struct AD_QDGlobals AD_QDGlobals, *AD_QDGlobalsPtr; struct ExtensionElement { OSType selector; Ptr entryPoints; }; typedef struct ExtensionElement ExtensionElement; struct ExtensionTable { short extensionCount; ExtensionElement extensionList[1]; }; typedef struct ExtensionTable ExtensionTable, *ExtensionTablePtr; /* the parameters passed in at every call to the graphics module */ struct GMParamBlock { short controlValues[4]; /* the values of the user set sliders. */ MonitorsInfoPtr monitors; /* what monitors are connected and their depth. */ Boolean colorQDAvail; /* whether color is around. */ short systemConfig; /* bitmask of system configuration. */ AD_QDGlobalsPtr qdGlobalsCopy; /* read-only qd globals */ short brightness; /* message variable to tell NL to dim monitor */ Rect demoRect; /* rect of the Control Panel if in Demo Mode. */ StringPtr errorMessage; /* string to be displayed if error encountered. */ SndChannelPtr sndChannel; /* sound channel allocated for module's use. */ short adVersion; /* BCD After Dark version number. */ ExtensionTablePtr extensions; /* After Dark extensions table. */ }; typedef struct GMParamBlock GMParamBlock, *GMParamBlockPtr; //Some prototypes OSErr DoInitialize(Handle *storage, RgnHandle blankRgn, GMParamBlockPtr params); OSErr DoBlank(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params); OSErr DoDrawFrame(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params); OSErr DoClose(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params); OSErr DoSetUp(RgnHandle blankRgn, short message, GMParamBlockPtr params); OSErr DoSelected(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params); OSErr DoAbout(Handle storage, RgnHandle blankRgn, GMParamBlockPtr params); #endif