Retired Document
Important: This sample code may not represent best practices for current development. The project may use deprecated symbols and illustrate technologies and techniques that are no longer recommended.
ThreeDMetafile.h
| /* | 
| File: ThreeDMetafile.h | 
| Contains: 3D viewer support for SimpleText | 
| Version: GX 1.2 or later | 
| ** Copyright 1994-1996 Apple Computer. All rights reserved. | 
| ** | 
| ** You may incorporate this sample code into your applications without | 
| ** restriction, though the sample code has been provided "AS IS" and the | 
| ** responsibility for its operation is 100% yours. However, what you are | 
| ** not permitted to do is to redistribute the source as "DSC Sample Code" | 
| ** after having made changes. If you're going to re-distribute the source, | 
| ** we require that you make it clear in the source that the code was | 
| ** descended from Apple Sample Code, but that you've made changes. | 
| */ | 
| #include "SimpleText.h" | 
| #define kThreeDWindowID kThreeDBaseID | 
| #ifndef REZ | 
| typedef long ViewerObject; | 
| struct ThreeDDataRecord | 
|         { | 
| WindowDataRecord w; | 
| ViewerObject viewerObject; | 
| }; | 
| typedef struct ThreeDDataRecord ThreeDDataRecord, *ThreeDDataPtr; | 
|     enum { | 
| kQ3ViewerShowBadge = 1<<0, | 
| kQ3ViewerActive = 1<<1, | 
| kQ3ViewerControllerVisible = 1<<2, | 
| kQ3ViewerDrawFrame = 1<<3, | 
| kQ3ViewerDraggingOff = 1<<4, | 
| kQ3ViewerButtonCamera = 1<<5, | 
| kQ3ViewerButtonTruck = 1<<6, | 
| kQ3ViewerButtonOrbit = 1<<7, | 
| kQ3ViewerButtonZoom = 1<<8, | 
| kQ3ViewerButtonDolly = 1<<9, | 
| kQ3ViewerDefault = ( | 
| kQ3ViewerActive | kQ3ViewerControllerVisible | | 
| kQ3ViewerButtonCamera | kQ3ViewerButtonTruck | | 
| kQ3ViewerButtonOrbit | kQ3ViewerButtonDolly ) | 
| }; | 
|     enum { | 
| uppViewerLibNewProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(Ptr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(CGrafPtr))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))) | 
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))), | 
| uppViewerLibDisposeProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(Ptr))), | 
| uppViewerLibUseFileProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))), | 
| uppViewerLibUseDataProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void*))) | 
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long))), | 
| uppViewerLibWriteFileProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long))), | 
| uppViewerLibWriteDataProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(void**))), | 
| uppViewerLibDrawProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibGetPictProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(PicHandle))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibGetButtonRectProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long))) | 
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(Rect*))), | 
| uppViewerLibGetDimensionProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(long*))) | 
| | STACK_ROUTINE_PARAMETER(3, SIZE_CODE(sizeof(long*))), | 
| uppViewerLibSetFlagsProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(unsigned long))), | 
| uppViewerLibGetFlagsProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibSetBoundsProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))), | 
| uppViewerLibGetBoundsProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Rect*))), | 
| uppViewerLibSetPortProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(CGrafPtr))), | 
| uppViewerLibGetPortProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(CGrafPtr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibEventProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(EventRecord*))), | 
| uppViewerLibAdjustCursorProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(Boolean))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| | STACK_ROUTINE_PARAMETER(2, SIZE_CODE(sizeof(Point*))), | 
| uppViewerLibGetStateProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(unsigned long))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibClearProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibCutProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibCopyProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))), | 
| uppViewerLibPasteProcInfo = kCStackBased | 
| | RESULT_SIZE(SIZE_CODE(sizeof(OSErr))) | 
| | STACK_ROUTINE_PARAMETER(1, SIZE_CODE(sizeof(ViewerObject))) | 
| }; | 
| // Proc pointer typedefs | 
| typedef ViewerObject (*ViewerLib_NewType) (CGrafPtr port, Rect *rect, unsigned long flags); | 
| typedef OSErr (*ViewerLib_DisposeType) (ViewerObject theViewer); | 
| typedef OSErr (*ViewerLib_UseFileType) (ViewerObject theViewer, long refNum); | 
| typedef OSErr (*ViewerLib_UseDataType) (ViewerObject theViewer, void *data, long size); | 
| typedef OSErr (*ViewerLib_WriteFileType) (ViewerObject theViewer, long refNum); | 
| typedef unsigned long (*ViewerLib_WriteDataType) (ViewerObject theViewer, void **data); | 
| typedef OSErr (*ViewerLib_DrawType) (ViewerObject theViewer); | 
| typedef PicHandle (*ViewerLib_GetPictType) (ViewerObject theViewer); | 
| typedef OSErr (*ViewerLib_GetButtonRectType) (ViewerObject theViewer, unsigned long button, Rect *rect); | 
| typedef OSErr (*ViewerLib_GetDimensionType) (ViewerObject theViewer, long *width, long* height); | 
| typedef OSErr (*ViewerLib_SetFlagsType) (ViewerObject theViewer, unsigned long flags); | 
| typedef unsigned long (*ViewerLib_GetFlagsType) (ViewerObject theViewer); | 
| typedef OSErr (*ViewerLib_SetBoundsType) (ViewerObject theViewer, Rect *bounds); | 
| typedef OSErr (*ViewerLib_GetBoundsType) (ViewerObject theViewer, Rect *bounds); | 
| typedef OSErr (*ViewerLib_SetPortType) (ViewerObject theViewer, CGrafPtr port); | 
| typedef CGrafPtr (*ViewerLib_GetPortType) (ViewerObject theViewer); | 
| typedef Boolean (*ViewerLib_EventType) (ViewerObject theViewer, EventRecord *evt); | 
| typedef Boolean (*ViewerLib_AdjustCursorType) (ViewerObject theViewer, Point *pt); | 
| typedef unsigned long (*ViewerLib_GetStateType) (ViewerObject theViewer); | 
| typedef OSErr (*ViewerLib_ClearType) (ViewerObject theViewer); | 
| typedef OSErr (*ViewerLib_CutType) (ViewerObject theViewer); | 
| typedef OSErr (*ViewerLib_CopyType) (ViewerObject theViewer); | 
| typedef OSErr (*ViewerLib_PasteType) (ViewerObject theViewer); | 
| typedef struct | 
|         { | 
| ProcInfoType info; | 
| void *entry; | 
| } GlobalEntry; | 
| // Macro calls | 
| #define ViewerLib_New(A,B,C) (*(ViewerLib_NewType)(gProcPointers[0].entry)) (A, B, C) | 
| #define ViewerLib_Dispose(A) (*(ViewerLib_DisposeType)(gProcPointers[1].entry)) (A) | 
| #define ViewerLib_UseFile(A,B) (*(ViewerLib_UseFileType)(gProcPointers[2].entry)) (A, B) | 
| #define ViewerLib_UseData(A,B,C) (*(ViewerLib_UseDataType)(gProcPointers[3].entry)) (A, B, C) | 
| #define ViewerLib_WriteFile(A,B) (*(ViewerLib_WriteFileType)(gProcPointers[4].entry)) (A, B) | 
| #define ViewerLib_WriteData(A,B) (*(ViewerLib_WriteDataType)(gProcPointers[5].entry)) (A, B) | 
| #define ViewerLib_Draw(A) (*(ViewerLib_DrawType)(gProcPointers[6].entry)) (A) | 
| #define ViewerLib_GetPict(A) (*(ViewerLib_GetPictType)(gProcPointers[7].entry)) (A) | 
| #define ViewerLib_GetButtonRect(A,B,C) (*(ViewerLib_GetButtonRectType)(gProcPointers[8].entry)) (A,B,C) | 
| #define ViewerLib_GetDimension(A,B,C) (*(ViewerLib_GetDimensionType)(gProcPointers[9].entry)) (A,B,C) | 
| #define ViewerLib_SetFlags(A,B) (*(ViewerLib_SetFlagsType)(gProcPointers[10].entry)) (A, B) | 
| #define ViewerLib_GetFlags(A) (*(ViewerLib_GetFlagsType)(gProcPointers[11].entry)) (A) | 
| #define ViewerLib_SetBounds(A,B) (*(ViewerLib_SetBoundsType)(gProcPointers[12].entry)) (A, B) | 
| #define ViewerLib_GetBounds(A,B) (*(ViewerLib_GetBoundsType)(gProcPointers[13].entry)) (A, B) | 
| #define ViewerLib_SetPort(A,B) (*(ViewerLib_SetPortType)(gProcPointers[14].entry)) (A, B) | 
| #define ViewerLib_GetPort(A) (*(ViewerLib_GetPortType)(gProcPointers[15].entry)) (A) | 
| #define ViewerLib_Event(A,B) (*(ViewerLib_EventType)(gProcPointers[16].entry)) (A, B) | 
| #define ViewerLib_AdjustCursor(A,B) (*(ViewerLib_AdjustCursorType)(gProcPointers[17].entry)) (A, B) | 
| #define ViewerLib_GetState(A) (*(ViewerLib_GetStateType)(gProcPointers[18].entry)) (A) | 
| #define ViewerLib_Clear(A) (*(ViewerLib_ClearType)(gProcPointers[19].entry)) (A) | 
| #define ViewerLib_Cut(A) (*(ViewerLib_CutType)(gProcPointers[20].entry)) (A) | 
| #define ViewerLib_Copy(A) (*(ViewerLib_CopyType)(gProcPointers[21].entry)) (A) | 
| #define ViewerLib_Paste(A) (*(ViewerLib_PasteType)(gProcPointers[22].entry)) (A) | 
| #endif | 
Copyright © 2003 Apple Computer, Inc. All Rights Reserved. Terms of Use | Privacy Policy | Updated: 2003-01-14