home *** CD-ROM | disk | FTP | other *** search
- /*
- ViewFunctions.c
-
- Functions for the View menu command.
-
- © 1995 Apple Computer, Inc.
- */
- #include <Types.h>
- #include <QuickDraw.h>
- #include <Windows.h>
-
- #include "EventLoop.h"
- #include "MenuDispatch.h"
- #include <Files.h>
- #include "QD3DViewer.h"
-
- void ChooseView(short item);
-
- extern WindowPtr MainView;
- extern void AdjustMenuItems(void);
-
- void ChooseView(short item)
- {
- OSErr anErr;
- TVCDemoDataHdl demoData;
- TQ3ViewerObject aViewer;
-
- if (FrontWindow() != MainView)
- goto ExitChooseView;
- demoData = (TVCDemoDataHdl)GetWRefCon(MainView);
- aViewer = (*demoData)->viewer1;
- switch(item)
- {
- case cmdBadge:
- case cmdViewer:
- case cmdController:
- case cmdDraggingOff:
- case cmdBtnCamera:
- case cmdBtnTruck:
- case cmdBtnOrbit:
- case cmdBtnZoom:
- case cmdBtnDolly:
- case cmdFrame:
- {
- unsigned long viewerFlags;
-
- viewerFlags = Q3ViewerGetFlags( aViewer );
- switch(item)
- {
- case cmdBadge:
- viewerFlags ^= kQ3ViewerShowBadge;
- break;
- case cmdViewer:
- viewerFlags ^= kQ3ViewerActive;
- break;
- case cmdController:
- viewerFlags ^= kQ3ViewerControllerVisible;
- break;
- case cmdDraggingOff:
- viewerFlags ^= kQ3ViewerDraggingOff;
- break;
-
- case cmdBtnCamera:
- viewerFlags ^= kQ3ViewerButtonCamera;
- break;
- case cmdBtnTruck:
- viewerFlags ^= kQ3ViewerButtonTruck;
- break;
- case cmdBtnOrbit:
- viewerFlags ^= kQ3ViewerButtonOrbit;
- break;
- case cmdBtnZoom:
- viewerFlags ^= kQ3ViewerButtonZoom;
- break;
- case cmdBtnDolly:
- viewerFlags ^= kQ3ViewerButtonDolly;
- break;
- case cmdFrame:
- viewerFlags ^= kQ3ViewerDrawFrame;
- break;
- }
- anErr = Q3ViewerSetFlags( aViewer, viewerFlags);
- SetPort(MainView);
- InvalRect(&MainView->portRect);
-
- AdjustMenuItems();
-
- break;
- }
- case cmdFullView:
- {
- Rect bounds;
-
- if ((*demoData)->containerStyle == kContainerFourView)
- {
- Q3ViewerDispose((*demoData)->viewer2);
- Q3ViewerDispose((*demoData)->viewer3);
- Q3ViewerDispose((*demoData)->viewer4);
- }
- bounds = MainView->portRect;
- Q3ViewerSetBounds((*demoData)->viewer1, &bounds);
- (*demoData)->containerStyle = kContainerFull;
- InvalRect(&bounds);
- break;
- }
- case cmdInsetView:
- if ((*demoData)->containerStyle == kContainerFourView)
- {
- Q3ViewerDispose((*demoData)->viewer2);
- Q3ViewerDispose((*demoData)->viewer3);
- Q3ViewerDispose((*demoData)->viewer4);
- }
- (*demoData)->containerStyle = kContainerInsetView;
- InvalRect(&MainView->portRect);
- break;
- case cmdFourView:
- if ((*demoData)->containerStyle != kContainerFourView)
- {
- Rect bounds, vBounds;
- short width, height, centerH, centerV;
-
- bounds = MainView->portRect;
- width = bounds.right - bounds.left;
- height = bounds.bottom - bounds.top;
- centerH = width / 2;
- centerV = height / 2;
- vBounds = bounds;
- vBounds.right = centerH;
- vBounds.bottom = centerV;
- Q3ViewerSetBounds((*demoData)->viewer1, &vBounds);
-
- vBounds = bounds;
- vBounds.left = centerH;
- vBounds.bottom = centerV;
- aViewer = Q3ViewerNew((CGrafPtr)MainView, &vBounds, kQ3ViewerDefault);
- (*demoData)->viewer2 = aViewer;
-
- vBounds = bounds;
- vBounds.right = centerH;
- vBounds.top = centerV;
- aViewer = Q3ViewerNew((CGrafPtr)MainView, &vBounds, kQ3ViewerDefault);
- (*demoData)->viewer3 = aViewer;
-
- vBounds = bounds;
- vBounds.left = centerH;
- vBounds.top = centerV;
- aViewer = Q3ViewerNew((CGrafPtr)MainView, &vBounds, kQ3ViewerDefault);
- (*demoData)->viewer4 = aViewer;
-
- (*demoData)->containerStyle = kContainerFourView;
- InvalRect(&bounds);
- }
- break;
- default:
- break;
- }
- ExitChooseView:
- ;
- }
-
- /* EOF */