Team Fortress 2 Source Code as on 22/4/2020
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.

366 lines
12 KiB

  1. /*
  2. File: QD3DOld.h
  3. Contains: Obsolete API for Quickdraw 3D that QuickTime still uses
  4. Version: Technology: Quickdraw 3D 1.5.1
  5. Release: QuickTime 7.3
  6. Copyright: (c) 2007 (c) 1995-1998 by Apple Computer, Inc., all rights reserved.
  7. Bugs?: For bug reports, consult the following page on
  8. the World Wide Web:
  9. http://developer.apple.com/bugreporter/
  10. */
  11. #ifndef __QD3DOLD__
  12. #define __QD3DOLD__
  13. #ifndef __CONDITIONALMACROS__
  14. #include <ConditionalMacros.h>
  15. #endif
  16. #if TARGET_OS_MAC
  17. #ifndef __MACTYPES__
  18. #include <MacTypes.h>
  19. #endif
  20. #endif /* TARGET_OS_MAC */
  21. #ifndef __QD3D__
  22. #include <QD3D.h>
  23. #endif
  24. #ifndef __QD3DPICK__
  25. #include <QD3DPick.h>
  26. #endif
  27. #ifndef __QD3DRENDERER__
  28. #include <QD3DRenderer.h>
  29. #endif
  30. #ifndef __QD3DIO__
  31. #include <QD3DIO.h>
  32. #endif
  33. #if PRAGMA_ONCE
  34. #pragma once
  35. #endif
  36. #ifdef __cplusplus
  37. extern "C" {
  38. #endif
  39. #if PRAGMA_IMPORT
  40. #pragma import on
  41. #endif
  42. #if PRAGMA_STRUCT_ALIGN
  43. #pragma options align=power
  44. #elif PRAGMA_STRUCT_PACKPUSH
  45. #pragma pack(push, 2)
  46. #elif PRAGMA_STRUCT_PACK
  47. #pragma pack(2)
  48. #endif
  49. #if PRAGMA_ENUM_ALWAYSINT
  50. #if defined(__fourbyteints__) && !__fourbyteints__
  51. #define __QD3DOLD__RESTORE_TWOBYTEINTS
  52. #pragma fourbyteints on
  53. #endif
  54. #pragma enumsalwaysint on
  55. #elif PRAGMA_ENUM_OPTIONS
  56. #pragma option enum=int
  57. #elif PRAGMA_ENUM_PACK
  58. #if __option(pack_enums)
  59. #define __QD3DOLD__RESTORE_PACKED_ENUMS
  60. #pragma options(!pack_enums)
  61. #endif
  62. #endif
  63. /******************************************************************************
  64. ** **
  65. ** Obsolete Object System Types **
  66. ** from QD3D.i **
  67. ** **
  68. *****************************************************************************/
  69. typedef struct OpaqueTQ3ObjectClass* TQ3ObjectClass;
  70. typedef unsigned long TQ3MethodType;
  71. /*
  72. * Object methods
  73. */
  74. #define kQ3MethodTypeObjectUnregister Q3_METHOD_TYPE('u','n','r','g')
  75. /*
  76. * IO Methods
  77. */
  78. #define kQ3MethodTypeObjectFileVersion Q3_METHOD_TYPE('v','e','r','s') /* version */
  79. #define kQ3MethodTypeObjectTraverse Q3_METHOD_TYPE('t','r','v','s') /* byte count */
  80. #define kQ3MethodTypeObjectTraverseData Q3_METHOD_TYPE('t','r','v','d') /* byte count */
  81. #define kQ3MethodTypeObjectWrite Q3_METHOD_TYPE('w','r','i','t') /* Dump info to file */
  82. #define kQ3MethodTypeObjectReadData Q3_METHOD_TYPE('r','d','d','t') /* Read info from file into buffer or, attach read data to parent */
  83. typedef CALLBACK_API_C( void , TQ3FunctionPointer )(void);
  84. typedef CALLBACK_API_C( TQ3FunctionPointer , TQ3MetaHandler )(TQ3MethodType methodType);
  85. /*
  86. * MetaHandler:
  87. * When you give a metahandler to QuickDraw 3D, it is called multiple times to
  88. * build method tables, and then is thrown away. You are guaranteed that
  89. * your metahandler will never be called again after a call that was passed
  90. * a metahandler returns.
  91. *
  92. * Your metahandler should contain a switch on the methodType passed to it
  93. * and should return the corresponding method as an TQ3FunctionPointer.
  94. *
  95. * IMPORTANT: A metaHandler MUST always "return" a value. If you are
  96. * passed a methodType that you do not understand, ALWAYS return NULL.
  97. *
  98. * These types here are prototypes of how your functions should look.
  99. */
  100. typedef CALLBACK_API_C( TQ3Status , TQ3ObjectUnregisterMethod )(TQ3ObjectClass objectClass);
  101. /******************************************************************************
  102. ** **
  103. ** Obsolete ObjectClass Routines **
  104. ** from QD3D.i **
  105. ** **
  106. *****************************************************************************/
  107. /*
  108. * Q3ObjectClass_Unregister is an obsolete function. For the new extensions
  109. * model you should now use Q3XObjectHierarchy_UnregisterClass which is
  110. * defined in QD3DExtension.h and takes identical parameters.
  111. */
  112. #if CALL_NOT_IN_CARBON
  113. /*
  114. * Q3ObjectClass_Unregister()
  115. *
  116. * Availability:
  117. * Non-Carbon CFM: not available
  118. * CarbonLib: not available
  119. * Mac OS X: not available
  120. */
  121. EXTERN_API_C( TQ3Status )
  122. Q3ObjectClass_Unregister(TQ3ObjectClass objectClass);
  123. /******************************************************************************
  124. ** **
  125. ** Obsolete Custom Element Registration **
  126. ** from QD3DSet.i **
  127. ** **
  128. *****************************************************************************/
  129. #define kQ3MethodTypeElementCopyAdd Q3_METHOD_TYPE('e','c','p','a')
  130. #define kQ3MethodTypeElementCopyReplace Q3_METHOD_TYPE('e','c','p','r')
  131. #define kQ3MethodTypeElementCopyGet Q3_METHOD_TYPE('e','c','p','g')
  132. #define kQ3MethodTypeElementCopyDuplicate Q3_METHOD_TYPE('e','c','p','d')
  133. #define kQ3MethodTypeElementDelete Q3_METHOD_TYPE('e','d','e','l')
  134. #endif /* CALL_NOT_IN_CARBON */
  135. typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyAddMethod )(const void *fromAPIElement, void *toInternalElement);
  136. typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyReplaceMethod )(const void *fromAPIElement, void *ontoInternalElement);
  137. typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyGetMethod )(const void *fromInternalElement, void *toAPIElement);
  138. typedef CALLBACK_API_C( TQ3Status , TQ3ElementCopyDuplicateMethod )(const void *fromInternalElement, void *toInternalElement);
  139. typedef CALLBACK_API_C( TQ3Status , TQ3ElementDeleteMethod )(void * internalElement);
  140. #if CALL_NOT_IN_CARBON
  141. /*
  142. * Q3ElementClass_Register()
  143. *
  144. * Availability:
  145. * Non-Carbon CFM: not available
  146. * CarbonLib: not available
  147. * Mac OS X: not available
  148. */
  149. EXTERN_API_C( TQ3ObjectClass )
  150. Q3ElementClass_Register(
  151. TQ3ElementType elementType,
  152. const char * name,
  153. unsigned long sizeOfElement,
  154. TQ3MetaHandler metaHandler);
  155. /*
  156. * Q3ElementType_GetElementSize()
  157. *
  158. * Availability:
  159. * Non-Carbon CFM: not available
  160. * CarbonLib: not available
  161. * Mac OS X: not available
  162. */
  163. EXTERN_API_C( TQ3Status )
  164. Q3ElementType_GetElementSize(
  165. TQ3ElementType elementType,
  166. unsigned long * sizeOfElement);
  167. /******************************************************************************
  168. ** **
  169. ** Obsolete QD3DPick.i API **
  170. ** **
  171. *****************************************************************************/
  172. /*
  173. * The following data structure has been obsoleted by
  174. * the Q3Pick_GetPickDetailData function in conjunction
  175. * with the pickDetailValue enum
  176. */
  177. #endif /* CALL_NOT_IN_CARBON */
  178. struct TQ3HitData {
  179. TQ3PickParts part;
  180. TQ3PickDetail validMask;
  181. unsigned long pickID;
  182. TQ3HitPath path;
  183. TQ3Object object;
  184. TQ3Matrix4x4 localToWorldMatrix;
  185. TQ3Point3D xyzPoint;
  186. float distance;
  187. TQ3Vector3D normal;
  188. TQ3ShapePartObject shapePart;
  189. };
  190. typedef struct TQ3HitData TQ3HitData;
  191. /*
  192. * The following functions have been superseeded
  193. * by the Q3Pick_GetPickDetailData function
  194. */
  195. #if CALL_NOT_IN_CARBON
  196. /*
  197. * Q3Pick_GetHitData()
  198. *
  199. * Availability:
  200. * Non-Carbon CFM: not available
  201. * CarbonLib: not available
  202. * Mac OS X: not available
  203. */
  204. EXTERN_API_C( TQ3Status )
  205. Q3Pick_GetHitData(
  206. TQ3PickObject pick,
  207. unsigned long index,
  208. TQ3HitData * hitData);
  209. /*
  210. * Q3Hit_EmptyData()
  211. *
  212. * Availability:
  213. * Non-Carbon CFM: not available
  214. * CarbonLib: not available
  215. * Mac OS X: not available
  216. */
  217. EXTERN_API_C( TQ3Status )
  218. Q3Hit_EmptyData(TQ3HitData * hitData);
  219. /******************************************************************************
  220. ** **
  221. ** Obsolete QD3DRenderer.i API **
  222. ** **
  223. *****************************************************************************/
  224. /*
  225. * Blocking, flush all buffered graphics to rasterizer and update
  226. * draw context.
  227. *
  228. * This function has been replaced by Q3View_Sync
  229. */
  230. /*
  231. * Q3Renderer_Sync()
  232. *
  233. * Availability:
  234. * Non-Carbon CFM: not available
  235. * CarbonLib: not available
  236. * Mac OS X: not available
  237. */
  238. EXTERN_API_C( TQ3Status )
  239. Q3Renderer_Sync(
  240. TQ3RendererObject renderer,
  241. TQ3ViewObject view);
  242. /******************************************************************************
  243. ** **
  244. ** Obsolete QD3DIO.i API **
  245. ** **
  246. *****************************************************************************/
  247. /*
  248. * TQ3ObjectTraverseMethod
  249. *
  250. * For "elements" (meaning "attributes, too), you will be passed NULL for
  251. * object. Sorry, custom objects will be available in the next major revision.
  252. *
  253. * The "data" is a pointer to your internal element data.
  254. *
  255. * The view is the current traversal view.
  256. */
  257. #endif /* CALL_NOT_IN_CARBON */
  258. typedef CALLBACK_API_C( TQ3Status , TQ3ObjectTraverseMethod )(TQ3Object object, void *data, TQ3ViewObject view);
  259. typedef CALLBACK_API_C( TQ3Status , TQ3ObjectWriteMethod )(const void *object, TQ3FileObject theFile);
  260. /*
  261. * Use Q3XView_SubmitWriteData instead...
  262. */
  263. typedef CALLBACK_API_C( void , TQ3DataDeleteMethod )(void * data);
  264. #if CALL_NOT_IN_CARBON
  265. /*
  266. * Q3View_SubmitWriteData()
  267. *
  268. * Availability:
  269. * Non-Carbon CFM: not available
  270. * CarbonLib: not available
  271. * Mac OS X: not available
  272. */
  273. EXTERN_API_C( TQ3Status )
  274. Q3View_SubmitWriteData(
  275. TQ3ViewObject view,
  276. TQ3Size size,
  277. void * data,
  278. TQ3DataDeleteMethod deleteData);
  279. /*
  280. * TQ3ObjectReadDataMethod
  281. *
  282. * For "elements" (meaning "attributes", too), you must allocate stack space
  283. * and call Q3Set_Add on "parentObject", which is an TQ3SetObject.
  284. *
  285. * Otherwise, parentObject is whatever object your element is a subobject of...
  286. */
  287. #endif /* CALL_NOT_IN_CARBON */
  288. typedef CALLBACK_API_C( TQ3Status , TQ3ObjectReadDataMethod )(TQ3Object parentObject, TQ3FileObject theFile);
  289. #if PRAGMA_ENUM_ALWAYSINT
  290. #pragma enumsalwaysint reset
  291. #ifdef __QD3DOLD__RESTORE_TWOBYTEINTS
  292. #pragma fourbyteints off
  293. #endif
  294. #elif PRAGMA_ENUM_OPTIONS
  295. #pragma option enum=reset
  296. #elif defined(__QD3DOLD__RESTORE_PACKED_ENUMS)
  297. #pragma options(pack_enums)
  298. #endif
  299. #if PRAGMA_STRUCT_ALIGN
  300. #pragma options align=reset
  301. #elif PRAGMA_STRUCT_PACKPUSH
  302. #pragma pack(pop)
  303. #elif PRAGMA_STRUCT_PACK
  304. #pragma pack()
  305. #endif
  306. #ifdef PRAGMA_IMPORT_OFF
  307. #pragma import off
  308. #elif PRAGMA_IMPORT
  309. #pragma import reset
  310. #endif
  311. #ifdef __cplusplus
  312. }
  313. #endif
  314. #endif /* __QD3DOLD__ */