// 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).  Fallback for demos
// running a stripped-down toolset chain - DrawMenuBar() works in
// the standard startdesk() environment as of the post-InitCursor
// landing; prefer iigs/uiBuilder.h's uiBuilderInstallMenuBar.
void paintMenuBarTitles(const unsigned char *const *pascalTitles, unsigned short count);

#ifdef __cplusplus
}
#endif

#endif
