home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / QuickTime VR / MacOS / QuickDraw™ 3D 1.0.6F4 SDK / Samples / SampleCode / VCDemo / Source / ViewFunctions.c < prev   
Encoding:
C/C++ Source or Header  |  1995-05-02  |  3.6 KB  |  161 lines  |  [TEXT/MPS ]

  1. /*
  2.     ViewFunctions.c
  3.  
  4.     Functions for the View menu command.
  5.  
  6.     © 1995 Apple Computer, Inc.
  7. */
  8. #include <Types.h>
  9. #include <QuickDraw.h>
  10. #include <Windows.h>
  11.  
  12. #include "EventLoop.h"
  13. #include "MenuDispatch.h"
  14. #include <Files.h>
  15. #include "QD3DViewer.h"
  16.  
  17. void ChooseView(short item);
  18.  
  19. extern WindowPtr        MainView;
  20. extern void AdjustMenuItems(void);
  21.  
  22. void ChooseView(short item)
  23. {
  24.     OSErr            anErr;
  25.     TVCDemoDataHdl    demoData;
  26.     TQ3ViewerObject    aViewer;
  27.  
  28.     if (FrontWindow() != MainView)
  29.         goto ExitChooseView;
  30.     demoData = (TVCDemoDataHdl)GetWRefCon(MainView);
  31.     aViewer = (*demoData)->viewer1;
  32.     switch(item)
  33.     {
  34.         case cmdBadge:
  35.         case cmdViewer:
  36.         case cmdController:
  37.         case cmdDraggingOff:
  38.         case cmdBtnCamera:
  39.         case cmdBtnTruck:
  40.         case cmdBtnOrbit:
  41.         case cmdBtnZoom:
  42.         case cmdBtnDolly:
  43.         case cmdFrame:
  44.         {
  45.             unsigned long    viewerFlags;
  46.  
  47.             viewerFlags = Q3ViewerGetFlags( aViewer );
  48.             switch(item)
  49.             {
  50.                 case cmdBadge:
  51.                     viewerFlags ^= kQ3ViewerShowBadge;
  52.                     break;
  53.                 case cmdViewer:
  54.                     viewerFlags ^= kQ3ViewerActive;
  55.                     break;
  56.                 case cmdController:
  57.                     viewerFlags ^= kQ3ViewerControllerVisible;
  58.                     break;
  59.                 case cmdDraggingOff:
  60.                     viewerFlags ^= kQ3ViewerDraggingOff;
  61.                     break;
  62.  
  63.                 case cmdBtnCamera:
  64.                     viewerFlags ^= kQ3ViewerButtonCamera;
  65.                     break;
  66.                 case cmdBtnTruck:
  67.                     viewerFlags ^= kQ3ViewerButtonTruck;
  68.                     break;
  69.                 case cmdBtnOrbit:
  70.                     viewerFlags ^= kQ3ViewerButtonOrbit;
  71.                     break;
  72.                 case cmdBtnZoom:
  73.                     viewerFlags ^= kQ3ViewerButtonZoom;
  74.                     break;
  75.                 case cmdBtnDolly:
  76.                     viewerFlags ^= kQ3ViewerButtonDolly;
  77.                     break;
  78.                 case cmdFrame:
  79.                     viewerFlags ^= kQ3ViewerDrawFrame;
  80.                     break;
  81.             }
  82.             anErr = Q3ViewerSetFlags( aViewer, viewerFlags);
  83.             SetPort(MainView);
  84.             InvalRect(&MainView->portRect);
  85.             
  86.             AdjustMenuItems();
  87.             
  88.             break;
  89.         }
  90.         case cmdFullView:
  91.         {
  92.             Rect    bounds;
  93.  
  94.             if ((*demoData)->containerStyle == kContainerFourView)
  95.             {
  96.                 Q3ViewerDispose((*demoData)->viewer2);
  97.                 Q3ViewerDispose((*demoData)->viewer3);
  98.                 Q3ViewerDispose((*demoData)->viewer4);
  99.             }
  100.             bounds = MainView->portRect;
  101.             Q3ViewerSetBounds((*demoData)->viewer1, &bounds);
  102.             (*demoData)->containerStyle = kContainerFull;
  103.             InvalRect(&bounds);
  104.             break;
  105.         }
  106.         case cmdInsetView:
  107.             if ((*demoData)->containerStyle == kContainerFourView)
  108.             {
  109.                 Q3ViewerDispose((*demoData)->viewer2);
  110.                 Q3ViewerDispose((*demoData)->viewer3);
  111.                 Q3ViewerDispose((*demoData)->viewer4);
  112.             }
  113.             (*demoData)->containerStyle = kContainerInsetView;
  114.             InvalRect(&MainView->portRect);
  115.             break;
  116.         case cmdFourView:
  117.             if ((*demoData)->containerStyle != kContainerFourView)
  118.             {
  119.                 Rect    bounds, vBounds;
  120.                 short    width, height, centerH, centerV;
  121.  
  122.                 bounds = MainView->portRect;
  123.                 width = bounds.right - bounds.left;
  124.                 height = bounds.bottom - bounds.top;
  125.                 centerH = width / 2;
  126.                 centerV = height / 2;
  127.                 vBounds = bounds;
  128.                 vBounds.right = centerH;
  129.                 vBounds.bottom = centerV;
  130.                 Q3ViewerSetBounds((*demoData)->viewer1, &vBounds);
  131.  
  132.                 vBounds = bounds;
  133.                 vBounds.left = centerH;
  134.                 vBounds.bottom = centerV;
  135.                 aViewer = Q3ViewerNew((CGrafPtr)MainView, &vBounds, kQ3ViewerDefault);
  136.                 (*demoData)->viewer2 = aViewer;
  137.  
  138.                 vBounds = bounds;
  139.                 vBounds.right = centerH;
  140.                 vBounds.top = centerV;
  141.                 aViewer = Q3ViewerNew((CGrafPtr)MainView, &vBounds, kQ3ViewerDefault);
  142.                 (*demoData)->viewer3 = aViewer;
  143.  
  144.                 vBounds = bounds;
  145.                 vBounds.left = centerH;
  146.                 vBounds.top = centerV;
  147.                 aViewer = Q3ViewerNew((CGrafPtr)MainView, &vBounds, kQ3ViewerDefault);
  148.                 (*demoData)->viewer4 = aViewer;
  149.  
  150.                 (*demoData)->containerStyle = kContainerFourView;
  151.                 InvalRect(&bounds);
  152.             }
  153.             break;
  154.         default:
  155.             break;
  156.     }
  157. ExitChooseView:
  158.     ;
  159. }
  160.  
  161. /* EOF */