home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C++ / Snippets / QD3D Juggler / Juggler Sources / StQD3DInitializer.h < prev   
Encoding:
C/C++ Source or Header  |  1995-12-27  |  1.1 KB  |  59 lines  |  [TEXT/CWIE]

  1. //
  2. //    StQD3DInitializer.h
  3. //
  4. //    A stack-based class to initialize and clean up a QuickDraw 3D environment.
  5. //    Declare it in main() after your toolbox initialization.
  6. //
  7. //    by James Jennings
  8. //    November 12, 1995
  9. //
  10. //    Note: The names of the gestalt codes are different 
  11. //    from what's in the documentation.
  12. //
  13.  
  14. #pragma once
  15.  
  16. #include <QD3D.h>
  17.  
  18. class StQD3DInitializer {
  19. public:
  20.     StQD3DInitializer(void);
  21.     ~StQD3DInitializer(void);
  22.     TQ3Status GetStatus(void);
  23.     Boolean HasQD3D(void);
  24. private:
  25.     TQ3Status status;
  26. };
  27.  
  28. inline
  29. Boolean StQD3DInitializer::HasQD3D(void)
  30. {
  31.     long result;
  32.     OSErr err = Gestalt(gestaltQD3D, &result);
  33.     return err==noErr && result == gestaltQD3DAvailable;
  34. }
  35.  
  36. inline
  37. StQD3DInitializer::StQD3DInitializer(void) : status(kQ3Failure)
  38. {
  39.     if (!HasQD3D()) return;    // Throw exception?
  40.     status = Q3Initialize();
  41.     if (status == kQ3Failure) 
  42.         SignalPStr_("\pQuickDraw 3D is not available.");
  43. }
  44.  
  45. inline
  46. StQD3DInitializer::~StQD3DInitializer(void)
  47. {
  48.     if (status==kQ3Success)
  49.         status = Q3Exit();
  50. //    if (status == kQ3Failure) // Throw exception?
  51. }
  52.  
  53. inline
  54. TQ3Status StQD3DInitializer::GetStatus(void)
  55. {
  56.     return status;
  57. }
  58.  
  59.