You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
698 lines
17 KiB
698 lines
17 KiB
/* |
|
File: QD3DShader.h |
|
|
|
Contains: QuickDraw 3D Shader / Color Routines |
|
|
|
Version: Technology: Quickdraw 3D 1.6 |
|
Release: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (c) 1995-1999 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 |
|
/* |
|
* Q3ColorRGB_Set() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorRGB * ) |
|
Q3ColorRGB_Set( |
|
TQ3ColorRGB * color, |
|
float r, |
|
float g, |
|
float b); |
|
|
|
|
|
/* |
|
* Q3ColorARGB_Set() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorARGB * ) |
|
Q3ColorARGB_Set( |
|
TQ3ColorARGB * color, |
|
float a, |
|
float r, |
|
float g, |
|
float b); |
|
|
|
|
|
/* |
|
* Q3ColorRGB_Add() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorRGB * ) |
|
Q3ColorRGB_Add( |
|
const TQ3ColorRGB * c1, |
|
const TQ3ColorRGB * c2, |
|
TQ3ColorRGB * result); |
|
|
|
|
|
/* |
|
* Q3ColorRGB_Subtract() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorRGB * ) |
|
Q3ColorRGB_Subtract( |
|
const TQ3ColorRGB * c1, |
|
const TQ3ColorRGB * c2, |
|
TQ3ColorRGB * result); |
|
|
|
|
|
/* |
|
* Q3ColorRGB_Scale() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorRGB * ) |
|
Q3ColorRGB_Scale( |
|
const TQ3ColorRGB * color, |
|
float scale, |
|
TQ3ColorRGB * result); |
|
|
|
|
|
/* |
|
* Q3ColorRGB_Clamp() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorRGB * ) |
|
Q3ColorRGB_Clamp( |
|
const TQ3ColorRGB * color, |
|
TQ3ColorRGB * result); |
|
|
|
|
|
/* |
|
* Q3ColorRGB_Lerp() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorRGB * ) |
|
Q3ColorRGB_Lerp( |
|
const TQ3ColorRGB * first, |
|
const TQ3ColorRGB * last, |
|
float alpha, |
|
TQ3ColorRGB * result); |
|
|
|
|
|
/* |
|
* Q3ColorRGB_Accumulate() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ColorRGB * ) |
|
Q3ColorRGB_Accumulate( |
|
const TQ3ColorRGB * src, |
|
TQ3ColorRGB * result); |
|
|
|
|
|
#endif /* CALL_NOT_IN_CARBON */ |
|
|
|
#if CALL_NOT_IN_CARBON |
|
/* |
|
* Q3ColorRGB_Luminance() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
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 |
|
/* |
|
* Q3Shader_GetType() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ObjectType ) |
|
Q3Shader_GetType(TQ3ShaderObject shader); |
|
|
|
|
|
/* |
|
* Q3Shader_Submit() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Shader_Submit( |
|
TQ3ShaderObject shader, |
|
TQ3ViewObject view); |
|
|
|
|
|
/* |
|
* Q3Shader_SetUVTransform() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Shader_SetUVTransform( |
|
TQ3ShaderObject shader, |
|
const TQ3Matrix3x3 * uvTransform); |
|
|
|
|
|
/* |
|
* Q3Shader_GetUVTransform() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Shader_GetUVTransform( |
|
TQ3ShaderObject shader, |
|
TQ3Matrix3x3 * uvTransform); |
|
|
|
|
|
/* |
|
* Q3Shader_SetUBoundary() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Shader_SetUBoundary( |
|
TQ3ShaderObject shader, |
|
TQ3ShaderUVBoundary uBoundary); |
|
|
|
|
|
/* |
|
* Q3Shader_SetVBoundary() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Shader_SetVBoundary( |
|
TQ3ShaderObject shader, |
|
TQ3ShaderUVBoundary vBoundary); |
|
|
|
|
|
/* |
|
* Q3Shader_GetUBoundary() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Shader_GetUBoundary( |
|
TQ3ShaderObject shader, |
|
TQ3ShaderUVBoundary * uBoundary); |
|
|
|
|
|
/* |
|
* Q3Shader_GetVBoundary() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Shader_GetVBoundary( |
|
TQ3ShaderObject shader, |
|
TQ3ShaderUVBoundary * vBoundary); |
|
|
|
|
|
|
|
/****************************************************************************** |
|
** ** |
|
** Illumination Shader Classes ** |
|
** ** |
|
*****************************************************************************/ |
|
/* |
|
* Q3IlluminationShader_GetType() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ObjectType ) |
|
Q3IlluminationShader_GetType(TQ3ShaderObject shader); |
|
|
|
|
|
/* |
|
* Q3PhongIllumination_New() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ShaderObject ) |
|
Q3PhongIllumination_New(void); |
|
|
|
|
|
/* |
|
* Q3LambertIllumination_New() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ShaderObject ) |
|
Q3LambertIllumination_New(void); |
|
|
|
|
|
/* |
|
* Q3NULLIllumination_New() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ShaderObject ) |
|
Q3NULLIllumination_New(void); |
|
|
|
|
|
|
|
/****************************************************************************** |
|
** ** |
|
** Surface Shader ** |
|
** ** |
|
*****************************************************************************/ |
|
/* |
|
* Q3SurfaceShader_GetType() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ObjectType ) |
|
Q3SurfaceShader_GetType(TQ3SurfaceShaderObject shader); |
|
|
|
|
|
|
|
/****************************************************************************** |
|
** ** |
|
** Texture Shader ** |
|
** ** |
|
*****************************************************************************/ |
|
/* |
|
* Q3TextureShader_New() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ShaderObject ) |
|
Q3TextureShader_New(TQ3TextureObject texture); |
|
|
|
|
|
/* |
|
* Q3TextureShader_GetTexture() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3TextureShader_GetTexture( |
|
TQ3ShaderObject shader, |
|
TQ3TextureObject * texture); |
|
|
|
|
|
/* |
|
* Q3TextureShader_SetTexture() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3TextureShader_SetTexture( |
|
TQ3ShaderObject shader, |
|
TQ3TextureObject texture); |
|
|
|
|
|
|
|
/****************************************************************************** |
|
** ** |
|
** Texture Objects ** |
|
** ** |
|
*****************************************************************************/ |
|
/* |
|
* Q3Texture_GetType() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3ObjectType ) |
|
Q3Texture_GetType(TQ3TextureObject texture); |
|
|
|
|
|
/* |
|
* Q3Texture_GetWidth() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Texture_GetWidth( |
|
TQ3TextureObject texture, |
|
unsigned long * width); |
|
|
|
|
|
/* |
|
* Q3Texture_GetHeight() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3Texture_GetHeight( |
|
TQ3TextureObject texture, |
|
unsigned long * height); |
|
|
|
|
|
|
|
/****************************************************************************** |
|
** ** |
|
** Pixmap Texture ** |
|
** ** |
|
*****************************************************************************/ |
|
/* |
|
* Q3PixmapTexture_New() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3TextureObject ) |
|
Q3PixmapTexture_New(const TQ3StoragePixmap * pixmap); |
|
|
|
|
|
/* |
|
* Q3PixmapTexture_GetPixmap() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3PixmapTexture_GetPixmap( |
|
TQ3TextureObject texture, |
|
TQ3StoragePixmap * pixmap); |
|
|
|
|
|
/* |
|
* Q3PixmapTexture_SetPixmap() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3PixmapTexture_SetPixmap( |
|
TQ3TextureObject texture, |
|
const TQ3StoragePixmap * pixmap); |
|
|
|
|
|
|
|
/****************************************************************************** |
|
** ** |
|
** Mipmap Texture ** |
|
** ** |
|
*****************************************************************************/ |
|
/* |
|
* Q3MipmapTexture_New() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3TextureObject ) |
|
Q3MipmapTexture_New(const TQ3Mipmap * mipmap); |
|
|
|
|
|
/* |
|
* Q3MipmapTexture_GetMipmap() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3MipmapTexture_GetMipmap( |
|
TQ3TextureObject texture, |
|
TQ3Mipmap * mipmap); |
|
|
|
|
|
/* |
|
* Q3MipmapTexture_SetMipmap() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3MipmapTexture_SetMipmap( |
|
TQ3TextureObject texture, |
|
const TQ3Mipmap * mipmap); |
|
|
|
|
|
/****************************************************************************** |
|
** ** |
|
** Compressed Pixmap Texture ** |
|
** ** |
|
*****************************************************************************/ |
|
/* |
|
* Q3CompressedPixmapTexture_New() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3TextureObject ) |
|
Q3CompressedPixmapTexture_New(const TQ3CompressedPixmap * compressedPixmap); |
|
|
|
|
|
/* |
|
* Q3CompressedPixmapTexture_GetCompressedPixmap() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3CompressedPixmapTexture_GetCompressedPixmap( |
|
TQ3TextureObject texture, |
|
TQ3CompressedPixmap * compressedPixmap); |
|
|
|
|
|
/* |
|
* Q3CompressedPixmapTexture_SetCompressedPixmap() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
EXTERN_API_C( TQ3Status ) |
|
Q3CompressedPixmapTexture_SetCompressedPixmap( |
|
TQ3TextureObject texture, |
|
const TQ3CompressedPixmap * compressedPixmap); |
|
|
|
|
|
/* |
|
* Q3CompressedPixmapTexture_CompressImage() |
|
* |
|
* Availability: |
|
* Non-Carbon CFM: not available |
|
* CarbonLib: not available |
|
* Mac OS X: not available |
|
*/ |
|
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__ */ |
|
|
|
|