topical media & game development

talk show tell print

lib-of-vs-libs-QTDevWin-CIncludes-QD3DLight.h / h



  /*
       File:       QD3DLight.h
   
       Contains:   Generic light 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 __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
  EXTERN_API_C( TQ3ObjectType )
  Q3Light_GetType                 (TQ3LightObject         light);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_GetState                (TQ3LightObject         light,
                                   TQ3Boolean *           isOn);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_GetBrightness           (TQ3LightObject         light,
                                   float *                brightness);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_GetColor                (TQ3LightObject         light,
                                   TQ3ColorRGB *          color);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_SetState                (TQ3LightObject         light,
                                   TQ3Boolean             isOn);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_SetBrightness           (TQ3LightObject         light,
                                   float                  brightness);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_SetColor                (TQ3LightObject         light,
                                   const TQ3ColorRGB *    color);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_GetData                 (TQ3LightObject         light,
                                   TQ3LightData *         lightData);
  
  EXTERN_API_C( TQ3Status )
  Q3Light_SetData                 (TQ3LightObject         light,
                                   const TQ3LightData *   lightData);
  
  
**************************************************************************** * ** * Specific Light Routines ** * ** ***************************************************************************

  
  
**************************************************************************** * ** * Ambient Light ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3LightObject )
  Q3AmbientLight_New              (const TQ3LightData *   lightData);
  
  EXTERN_API_C( TQ3Status )
  Q3AmbientLight_GetData          (TQ3LightObject         light,
                                   TQ3LightData *         lightData);
  
  EXTERN_API_C( TQ3Status )
  Q3AmbientLight_SetData          (TQ3LightObject         light,
                                   const TQ3LightData *   lightData);
  
  
**************************************************************************** * ** * Directional Light ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3LightObject )
  Q3DirectionalLight_New          (const TQ3DirectionalLightData * directionalLightData);
  
  EXTERN_API_C( TQ3Status )
  Q3DirectionalLight_GetCastShadowsState (TQ3LightObject  light,
                                   TQ3Boolean *           castsShadows);
  
  EXTERN_API_C( TQ3Status )
  Q3DirectionalLight_GetDirection (TQ3LightObject         light,
                                   TQ3Vector3D *          direction);
  
  EXTERN_API_C( TQ3Status )
  Q3DirectionalLight_SetCastShadowsState (TQ3LightObject  light,
                                   TQ3Boolean             castsShadows);
  
  EXTERN_API_C( TQ3Status )
  Q3DirectionalLight_SetDirection (TQ3LightObject         light,
                                   const TQ3Vector3D *    direction);
  
  EXTERN_API_C( TQ3Status )
  Q3DirectionalLight_GetData      (TQ3LightObject         light,
                                   TQ3DirectionalLightData * directionalLightData);
  
  EXTERN_API_C( TQ3Status )
  Q3DirectionalLight_SetData      (TQ3LightObject         light,
                                   const TQ3DirectionalLightData * directionalLightData);
  
  
**************************************************************************** * ** * Point Light ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3LightObject )
  Q3PointLight_New                (const TQ3PointLightData * pointLightData);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_GetCastShadowsState (TQ3LightObject        light,
                                   TQ3Boolean *           castsShadows);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_GetAttenuation     (TQ3LightObject         light,
                                   TQ3AttenuationType *   attenuation);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_GetLocation        (TQ3LightObject         light,
                                   TQ3Point3D *           location);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_GetData            (TQ3LightObject         light,
                                   TQ3PointLightData *    pointLightData);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_SetCastShadowsState (TQ3LightObject        light,
                                   TQ3Boolean             castsShadows);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_SetAttenuation     (TQ3LightObject         light,
                                   TQ3AttenuationType     attenuation);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_SetLocation        (TQ3LightObject         light,
                                   const TQ3Point3D *     location);
  
  EXTERN_API_C( TQ3Status )
  Q3PointLight_SetData            (TQ3LightObject         light,
                                   const TQ3PointLightData * pointLightData);
  
  
**************************************************************************** * ** * Spot Light ** * ** ***************************************************************************

  
  EXTERN_API_C( TQ3LightObject )
  Q3SpotLight_New                 (const TQ3SpotLightData * spotLightData);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetCastShadowsState (TQ3LightObject         light,
                                   TQ3Boolean *           castsShadows);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetAttenuation      (TQ3LightObject         light,
                                   TQ3AttenuationType *   attenuation);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetLocation         (TQ3LightObject         light,
                                   TQ3Point3D *           location);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetDirection        (TQ3LightObject         light,
                                   TQ3Vector3D *          direction);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetHotAngle         (TQ3LightObject         light,
                                   float *                hotAngle);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetOuterAngle       (TQ3LightObject         light,
                                   float *                outerAngle);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetFallOff          (TQ3LightObject         light,
                                   TQ3FallOffType *       fallOff);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_GetData             (TQ3LightObject         light,
                                   TQ3SpotLightData *     spotLightData);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_SetCastShadowsState (TQ3LightObject         light,
                                   TQ3Boolean             castsShadows);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_SetAttenuation      (TQ3LightObject         light,
                                   TQ3AttenuationType     attenuation);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_SetLocation         (TQ3LightObject         light,
                                   const TQ3Point3D *     location);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_SetDirection        (TQ3LightObject         light,
                                   const TQ3Vector3D *    direction);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_SetHotAngle         (TQ3LightObject         light,
                                   float                  hotAngle);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_SetOuterAngle       (TQ3LightObject         light,
                                   float                  outerAngle);
  
  EXTERN_API_C( TQ3Status )
  Q3SpotLight_SetFallOff          (TQ3LightObject         light,
                                   TQ3FallOffType         fallOff);
  
  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__ */
  
  


(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.