topical media & game development
lib-of-vs-libs-QTDevWin-CIncludes-QD3DShader.h / h
/*
File: QD3DShader.h
Contains: QuickDraw 3D Shader / Color 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 __QD3DSHADER__
define __QD3DSHADER__
ifndef __QD3D__
include <QD3D.h>
endif
ifndef __MOVIES__
include <Movies.h>
endif
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 __QD3DSHADER__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 __QD3DSHADER__RESTORE_PACKED_ENUMS
#pragma options(!pack_enums)
#endif
endif
****************************************************************************
* **
* RGB Color routines **
* **
***************************************************************************
if CALL_NOT_IN_CARBON
EXTERN_API_C( TQ3ColorRGB *)
Q3ColorRGB_Set (TQ3ColorRGB * color,
float r,
float g,
float b);
EXTERN_API_C( TQ3ColorARGB *)
Q3ColorARGB_Set (TQ3ColorARGB * color,
float a,
float r,
float g,
float b);
EXTERN_API_C( TQ3ColorRGB *)
Q3ColorRGB_Add (const TQ3ColorRGB * c1,
const TQ3ColorRGB * c2,
TQ3ColorRGB * result);
EXTERN_API_C( TQ3ColorRGB *)
Q3ColorRGB_Subtract (const TQ3ColorRGB * c1,
const TQ3ColorRGB * c2,
TQ3ColorRGB * result);
EXTERN_API_C( TQ3ColorRGB *)
Q3ColorRGB_Scale (const TQ3ColorRGB * color,
float scale,
TQ3ColorRGB * result);
EXTERN_API_C( TQ3ColorRGB *)
Q3ColorRGB_Clamp (const TQ3ColorRGB * color,
TQ3ColorRGB * result);
EXTERN_API_C( TQ3ColorRGB *)
Q3ColorRGB_Lerp (const TQ3ColorRGB * first,
const TQ3ColorRGB * last,
float alpha,
TQ3ColorRGB * result);
EXTERN_API_C( TQ3ColorRGB *)
Q3ColorRGB_Accumulate (const TQ3ColorRGB * src,
TQ3ColorRGB * result);
endif /* CALL_NOT_IN_CARBON */
if CALL_NOT_IN_CARBON
EXTERN_API_C( float *)
Q3ColorRGB_Luminance (const TQ3ColorRGB * color,
float * luminance);
endif /* CALL_NOT_IN_CARBON */
****************************************************************************
* **
* Shader Types **
* **
***************************************************************************
enum TQ3ShaderUVBoundary {
kQ3ShaderUVBoundaryWrap = 0,
kQ3ShaderUVBoundaryClamp = 1
};
typedef enum TQ3ShaderUVBoundary TQ3ShaderUVBoundary;
****************************************************************************
* **
* Shader Routines **
* **
***************************************************************************
if CALL_NOT_IN_CARBON
EXTERN_API_C( TQ3ObjectType )
Q3Shader_GetType (TQ3ShaderObject shader);
EXTERN_API_C( TQ3Status )
Q3Shader_Submit (TQ3ShaderObject shader,
TQ3ViewObject view);
EXTERN_API_C( TQ3Status )
Q3Shader_SetUVTransform (TQ3ShaderObject shader,
const TQ3Matrix3x3 * uvTransform);
EXTERN_API_C( TQ3Status )
Q3Shader_GetUVTransform (TQ3ShaderObject shader,
TQ3Matrix3x3 * uvTransform);
EXTERN_API_C( TQ3Status )
Q3Shader_SetUBoundary (TQ3ShaderObject shader,
TQ3ShaderUVBoundary uBoundary);
EXTERN_API_C( TQ3Status )
Q3Shader_SetVBoundary (TQ3ShaderObject shader,
TQ3ShaderUVBoundary vBoundary);
EXTERN_API_C( TQ3Status )
Q3Shader_GetUBoundary (TQ3ShaderObject shader,
TQ3ShaderUVBoundary * uBoundary);
EXTERN_API_C( TQ3Status )
Q3Shader_GetVBoundary (TQ3ShaderObject shader,
TQ3ShaderUVBoundary * vBoundary);
****************************************************************************
* **
* Illumination Shader Classes **
* **
***************************************************************************
EXTERN_API_C( TQ3ObjectType )
Q3IlluminationShader_GetType (TQ3ShaderObject shader);
EXTERN_API_C( TQ3ShaderObject )
Q3PhongIllumination_New (void);
EXTERN_API_C( TQ3ShaderObject )
Q3LambertIllumination_New (void);
EXTERN_API_C( TQ3ShaderObject )
Q3NULLIllumination_New (void);
****************************************************************************
* **
* Surface Shader **
* **
***************************************************************************
EXTERN_API_C( TQ3ObjectType )
Q3SurfaceShader_GetType (TQ3SurfaceShaderObject shader);
****************************************************************************
* **
* Texture Shader **
* **
***************************************************************************
EXTERN_API_C( TQ3ShaderObject )
Q3TextureShader_New (TQ3TextureObject texture);
EXTERN_API_C( TQ3Status )
Q3TextureShader_GetTexture (TQ3ShaderObject shader,
TQ3TextureObject * texture);
EXTERN_API_C( TQ3Status )
Q3TextureShader_SetTexture (TQ3ShaderObject shader,
TQ3TextureObject texture);
****************************************************************************
* **
* Texture Objects **
* **
***************************************************************************
EXTERN_API_C( TQ3ObjectType )
Q3Texture_GetType (TQ3TextureObject texture);
EXTERN_API_C( TQ3Status )
Q3Texture_GetWidth (TQ3TextureObject texture,
unsigned long * width);
EXTERN_API_C( TQ3Status )
Q3Texture_GetHeight (TQ3TextureObject texture,
unsigned long * height);
****************************************************************************
* **
* Pixmap Texture **
* **
***************************************************************************
EXTERN_API_C( TQ3TextureObject )
Q3PixmapTexture_New (const TQ3StoragePixmap * pixmap);
EXTERN_API_C( TQ3Status )
Q3PixmapTexture_GetPixmap (TQ3TextureObject texture,
TQ3StoragePixmap * pixmap);
EXTERN_API_C( TQ3Status )
Q3PixmapTexture_SetPixmap (TQ3TextureObject texture,
const TQ3StoragePixmap * pixmap);
****************************************************************************
* **
* Mipmap Texture **
* **
***************************************************************************
EXTERN_API_C( TQ3TextureObject )
Q3MipmapTexture_New (const TQ3Mipmap * mipmap);
EXTERN_API_C( TQ3Status )
Q3MipmapTexture_GetMipmap (TQ3TextureObject texture,
TQ3Mipmap * mipmap);
EXTERN_API_C( TQ3Status )
Q3MipmapTexture_SetMipmap (TQ3TextureObject texture,
const TQ3Mipmap * mipmap);
****************************************************************************
* **
* Compressed Pixmap Texture **
* **
***************************************************************************
EXTERN_API_C( TQ3TextureObject )
Q3CompressedPixmapTexture_New (const TQ3CompressedPixmap * compressedPixmap);
EXTERN_API_C( TQ3Status )
Q3CompressedPixmapTexture_GetCompressedPixmap (TQ3TextureObject texture,
TQ3CompressedPixmap * compressedPixmap);
EXTERN_API_C( TQ3Status )
Q3CompressedPixmapTexture_SetCompressedPixmap (TQ3TextureObject texture,
const TQ3CompressedPixmap * compressedPixmap);
EXTERN_API_C( TQ3Status )
Q3CompressedPixmapTexture_CompressImage (TQ3CompressedPixmap * compressedPixmap,
PixMapHandle sourcePixMap,
CodecType codecType,
CodecComponent codecComponent,
short codedDepth,
CodecQ codecQuality);
endif /* CALL_NOT_IN_CARBON */
if PRAGMA_ENUM_ALWAYSINT
#pragma enumsalwaysint reset
#ifdef __QD3DSHADER__RESTORE_TWOBYTEINTS
#pragma fourbyteints off
#endif
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=reset
#elif defined(__QD3DSHADER__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 /* __QD3DSHADER__ */
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.