// iigs/desktop.h - Full Window Manager desktop startup helper. // // Equivalent to ORCA-C's `startdesk` library function: brings up the // stack of toolsets needed to open titled windows, draw menus, // dispatch events, etc. Use this before `NewWindow` for any titled- // window application. See demos/orcaFrame.c for a minimal usage // example. // // On success, `desktopUserId()` returns the Memory Manager userID // assigned to this application. Pass it to other toolsets that need // a userID (e.g. ID arg to `DisposeAll`). // // startdesk() takes a screen-width hint: // 320 - SHR 320 mode (16 colors) // 640 - SHR 640 mode (4 colors) // This is passed to QDStartUp's masterSCB and to EMStartUp's // xMax/yMax. Other dimensions are derived. #ifndef IIGS_DESKTOP_H #define IIGS_DESKTOP_H #ifdef __cplusplus extern "C" { #endif // Returns the user-ID assigned by MMStartUp. Pass to enddesk(). unsigned short startdesk(unsigned short screenWidth); // Tears down the desktop environment in reverse-startup order. void enddesk(unsigned short userId); // Read-only accessor — same value startdesk() returned. unsigned short desktopUserId(void); // Read-only accessor — base of the per-toolset 0x700-byte DP block // startdesk() allocated. Slot $300 (256 bytes) is reserved for the // Menu Manager: pass `desktopDpBase() + 0x300` to MenuStartUp. unsigned short desktopDpBase(void); // Paint a clean Finder-style backdrop directly into SHR: white menu // bar (rows 0..12), 1-pixel black separator (row 13), white desktop // (rows 14..199). Bypasses the WM's dithered desktop fill (which // MAME's NTSC chroma simulator renders as colored noise). Call // AFTER startdesk() and BEFORE NewWindow. void paintDesktopBackdrop(void); // Paint menu bar titles via QD's DrawString. Each entry is a // pascal-string pointer (byte length + chars). Use as a manual // substitute for DrawMenuBar(), which hangs in our environment. void paintMenuBarTitles(const unsigned char *const *pascalTitles, unsigned short count); #ifdef __cplusplus } #endif #endif