home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac SampleCode New for 1.6 / ViewerCallbackSample / Source / Viewer_Window.c < prev   
Encoding:
C/C++ Source or Header  |  1999-05-18  |  1.9 KB  |  128 lines  |  [TEXT/CWIE]

  1. /* 
  2.  *    Viewer_Window.c
  3.  *
  4.  *    QuickDraw 3D 1.6 Sample
  5.  *    Robert Dierkes
  6.  *
  7.  *     12/22/98    RDD        Created.
  8.  */
  9.  
  10. /*------------------*/
  11. /*    Include Files    */
  12. /*------------------*/
  13. #include "QD3DViewer.h"
  14.  
  15. #if defined(OS_MACINTOSH) && OS_MACINTOSH
  16. #include <MacWindows.h>
  17. #endif
  18.  
  19. #include "Viewer_Error.h"
  20. #include "Viewer_Window.h"
  21.  
  22.  
  23. /*----------------------*/
  24. /*    Global Declarations    */
  25. /*----------------------*/
  26. WindowPtr    gWindows[kMaxWindowCount];
  27.  
  28.  
  29. /*----------------------*/
  30. /*    Local Prototypes    */
  31. /*----------------------*/
  32.  
  33.  
  34.  
  35. /*
  36.  *    Window_Initialize
  37.  */
  38. TQ3Status Window_Initialize(
  39.     void)
  40. {
  41.     unsigned long    i;
  42.  
  43.     for (i = 0; i < kMaxWindowCount; i++) {
  44.         gWindows[i] = NULL;
  45.     }
  46.  
  47.     return kQ3Success;
  48. }
  49.  
  50.  
  51. /*
  52.  *    Window_Exit
  53.  */
  54. TQ3Status Window_Exit(
  55.     void)
  56. {
  57.     unsigned long    i;
  58.  
  59.     for (i = 0; i < kMaxWindowCount; i++) {
  60.         if (gWindows[i] != NULL) {
  61.             (void) Window_CloseViewer(&gWindows[i]);
  62.         }
  63.     }
  64.  
  65.     return kQ3Success;
  66. }
  67.  
  68.  
  69. #pragma mark -
  70.  
  71. /*
  72.  *    Window_GetViewer
  73.  */
  74. TQ3ViewerObject Window_GetViewer(
  75.     WindowPtr    pWindow)
  76. {
  77.     if (pWindow != NULL) {
  78.         return ((TQ3ViewerObject) GetWRefCon(pWindow));
  79.     }
  80.  
  81.     return NULL;
  82. }
  83.  
  84.  
  85. /*
  86.  * Window_CloseViewer
  87.  */
  88. OSErr Window_CloseViewer(
  89.     WindowPtr        *hWindow)
  90. {
  91.     OSErr            theErr = noErr;
  92.     TQ3ViewerObject    viewer = NULL;
  93.     WindowPtr        window;
  94.     unsigned long    i;
  95.  
  96.     if ((hWindow == NULL) ||
  97.         (*hWindow == NULL)) {
  98.         ERROR_DEBUG_STR("Window_CloseViewer: hWindow == NULL");
  99.         return paramErr;
  100.     }
  101.     window = *hWindow;
  102.  
  103.     if ((viewer = Window_GetViewer(window)) == NULL) {
  104.         ERROR_DEBUG_STR("Window_CloseViewer: viewer == NULL");
  105.         return paramErr;
  106.     }
  107.  
  108.     /* Dispose the Viewer */
  109.     if ((theErr = Q3ViewerDispose(viewer)) != noErr) {
  110.         ERROR_DEBUG_STR("Window_CloseViewer: Q3ViewerDispose failed");
  111.         return paramErr;
  112.     }
  113.  
  114.     /* Remove window from list */
  115.     for (i = 0; i < kMaxWindowCount; i++) {
  116.         if (window == gWindows[i]) {
  117.             gWindows[i] = NULL;
  118.             break;
  119.         }
  120.     }
  121.  
  122.     /* Dispose the window */
  123.     DisposeWindow(window);
  124.     *hWindow = NULL;
  125.  
  126.     return theErr;
  127. }
  128.