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-03-26