Source/ViewFunctions.c

/*
    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 */