QD3DDrawContext.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:20k
- /*
- File: QD3DDrawContext.h
-
- Contains: Draw context class types and routines
-
- Version: Technology: Quickdraw 3D 1.6
- Release: QuickTime 6.0.2
-
- Copyright: (c) 1995-2001 by Apple Computer, Inc., all rights reserved.
-
- Bugs?: For bug reports, consult the following page on
- the World Wide Web:
-
- http://developer.apple.com/bugreporter/
-
- */
- #ifndef __QD3DDRAWCONTEXT__
- #define __QD3DDRAWCONTEXT__
- #ifndef __QD3D__
- #include "QD3D.h"
- #endif
- #if TARGET_OS_MAC
- #ifndef __QUICKDRAW__
- #include "Quickdraw.h"
- #endif
- #ifndef __FIXMATH__
- #include "FixMath.h"
- #endif
- #ifndef __GXTYPES__
- #include "GXTypes.h"
- #endif
- #endif /* TARGET_OS_MAC */
- #if TARGET_OS_UNIX
- #include "X11/Xlib.h"
- #include "X11/Xutil.h"
- #endif /* TARGET_OS_WIN32 */
- #if TARGET_OS_WIN32
- /******************************************************************************
- * **
- * ABOUT QD3D_NO_DIRECTDRAW: (Win32 Only) **
- * **
- * NOTE: Define QD3D_NO_DIRECTDRAW for your application makefile/project **
- * only if you don't need Q3DDSurfaceDrawContext support and don't **
- * have access to ddraw.h. **
- * **
- *****************************************************************************/
- #include "windows.h"
- #if !defined(QD3D_NO_DIRECTDRAW)
- #include "ddraw.h"
- #endif /* !QD3D_NO_DIRECTDRAW */
- #endif /* TARGET_OS_WIN32 */
- #if PRAGMA_ONCE
- #pragma once
- #endif
- #ifdef __cplusplus
- extern "C" {
- #endif
- #if PRAGMA_IMPORT
- #pragma import on
- #endif
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=power
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(push, 2)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack(2)
- #endif
- #if PRAGMA_ENUM_ALWAYSINT
- #if defined(__fourbyteints__) && !__fourbyteints__
- #define __QD3DDRAWCONTEXT__RESTORE_TWOBYTEINTS
- #pragma fourbyteints on
- #endif
- #pragma enumsalwaysint on
- #elif PRAGMA_ENUM_OPTIONS
- #pragma option enum=int
- #elif PRAGMA_ENUM_PACK
- #if __option(pack_enums)
- #define __QD3DDRAWCONTEXT__RESTORE_PACKED_ENUMS
- #pragma options(!pack_enums)
- #endif
- #endif
- /******************************************************************************
- ** **
- ** DrawContext Data Structures **
- ** **
- *****************************************************************************/
- enum TQ3DrawContextClearImageMethod {
- kQ3ClearMethodNone = 0,
- kQ3ClearMethodWithColor = 1
- };
- typedef enum TQ3DrawContextClearImageMethod TQ3DrawContextClearImageMethod;
- struct TQ3DrawContextData {
- TQ3DrawContextClearImageMethod clearImageMethod;
- TQ3ColorARGB clearImageColor;
- TQ3Area pane;
- TQ3Boolean paneState;
- TQ3Bitmap mask;
- TQ3Boolean maskState;
- TQ3Boolean doubleBufferState;
- };
- typedef struct TQ3DrawContextData TQ3DrawContextData;
- /******************************************************************************
- ** **
- ** DrawContext Routines **
- ** **
- *****************************************************************************/
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( TQ3ObjectType )
- Q3DrawContext_GetType (TQ3DrawContextObject drawContext);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetData (TQ3DrawContextObject context,
- const TQ3DrawContextData * contextData);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetData (TQ3DrawContextObject context,
- TQ3DrawContextData * contextData);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetClearImageColor (TQ3DrawContextObject context,
- const TQ3ColorARGB * color);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetClearImageColor (TQ3DrawContextObject context,
- TQ3ColorARGB * color);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetPane (TQ3DrawContextObject context,
- const TQ3Area * pane);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetPane (TQ3DrawContextObject context,
- TQ3Area * pane);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetPaneState (TQ3DrawContextObject context,
- TQ3Boolean state);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetPaneState (TQ3DrawContextObject context,
- TQ3Boolean * state);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetClearImageMethod (TQ3DrawContextObject context,
- TQ3DrawContextClearImageMethod method);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetClearImageMethod (TQ3DrawContextObject context,
- TQ3DrawContextClearImageMethod * method);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetMask (TQ3DrawContextObject context,
- const TQ3Bitmap * mask);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetMask (TQ3DrawContextObject context,
- TQ3Bitmap * mask);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetMaskState (TQ3DrawContextObject context,
- TQ3Boolean state);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetMaskState (TQ3DrawContextObject context,
- TQ3Boolean * state);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_SetDoubleBufferState (TQ3DrawContextObject context,
- TQ3Boolean state);
- EXTERN_API_C( TQ3Status )
- Q3DrawContext_GetDoubleBufferState (TQ3DrawContextObject context,
- TQ3Boolean * state);
- /******************************************************************************
- ** **
- ** Pixmap Data Structure **
- ** **
- *****************************************************************************/
- #endif /* CALL_NOT_IN_CARBON */
- struct TQ3PixmapDrawContextData {
- TQ3DrawContextData drawContextData;
- TQ3Pixmap pixmap;
- };
- typedef struct TQ3PixmapDrawContextData TQ3PixmapDrawContextData;
- /******************************************************************************
- ** **
- ** Pixmap DrawContext Routines **
- ** **
- *****************************************************************************/
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( TQ3DrawContextObject )
- Q3PixmapDrawContext_New (const TQ3PixmapDrawContextData * contextData);
- EXTERN_API_C( TQ3Status )
- Q3PixmapDrawContext_SetPixmap (TQ3DrawContextObject drawContext,
- const TQ3Pixmap * pixmap);
- EXTERN_API_C( TQ3Status )
- Q3PixmapDrawContext_GetPixmap (TQ3DrawContextObject drawContext,
- TQ3Pixmap * pixmap);
- #endif /* CALL_NOT_IN_CARBON */
- #if TARGET_OS_MAC
- /******************************************************************************
- ** **
- ** Macintosh DrawContext Data Structures **
- ** **
- *****************************************************************************/
- enum TQ3MacDrawContext2DLibrary {
- kQ3Mac2DLibraryNone = 0,
- kQ3Mac2DLibraryQuickDraw = 1,
- kQ3Mac2DLibraryQuickDrawGX = 2
- };
- typedef enum TQ3MacDrawContext2DLibrary TQ3MacDrawContext2DLibrary;
- struct TQ3MacDrawContextData {
- TQ3DrawContextData drawContextData;
- CWindowPtr window;
- TQ3MacDrawContext2DLibrary library;
- gxViewPort viewPort;
- CGrafPtr grafPort;
- };
- typedef struct TQ3MacDrawContextData TQ3MacDrawContextData;
- /******************************************************************************
- ** **
- ** Macintosh DrawContext Routines **
- ** **
- *****************************************************************************/
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( TQ3DrawContextObject )
- Q3MacDrawContext_New (const TQ3MacDrawContextData * drawContextData);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_SetWindow (TQ3DrawContextObject drawContext,
- CWindowPtr window);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_GetWindow (TQ3DrawContextObject drawContext,
- CWindowPtr * window);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_SetGXViewPort (TQ3DrawContextObject drawContext,
- gxViewPort viewPort);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_GetGXViewPort (TQ3DrawContextObject drawContext,
- gxViewPort * viewPort);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_SetGrafPort (TQ3DrawContextObject drawContext,
- CGrafPtr grafPort);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_GetGrafPort (TQ3DrawContextObject drawContext,
- CGrafPtr * grafPort);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_Set2DLibrary (TQ3DrawContextObject drawContext,
- TQ3MacDrawContext2DLibrary library);
- EXTERN_API_C( TQ3Status )
- Q3MacDrawContext_Get2DLibrary (TQ3DrawContextObject drawContext,
- TQ3MacDrawContext2DLibrary * library);
- #endif /* CALL_NOT_IN_CARBON */
- #endif /* TARGET_OS_MAC */
- #if TARGET_OS_UNIX
- /******************************************************************************
- ** **
- ** X/Windows DrawContext Data Structures **
- ** **
- *****************************************************************************/
- typedef struct OpaqueTQ3XBufferObject* TQ3XBufferObject;
- struct TQ3XColormapData {
- long baseEntry;
- long maxRed;
- long maxGreen;
- long maxBlue;
- long multRed;
- long multGreen;
- long multBlue;
- };
- typedef struct TQ3XColormapData TQ3XColormapData;
- struct TQ3XDrawContextData {
- TQ3DrawContextData contextData;
- Display * display;
- Drawable drawable;
- Visual * visual;
- Colormap cmap;
- TQ3XColormapData * colorMapData;
- };
- typedef struct TQ3XDrawContextData TQ3XDrawContextData;
- /******************************************************************************
- ** **
- ** X/Windows DrawContext Routines **
- ** **
- *****************************************************************************/
- #ifdef XDC_OLD
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( TQ3DrawContextObject )
- Q3XDrawContext_New (void);
- EXTERN_API_C( void )
- Q3XDrawContext_Set (TQ3DrawContextObject drawContext,
- unsigned long flag,
- void * data);
- EXTERN_API_C( void )
- Q3XDrawContext_Get (TQ3DrawContextObject drawContext,
- unsigned long flag,
- void * data);
- #endif /* CALL_NOT_IN_CARBON */
- #endif /* defined(XDC_OLD) */
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( TQ3XBufferObject )
- Q3XBuffers_New (Display * dpy,
- unsigned long numBuffers,
- Window window);
- EXTERN_API_C( void )
- Q3XBuffers_Swap (Display * dpy,
- TQ3XBufferObject buffers);
- EXTERN_API_C( XVisualInfo *)
- Q3X_GetVisualInfo (Display * dpy,
- Screen * screen);
- EXTERN_API_C( TQ3DrawContextObject )
- Q3XDrawContext_New (const TQ3XDrawContextData * xContextData);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_SetDisplay (TQ3DrawContextObject drawContext,
- const Display * display);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_GetDisplay (TQ3DrawContextObject drawContext,
- Display ** display);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_SetDrawable (TQ3DrawContextObject drawContext,
- Drawable drawable);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_GetDrawable (TQ3DrawContextObject drawContext,
- Drawable * drawable);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_SetVisual (TQ3DrawContextObject drawContext,
- const Visual * visual);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_GetVisual (TQ3DrawContextObject drawContext,
- Visual ** visual);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_SetColormap (TQ3DrawContextObject drawContext,
- Colormap colormap);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_GetColormap (TQ3DrawContextObject drawContext,
- Colormap * colormap);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_SetColormapData (TQ3DrawContextObject drawContext,
- const TQ3XColormapData * colormapData);
- EXTERN_API_C( TQ3Status )
- Q3XDrawContext_GetColormapData (TQ3DrawContextObject drawContext,
- TQ3XColormapData * colormapData);
- #endif /* CALL_NOT_IN_CARBON */
- #endif /* TARGET_OS_UNIX */
- #if TARGET_OS_WIN32
- /******************************************************************************
- ** **
- ** Win32 DrawContext Data Structures **
- ** **
- *****************************************************************************/
- struct TQ3Win32DCDrawContextData {
- TQ3DrawContextData drawContextData;
- HDC hdc;
- };
- typedef struct TQ3Win32DCDrawContextData TQ3Win32DCDrawContextData;
- #ifndef QD3D_NO_DIRECTDRAW
- enum TQ3DirectDrawObjectSelector {
- kQ3DirectDrawObject = 1,
- kQ3DirectDrawObject2 = 2
- };
- typedef enum TQ3DirectDrawObjectSelector TQ3DirectDrawObjectSelector;
- enum TQ3DirectDrawSurfaceSelector {
- kQ3DirectDrawSurface = 1,
- kQ3DirectDrawSurface2 = 2
- };
- typedef enum TQ3DirectDrawSurfaceSelector TQ3DirectDrawSurfaceSelector;
- struct TQ3DDSurfaceDescriptor {
- TQ3DirectDrawObjectSelector objectSelector;
- union
- {
- LPDIRECTDRAW lpDirectDraw;
- LPDIRECTDRAW2 lpDirectDraw2;
- };
- TQ3DirectDrawSurfaceSelector surfaceSelector;
- union
- {
- LPDIRECTDRAWSURFACE lpDirectDrawSurface;
- LPDIRECTDRAWSURFACE2 lpDirectDrawSurface2;
- };
- };
- typedef struct TQ3DDSurfaceDescriptor TQ3DDSurfaceDescriptor;
- struct TQ3DDSurfaceDrawContextData {
- TQ3DrawContextData drawContextData;
- TQ3DDSurfaceDescriptor ddSurfaceDescriptor;
- };
- typedef struct TQ3DDSurfaceDrawContextData TQ3DDSurfaceDrawContextData;
- #endif /* !defined(QD3D_NO_DIRECTDRAW) */
- /******************************************************************************
- ** **
- ** Win32DC DrawContext Routines **
- ** **
- *****************************************************************************/
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( TQ3DrawContextObject )
- Q3Win32DCDrawContext_New (const TQ3Win32DCDrawContextData * drawContextData);
- EXTERN_API_C( TQ3Status )
- Q3Win32DCDrawContext_SetDC (TQ3DrawContextObject drawContext,
- HDC newHDC);
- EXTERN_API_C( TQ3Status )
- Q3Win32DCDrawContext_GetDC (TQ3DrawContextObject drawContext,
- HDC * curHDC);
- /******************************************************************************
- ** **
- ** DDSurface DrawContext Routines **
- ** **
- *****************************************************************************/
- #endif /* CALL_NOT_IN_CARBON */
- #ifndef QD3D_NO_DIRECTDRAW
- #if CALL_NOT_IN_CARBON
- EXTERN_API_C( TQ3DrawContextObject )
- Q3DDSurfaceDrawContext_New (const TQ3DDSurfaceDrawContextData * drawContextData);
- EXTERN_API_C( TQ3Status )
- Q3DDSurfaceDrawContext_SetDirectDrawSurface (TQ3DrawContextObject drawContext,
- const TQ3DDSurfaceDescriptor * ddSurfaceDescriptor);
- EXTERN_API_C( TQ3Status )
- Q3DDSurfaceDrawContext_GetDirectDrawSurface (TQ3DrawContextObject drawContext,
- TQ3DDSurfaceDescriptor * ddSurfaceDescriptor);
- #endif /* CALL_NOT_IN_CARBON */
- #endif /* !defined(QD3D_NO_DIRECTDRAW) */
- #endif /* TARGET_OS_WIN32 */
- #if PRAGMA_ENUM_ALWAYSINT
- #pragma enumsalwaysint reset
- #ifdef __QD3DDRAWCONTEXT__RESTORE_TWOBYTEINTS
- #pragma fourbyteints off
- #endif
- #elif PRAGMA_ENUM_OPTIONS
- #pragma option enum=reset
- #elif defined(__QD3DDRAWCONTEXT__RESTORE_PACKED_ENUMS)
- #pragma options(pack_enums)
- #endif
- #if PRAGMA_STRUCT_ALIGN
- #pragma options align=reset
- #elif PRAGMA_STRUCT_PACKPUSH
- #pragma pack(pop)
- #elif PRAGMA_STRUCT_PACK
- #pragma pack()
- #endif
- #ifdef PRAGMA_IMPORT_OFF
- #pragma import off
- #elif PRAGMA_IMPORT
- #pragma import reset
- #endif
- #ifdef __cplusplus
- }
- #endif
- #endif /* __QD3DDRAWCONTEXT__ */