Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
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.

811 lines
19 KiB

5 years ago
/*
File: QD3DLight.h
Contains: Generic light routines
Version: Technology: Quickdraw 3D 1.6
Release: QuickTime 7.3
Copyright: (c) 2007 (c) 1995-1998 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 __QD3DLIGHT__
#define __QD3DLIGHT__
#ifndef __QD3D__
#include <QD3D.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 __QD3DLIGHT__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 __QD3DLIGHT__RESTORE_PACKED_ENUMS
#pragma options(!pack_enums)
#endif
#endif
/******************************************************************************
** **
** Enum Definitions **
** **
*****************************************************************************/
enum TQ3AttenuationType {
kQ3AttenuationTypeNone = 0,
kQ3AttenuationTypeInverseDistance = 1,
kQ3AttenuationTypeInverseDistanceSquared = 2
};
typedef enum TQ3AttenuationType TQ3AttenuationType;
enum TQ3FallOffType {
kQ3FallOffTypeNone = 0,
kQ3FallOffTypeLinear = 1,
kQ3FallOffTypeExponential = 2,
kQ3FallOffTypeCosine = 3
};
typedef enum TQ3FallOffType TQ3FallOffType;
/******************************************************************************
** **
** Data Structure Definitions **
** **
*****************************************************************************/
struct TQ3LightData {
TQ3Boolean isOn;
float brightness;
TQ3ColorRGB color;
};
typedef struct TQ3LightData TQ3LightData;
struct TQ3DirectionalLightData {
TQ3LightData lightData;
TQ3Boolean castsShadows;
TQ3Vector3D direction;
};
typedef struct TQ3DirectionalLightData TQ3DirectionalLightData;
struct TQ3PointLightData {
TQ3LightData lightData;
TQ3Boolean castsShadows;
TQ3AttenuationType attenuation;
TQ3Point3D location;
};
typedef struct TQ3PointLightData TQ3PointLightData;
struct TQ3SpotLightData {
TQ3LightData lightData;
TQ3Boolean castsShadows;
TQ3AttenuationType attenuation;
TQ3Point3D location;
TQ3Vector3D direction;
float hotAngle;
float outerAngle;
TQ3FallOffType fallOff;
};
typedef struct TQ3SpotLightData TQ3SpotLightData;
/******************************************************************************
** **
** Light routines (apply to all TQ3LightObjects) **
** **
*****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
* Q3Light_GetType()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3ObjectType )
Q3Light_GetType(TQ3LightObject light);
/*
* Q3Light_GetState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_GetState(
TQ3LightObject light,
TQ3Boolean * isOn);
/*
* Q3Light_GetBrightness()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_GetBrightness(
TQ3LightObject light,
float * brightness);
/*
* Q3Light_GetColor()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_GetColor(
TQ3LightObject light,
TQ3ColorRGB * color);
/*
* Q3Light_SetState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_SetState(
TQ3LightObject light,
TQ3Boolean isOn);
/*
* Q3Light_SetBrightness()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_SetBrightness(
TQ3LightObject light,
float brightness);
/*
* Q3Light_SetColor()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_SetColor(
TQ3LightObject light,
const TQ3ColorRGB * color);
/*
* Q3Light_GetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_GetData(
TQ3LightObject light,
TQ3LightData * lightData);
/*
* Q3Light_SetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Light_SetData(
TQ3LightObject light,
const TQ3LightData * lightData);
/******************************************************************************
** **
** Specific Light Routines **
** **
*****************************************************************************/
/******************************************************************************
** **
** Ambient Light **
** **
*****************************************************************************/
/*
* Q3AmbientLight_New()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3LightObject )
Q3AmbientLight_New(const TQ3LightData * lightData);
/*
* Q3AmbientLight_GetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AmbientLight_GetData(
TQ3LightObject light,
TQ3LightData * lightData);
/*
* Q3AmbientLight_SetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AmbientLight_SetData(
TQ3LightObject light,
const TQ3LightData * lightData);
/******************************************************************************
** **
** Directional Light **
** **
*****************************************************************************/
/*
* Q3DirectionalLight_New()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3LightObject )
Q3DirectionalLight_New(const TQ3DirectionalLightData * directionalLightData);
/*
* Q3DirectionalLight_GetCastShadowsState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3DirectionalLight_GetCastShadowsState(
TQ3LightObject light,
TQ3Boolean * castsShadows);
/*
* Q3DirectionalLight_GetDirection()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3DirectionalLight_GetDirection(
TQ3LightObject light,
TQ3Vector3D * direction);
/*
* Q3DirectionalLight_SetCastShadowsState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3DirectionalLight_SetCastShadowsState(
TQ3LightObject light,
TQ3Boolean castsShadows);
/*
* Q3DirectionalLight_SetDirection()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3DirectionalLight_SetDirection(
TQ3LightObject light,
const TQ3Vector3D * direction);
/*
* Q3DirectionalLight_GetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3DirectionalLight_GetData(
TQ3LightObject light,
TQ3DirectionalLightData * directionalLightData);
/*
* Q3DirectionalLight_SetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3DirectionalLight_SetData(
TQ3LightObject light,
const TQ3DirectionalLightData * directionalLightData);
/******************************************************************************
** **
** Point Light **
** **
*****************************************************************************/
/*
* Q3PointLight_New()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3LightObject )
Q3PointLight_New(const TQ3PointLightData * pointLightData);
/*
* Q3PointLight_GetCastShadowsState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_GetCastShadowsState(
TQ3LightObject light,
TQ3Boolean * castsShadows);
/*
* Q3PointLight_GetAttenuation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_GetAttenuation(
TQ3LightObject light,
TQ3AttenuationType * attenuation);
/*
* Q3PointLight_GetLocation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_GetLocation(
TQ3LightObject light,
TQ3Point3D * location);
/*
* Q3PointLight_GetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_GetData(
TQ3LightObject light,
TQ3PointLightData * pointLightData);
/*
* Q3PointLight_SetCastShadowsState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_SetCastShadowsState(
TQ3LightObject light,
TQ3Boolean castsShadows);
/*
* Q3PointLight_SetAttenuation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_SetAttenuation(
TQ3LightObject light,
TQ3AttenuationType attenuation);
/*
* Q3PointLight_SetLocation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_SetLocation(
TQ3LightObject light,
const TQ3Point3D * location);
/*
* Q3PointLight_SetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3PointLight_SetData(
TQ3LightObject light,
const TQ3PointLightData * pointLightData);
/******************************************************************************
** **
** Spot Light **
** **
*****************************************************************************/
/*
* Q3SpotLight_New()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3LightObject )
Q3SpotLight_New(const TQ3SpotLightData * spotLightData);
/*
* Q3SpotLight_GetCastShadowsState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetCastShadowsState(
TQ3LightObject light,
TQ3Boolean * castsShadows);
/*
* Q3SpotLight_GetAttenuation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetAttenuation(
TQ3LightObject light,
TQ3AttenuationType * attenuation);
/*
* Q3SpotLight_GetLocation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetLocation(
TQ3LightObject light,
TQ3Point3D * location);
/*
* Q3SpotLight_GetDirection()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetDirection(
TQ3LightObject light,
TQ3Vector3D * direction);
/*
* Q3SpotLight_GetHotAngle()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetHotAngle(
TQ3LightObject light,
float * hotAngle);
/*
* Q3SpotLight_GetOuterAngle()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetOuterAngle(
TQ3LightObject light,
float * outerAngle);
/*
* Q3SpotLight_GetFallOff()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetFallOff(
TQ3LightObject light,
TQ3FallOffType * fallOff);
/*
* Q3SpotLight_GetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_GetData(
TQ3LightObject light,
TQ3SpotLightData * spotLightData);
/*
* Q3SpotLight_SetCastShadowsState()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetCastShadowsState(
TQ3LightObject light,
TQ3Boolean castsShadows);
/*
* Q3SpotLight_SetAttenuation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetAttenuation(
TQ3LightObject light,
TQ3AttenuationType attenuation);
/*
* Q3SpotLight_SetLocation()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetLocation(
TQ3LightObject light,
const TQ3Point3D * location);
/*
* Q3SpotLight_SetDirection()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetDirection(
TQ3LightObject light,
const TQ3Vector3D * direction);
/*
* Q3SpotLight_SetHotAngle()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetHotAngle(
TQ3LightObject light,
float hotAngle);
/*
* Q3SpotLight_SetOuterAngle()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetOuterAngle(
TQ3LightObject light,
float outerAngle);
/*
* Q3SpotLight_SetFallOff()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetFallOff(
TQ3LightObject light,
TQ3FallOffType fallOff);
/*
* Q3SpotLight_SetData()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3SpotLight_SetData(
TQ3LightObject light,
const TQ3SpotLightData * spotLightData);
#endif /* CALL_NOT_IN_CARBON */
#if PRAGMA_ENUM_ALWAYSINT
#pragma enumsalwaysint reset
#ifdef __QD3DLIGHT__RESTORE_TWOBYTEINTS
#pragma fourbyteints off
#endif
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=reset
#elif defined(__QD3DLIGHT__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 /* __QD3DLIGHT__ */