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.

531 lines
15 KiB

5 years ago
/*
File: QD3DSet.h
Contains: Q3Set types and 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 __QD3DSET__
#define __QD3DSET__
#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_ENUM_ALWAYSINT
#if defined(__fourbyteints__) && !__fourbyteints__
#define __QD3DSET__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 __QD3DSET__RESTORE_PACKED_ENUMS
#pragma options(!pack_enums)
#endif
#endif
/******************************************************************************
** **
** Set Routines **
** **
*****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
* Q3Set_New()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3SetObject )
Q3Set_New(void);
/*
* Q3Set_GetType()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3ObjectType )
Q3Set_GetType(TQ3SetObject theSet);
/*
* Q3Set_Add()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Set_Add(
TQ3SetObject theSet,
TQ3ElementType theType,
const void * data);
/*
* Q3Set_Get()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Set_Get(
TQ3SetObject theSet,
TQ3ElementType theType,
void * data);
/*
* Q3Set_Contains()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Boolean )
Q3Set_Contains(
TQ3SetObject theSet,
TQ3ElementType theType);
/*
* Q3Set_Clear()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Set_Clear(
TQ3SetObject theSet,
TQ3ElementType theType);
/*
* Q3Set_Empty()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Set_Empty(TQ3SetObject target);
/*
* Iterating through all elements in a set
*
* Pass in kQ3ElementTypeNone to get first type
* kQ3ElementTypeNone is returned when end of list is reached
*/
/*
* Q3Set_GetNextElementType()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Set_GetNextElementType(
TQ3SetObject theSet,
TQ3ElementType * theType);
/******************************************************************************
** **
** Attribute Types **
** **
*****************************************************************************/
/*
* For the data types listed below, pass in a pointer to it in the _Add
* and _Get calls.
*
* For surface shader attributes, reference counts are incremented on
* the _Add and _Get
*/
#endif /* CALL_NOT_IN_CARBON */
enum TQ3AttributeTypes {
/* Data Type */
kQ3AttributeTypeNone = 0, /* --------- */
kQ3AttributeTypeSurfaceUV = 1, /* TQ3Param2D */
kQ3AttributeTypeShadingUV = 2, /* TQ3Param2D */
kQ3AttributeTypeNormal = 3, /* TQ3Vector3D */
kQ3AttributeTypeAmbientCoefficient = 4, /* float */
kQ3AttributeTypeDiffuseColor = 5, /* TQ3ColorRGB */
kQ3AttributeTypeSpecularColor = 6, /* TQ3ColorRGB */
kQ3AttributeTypeSpecularControl = 7, /* float */
kQ3AttributeTypeTransparencyColor = 8, /* TQ3ColorRGB */
kQ3AttributeTypeSurfaceTangent = 9, /* TQ3Tangent2D */
kQ3AttributeTypeHighlightState = 10, /* TQ3Switch */
kQ3AttributeTypeSurfaceShader = 11, /* TQ3SurfaceShaderObject */
kQ3AttributeTypeNumTypes = 12
};
typedef enum TQ3AttributeTypes TQ3AttributeTypes;
typedef TQ3ElementType TQ3AttributeType;
/******************************************************************************
** **
** Attribute Drawing **
** **
*****************************************************************************/
#if CALL_NOT_IN_CARBON
/*
* Q3Attribute_Submit()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3Attribute_Submit(
TQ3AttributeType attributeType,
const void * data,
TQ3ViewObject view);
/******************************************************************************
** **
** AttributeSet Routines **
** **
*****************************************************************************/
/*
* Q3AttributeSet_New()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3AttributeSet )
Q3AttributeSet_New(void);
/*
* Q3AttributeSet_Add()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AttributeSet_Add(
TQ3AttributeSet attributeSet,
TQ3AttributeType theType,
const void * data);
/*
* Q3AttributeSet_Contains()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Boolean )
Q3AttributeSet_Contains(
TQ3AttributeSet attributeSet,
TQ3AttributeType attributeType);
/*
* Q3AttributeSet_Get()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AttributeSet_Get(
TQ3AttributeSet attributeSet,
TQ3AttributeType theType,
void * data);
/*
* Q3AttributeSet_Clear()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AttributeSet_Clear(
TQ3AttributeSet attributeSet,
TQ3AttributeType theType);
/*
* Q3AttributeSet_Empty()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AttributeSet_Empty(TQ3AttributeSet target);
/*
* Q3AttributeSet_GetNextAttributeType
*
* Pass in kQ3AttributeTypeNone to get first type
* kQ3AttributeTypeNone is returned when end of list is reached
*/
/*
* Q3AttributeSet_GetNextAttributeType()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AttributeSet_GetNextAttributeType(
TQ3AttributeSet source,
TQ3AttributeType * theType);
/*
* Q3AttributeSet_Submit()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AttributeSet_Submit(
TQ3AttributeSet attributeSet,
TQ3ViewObject view);
/*
* Inherit from parent->child into result
* Result attributes are:
* all child attributes + all parent attributes NOT in the child
*/
/*
* Q3AttributeSet_Inherit()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3AttributeSet_Inherit(
TQ3AttributeSet parent,
TQ3AttributeSet child,
TQ3AttributeSet result);
/******************************************************************************
** **
** Custom Element Registration **
** **
*****************************************************************************/
/*
* Element Methods -
*
* When you create a custom element, you control what structures are
* passed around the API. For example, you may allow the Q3Set_Add call
* take one type of argument, store your element internally in some
* abstract data type, and have the Q3Set_Get call take a different
* argument.
*
* For example:
*
* There are four calls which at some point will copy an element:
*
* Q3Set_Add (copied from Application memory to QuickDraw3D memory)
* Q3Set_Get (copied from QuickDraw3D memory to Application memory)
* Q3Object_Duplicate (all elements are copied internally)
* Q3AttributeSet_Inherit (all elements are copied internally)
*
* Either CopyAdd or CopyReplace is called during the "_Add" call.
* - CopyAdd is destructive and should assume "toElement" is garbage
* - CopyReplace is replacing an existing element.
*
* CopyGet is called during the "_Get" call.
*
* CopyDuplicate is called to duplicate an element's internal structure.
*
* Attributes Methods -
*
* For copying data while Inheriting. Element methods are used
* at all other times.
*
* CopyInherit is called to duplicate an element's internal structure
* during inheritance. You should make this as fast as possible.
* (for example, if your custom element contains objects, you
* should do a Q3Shared_GetReference instead of a Q3Object_Duplicate)
*
* The ElementDelete method will be called for all of your elements
* copied around via CopyAdd, CopyReplace, CopyDuplicate, and
* CopyInherit.
* If CopyGet allocates any memory in it's destination, it is up to the
* application to delete it on its side.
*/
#endif /* CALL_NOT_IN_CARBON */
#define kQ3XMethodTypeElementCopyAdd Q3_METHOD_TYPE('e','c','p','a')
#define kQ3XMethodTypeElementCopyReplace Q3_METHOD_TYPE('e','c','p','r')
#define kQ3XMethodTypeElementCopyGet Q3_METHOD_TYPE('e','c','p','g')
#define kQ3XMethodTypeElementCopyDuplicate Q3_METHOD_TYPE('e','c','p','d')
#define kQ3XMethodTypeElementDelete Q3_METHOD_TYPE('e','d','e','l')
typedef CALLBACK_API_C( TQ3Status , TQ3XElementCopyAddMethod )(const void *fromAPIElement, void *toInternalElement);
typedef CALLBACK_API_C( TQ3Status , TQ3XElementCopyReplaceMethod )(const void *fromAPIElement, void *ontoInternalElement);
typedef CALLBACK_API_C( TQ3Status , TQ3XElementCopyGetMethod )(const void *fromInternalElement, void *toAPIElement);
typedef CALLBACK_API_C( TQ3Status , TQ3XElementCopyDuplicateMethod )(const void *fromInternalElement, void *toInternalElement);
typedef CALLBACK_API_C( TQ3Status , TQ3XElementDeleteMethod )(void * internalElement);
#if CALL_NOT_IN_CARBON
/*
* Q3XElementClass_Register()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3XObjectClass )
Q3XElementClass_Register(
TQ3ElementType * elementType,
const char * name,
unsigned long sizeOfElement,
TQ3XMetaHandler metaHandler);
/*
* Q3XElementType_GetElementSize()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3Status )
Q3XElementType_GetElementSize(
TQ3ElementType elementType,
unsigned long * sizeOfElement);
/******************************************************************************
** **
** Custom Attribute Registration **
** **
*****************************************************************************/
#define kQ3XMethodTypeAttributeInherit Q3_METHOD_TYPE('i','n','h','t')
#endif /* CALL_NOT_IN_CARBON */
typedef TQ3Boolean TQ3XAttributeInheritMethod;
/* return kQ3True or kQ3False in your metahandler */
#define kQ3XMethodTypeAttributeCopyInherit Q3_METHOD_TYPE('a','c','p','i')
typedef CALLBACK_API_C( TQ3Status , TQ3XAttributeCopyInheritMethod )(const void *fromInternalAttribute, void *toInternalAttribute);
#if CALL_NOT_IN_CARBON
/*
* Q3XAttributeClass_Register()
*
* Availability:
* Non-Carbon CFM: not available
* CarbonLib: not available
* Mac OS X: not available
*/
EXTERN_API_C( TQ3XObjectClass )
Q3XAttributeClass_Register(
TQ3AttributeType * attributeType,
const char * creatorName,
unsigned long sizeOfElement,
TQ3XMetaHandler metaHandler);
/*
* Version 1.5
*/
#define kQ3XMethodTypeAttributeDefault Q3_METHOD_TYPE('a','s','d','f')
#endif /* CALL_NOT_IN_CARBON */
typedef CALLBACK_API_C( TQ3Status , TQ3XAttributeDefaultMethod )(void * internalElement);
#define kQ3XMethodTypeAttributeIsDefault Q3_METHOD_TYPE('a','i','d','f')
typedef CALLBACK_API_C( TQ3Boolean , TQ3XAttributeIsDefaultMethod )(void * internalElement);
#if PRAGMA_ENUM_ALWAYSINT
#pragma enumsalwaysint reset
#ifdef __QD3DSET__RESTORE_TWOBYTEINTS
#pragma fourbyteints off
#endif
#elif PRAGMA_ENUM_OPTIONS
#pragma option enum=reset
#elif defined(__QD3DSET__RESTORE_PACKED_ENUMS)
#pragma options(pack_enums)
#endif
#ifdef PRAGMA_IMPORT_OFF
#pragma import off
#elif PRAGMA_IMPORT
#pragma import reset
#endif
#ifdef __cplusplus
}
#endif
#endif /* __QD3DSET__ */