From f27ffe0014f33bf3b1f901743cb413c02af4068c Mon Sep 17 00:00:00 2001 From: James Robert Perih Date: Sun, 10 Mar 2019 14:36:08 -0600 Subject: [PATCH] Initial Commit. --- .gitignore | 4 ++++ MacBoilerplate.c | 1 + MacBoilerplate.rsrc | 0 MacBoilerplate.µ | Bin 0 -> 97950 bytes 4 files changed, 5 insertions(+) create mode 100644 .gitignore create mode 100644 MacBoilerplate.c create mode 100644 MacBoilerplate.rsrc create mode 100644 MacBoilerplate.µ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..97da048 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +**.xSYM +MacBoilerplate Data/ + + diff --git a/MacBoilerplate.c b/MacBoilerplate.c new file mode 100644 index 0000000..af70ae6 --- /dev/null +++ b/MacBoilerplate.c @@ -0,0 +1 @@ +/** * (c) 2019, James Robert Perih * Yes, two-thousand-and-nineteen. Not even kidding. * * This is just a boilerplate Mac Toolbox C Structure. Needed for basically any Mac app starter. * */ #include // Main Methods void InitToolbox(void); void InitWindow(void); void DoHandleEvent(EventRecord*); void DoRunLoop(void); // Handler Methods void HandleKeyDown(EventRecord*); void HandleMouseDown(EventRecord*); void HandleUpdate(EventRecord*); void HandleOSEvent(EventRecord*); // Globals Boolean endProgram; // if we can should exit the run loop and end the program /** * Handle Window (needs) Update events */ void HandleUpdate(EventRecord* theEvent) { BeginUpdate((WindowPtr)theEvent->message); EndUpdate((WindowPtr)theEvent->message); } /** * Handle Keydown Events */ void HandleKeyDown(EventRecord* theEvent) { switch (theEvent->what) { default: MoveTo(10, 20); DrawString("\pKey pressed."); } } /** * Handle Mousedown events */ void HandleMouseDown(EventRecord* theEvent) { WindowPtr whichWindow; WindowPartCode theWindowPart; theWindowPart = FindWindow(theEvent->where, &whichWindow); switch (theWindowPart) { case inDrag: DragWindow(whichWindow, theEvent->where, &qd.screenBits.bounds); break; case inGoAway: if (TrackGoAway(whichWindow, theEvent->where)) { DisposeWindow(whichWindow); endProgram = true; } break; case inSysWindow: SystemClick(theEvent, whichWindow); break; } } void HandleOSEvent(EventRecord* theEvent) { WindowRef window; SInt16 osMessage; Boolean isNowActive; osMessage = (theEvent->message & osEvtMessageMask) >> 24; switch (osMessage) { case suspendResumeMessage: HandleUpdate(theEvent); MoveTo(10, 60); if ((window = FrontWindow()) != NULL) { isNowActive = (theEvent->message & resumeFlag) != 0; if (isNowActive) { DrawString("\pWelcome back!"); } else { DrawString("\pWait... where did you go?"); } } else { // not our window, but how would this ever happen?! } break; case mouseMovedMessage: break; default: MoveTo(10, 90); DrawString("\pI don't know what happened..."); break; } } /** * Standard Mac Toolbox Init */ void InitToolbox(void) { InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(0L); FlushEvents(everyEvent, 0); InitCursor(); } /** * Sets up our main window. */ void InitWindow(void) { WindowPtr theWindow; theWindow = GetNewWindow(128, nil, (WindowPtr)-1L); SetPort(theWindow); } /** * Main event handler */ void DoHandleEvent(EventRecord* theEvent) { switch (theEvent->what) { case keyDown: HandleKeyDown(theEvent); // TODO: probably follow with the keycode... break; case mouseDown: HandleMouseDown(theEvent); break; case osEvt: HandleOSEvent(theEvent); break; case updateEvt: HandleUpdate(theEvent); break; } } /** * Main Runloop */ void DoRunLoop(void) { EventRecord theEvent; endProgram = false; while (endProgram != true) { if (WaitNextEvent(everyEvent, &theEvent, 30L, nil)) { DoHandleEvent(&theEvent); } else { if (FrontWindow()) { // IdleControls(FrontWindow()); } } } } /** * MAIN */ void main(void) { InitToolbox(); InitWindow(); DoRunLoop(); } \ No newline at end of file diff --git a/MacBoilerplate.rsrc b/MacBoilerplate.rsrc new file mode 100644 index 0000000..e69de29 diff --git a/MacBoilerplate.µ b/MacBoilerplate.µ new file mode 100644 index 0000000000000000000000000000000000000000..fafa171ec2a7692ee1860ff2ea0a82b9c6e78709 GIT binary patch literal 97950 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 Z-;)Wl+ee5E{>yM>fB&bSf+ibf{~wV literal 0 HcmV?d00001