1 line
5.8 KiB
C
Raw Normal View History

/*------------------------------------------------------------------------------ # # Macintosh Developer Technical Support # # Simple Color QuickDraw Sample Application # # SillyBalls # # SillyBalls.c - C Source # # Copyright <20> 1988 Apple Computer, Inc. # All rights reserved. # # Versions: 1.0 8/88 # # Components: SillyBalls.c August 1, 1988 # SillyBalls.make August 1, 1988 # # This is a very simple sample program that demonstrates how to use Color # QuickDraw. It is about two pages of code, and does nothing more than open # a color window and draw randomly colored ovals in the window. # # The purpose is to show how to get some initial results with Color QuickDraw. # It is a complete program and is very short to be as clear as possible. # # It does not have an Event Loop. It is not fully functional in the sense that # it does not do all the things you would expect a well behaved Macintosh # program to do, like size the window naturally, have an event loop, use menus, # etc. # # See Sample and TESample for the general structure and MultiFinder techniques that # we recommend that you use when building a new application. # ------------------------------------------------------------------------------*/ // Version 1.0: 6/2/88 // 7/20/88 DJB Converted to C // // purpose To demonstrate a simple color App using Color QuickDraw. // It draws colored balls in a color window, then uses colored // text inverted in the ball. The ball location and color is Random. // // This program was written by Bo3b Johnson, 1/88. // // The inverted Bob text was a Skippy Blair special concept, // kept for obvious aesthetic reasons. //MW -cut out some other program descriptions.- //MW ** Metrowerks note ** // All changed code by Metrowerks is commented by "//MW". // There is one type of modification to the original source: // <20> Added argument type and return type to function definitions. // In order to pass with extended error checking on. // // 8/31/93 JA #include <Types.h> #include <Memory.h> #include <Quickdraw.h> #include <Fonts.h> #include <Events.h> #include <Menus.h> #include <Windows.h> #include <TextEdit.h> #include <Dialogs.h> #include <OSUtils.h> #include <ToolUtils.h> #include <SegLoad.h> #include <Sound.h> /* Constants */ #define BallWidth 20 #define BallHeight 20 #define BobSize 8 /* Size of text in each ball */ /* Globals */ Rect windRect; /* Prototypes */ void Initialize(void); void NewBall(void); // // Main body of program SillyBalls // //MW specified argument and return type. int main(void) { Initialize(); do { NewBall(); } while (!Button()); return 0; } // // Initialize everything for the program, make sure we can run // //MW specified argument and return type. void Initialize(void) { WindowPtr mainPtr; OSErr error; SysEnvRec theWorld; // // Test the computer to be sure we can do color. // If not we would crash, which would be bad. // If we can<61>t run, just beep and exit. // error = SysEnvirons(1, &theWorld); if (theWorld.hasColorQD == false) { SysBeep(50); ExitToShell(); /* If no color QD, we must leave. */ } /* Initialize all the needed managers. */ InitGraf(&qd.thePort); InitFonts(); InitWindows(); InitMenus(); TEInit(); InitDialogs(nil); InitCursor(); // // To make the Random sequences truly random, we need to make the seed start // at a different number. An easy way to do this is to put the current time // and date into the seed. Since it is always incrementing the starting seed // will always be different. Don<6F>t for each call of Random, or the sequence // will no longer be random. Only needed once, here in the init. // GetDateTime((unsigned long*) &qd.randSeed); // // Make a new window for drawing in, and it must be a color window. // The window is full screen size, made smaller to make it more visible. // windRect = qd.screenBits.bounds; InsetRect(&windRect, 50, 50); mainPtr = NewCWindow(nil, &windRect, "\pBob Land", true, documentProc, (WindowPtr) -1, f