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.

698 lines
17 KiB

  1. /*
  2. File: QD3DShader.h
  3. Contains: QuickDraw 3D Shader / Color Routines
  4. Version: Technology: Quickdraw 3D 1.6
  5. Release: QuickTime 7.3
  6. Copyright: (c) 2007 (c) 1995-1999 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 __QD3DSHADER__
  12. #define __QD3DSHADER__
  13. #ifndef __QD3D__
  14. #include <QD3D.h>
  15. #endif
  16. #ifndef __MOVIES__
  17. #include <Movies.h>
  18. #endif
  19. #if PRAGMA_ONCE
  20. #pragma once
  21. #endif
  22. #ifdef __cplusplus
  23. extern "C" {
  24. #endif
  25. #if PRAGMA_IMPORT
  26. #pragma import on
  27. #endif
  28. #if PRAGMA_STRUCT_ALIGN
  29. #pragma options align=power
  30. #elif PRAGMA_STRUCT_PACKPUSH
  31. #pragma pack(push, 2)
  32. #elif PRAGMA_STRUCT_PACK
  33. #pragma pack(2)
  34. #endif
  35. #if PRAGMA_ENUM_ALWAYSINT
  36. #if defined(__fourbyteints__) && !__fourbyteints__
  37. #define __QD3DSHADER__RESTORE_TWOBYTEINTS
  38. #pragma fourbyteints on
  39. #endif
  40. #pragma enumsalwaysint on
  41. #elif PRAGMA_ENUM_OPTIONS
  42. #pragma option enum=int
  43. #elif PRAGMA_ENUM_PACK
  44. #if __option(pack_enums)
  45. #define __QD3DSHADER__RESTORE_PACKED_ENUMS
  46. #pragma options(!pack_enums)
  47. #endif
  48. #endif
  49. /******************************************************************************
  50. ** **
  51. ** RGB Color routines **
  52. ** **
  53. *****************************************************************************/
  54. #if CALL_NOT_IN_CARBON
  55. /*
  56. * Q3ColorRGB_Set()
  57. *
  58. * Availability:
  59. * Non-Carbon CFM: not available
  60. * CarbonLib: not available
  61. * Mac OS X: not available
  62. */
  63. EXTERN_API_C( TQ3ColorRGB * )
  64. Q3ColorRGB_Set(
  65. TQ3ColorRGB * color,
  66. float r,
  67. float g,
  68. float b);
  69. /*
  70. * Q3ColorARGB_Set()
  71. *
  72. * Availability:
  73. * Non-Carbon CFM: not available
  74. * CarbonLib: not available
  75. * Mac OS X: not available
  76. */
  77. EXTERN_API_C( TQ3ColorARGB * )
  78. Q3ColorARGB_Set(
  79. TQ3ColorARGB * color,
  80. float a,
  81. float r,
  82. float g,
  83. float b);
  84. /*
  85. * Q3ColorRGB_Add()
  86. *
  87. * Availability:
  88. * Non-Carbon CFM: not available
  89. * CarbonLib: not available
  90. * Mac OS X: not available
  91. */
  92. EXTERN_API_C( TQ3ColorRGB * )
  93. Q3ColorRGB_Add(
  94. const TQ3ColorRGB * c1,
  95. const TQ3ColorRGB * c2,
  96. TQ3ColorRGB * result);
  97. /*
  98. * Q3ColorRGB_Subtract()
  99. *
  100. * Availability:
  101. * Non-Carbon CFM: not available
  102. * CarbonLib: not available
  103. * Mac OS X: not available
  104. */
  105. EXTERN_API_C( TQ3ColorRGB * )
  106. Q3ColorRGB_Subtract(
  107. const TQ3ColorRGB * c1,
  108. const TQ3ColorRGB * c2,
  109. TQ3ColorRGB * result);
  110. /*
  111. * Q3ColorRGB_Scale()
  112. *
  113. * Availability:
  114. * Non-Carbon CFM: not available
  115. * CarbonLib: not available
  116. * Mac OS X: not available
  117. */
  118. EXTERN_API_C( TQ3ColorRGB * )
  119. Q3ColorRGB_Scale(
  120. const TQ3ColorRGB * color,
  121. float scale,
  122. TQ3ColorRGB * result);
  123. /*
  124. * Q3ColorRGB_Clamp()
  125. *
  126. * Availability:
  127. * Non-Carbon CFM: not available
  128. * CarbonLib: not available
  129. * Mac OS X: not available
  130. */
  131. EXTERN_API_C( TQ3ColorRGB * )
  132. Q3ColorRGB_Clamp(
  133. const TQ3ColorRGB * color,
  134. TQ3ColorRGB * result);
  135. /*
  136. * Q3ColorRGB_Lerp()
  137. *
  138. * Availability:
  139. * Non-Carbon CFM: not available
  140. * CarbonLib: not available
  141. * Mac OS X: not available
  142. */
  143. EXTERN_API_C( TQ3ColorRGB * )
  144. Q3ColorRGB_Lerp(
  145. const TQ3ColorRGB * first,
  146. const TQ3ColorRGB * last,
  147. float alpha,
  148. TQ3ColorRGB * result);
  149. /*
  150. * Q3ColorRGB_Accumulate()
  151. *
  152. * Availability:
  153. * Non-Carbon CFM: not available
  154. * CarbonLib: not available
  155. * Mac OS X: not available
  156. */
  157. EXTERN_API_C( TQ3ColorRGB * )
  158. Q3ColorRGB_Accumulate(
  159. const TQ3ColorRGB * src,
  160. TQ3ColorRGB * result);
  161. #endif /* CALL_NOT_IN_CARBON */
  162. #if CALL_NOT_IN_CARBON
  163. /*
  164. * Q3ColorRGB_Luminance()
  165. *
  166. * Availability:
  167. * Non-Carbon CFM: not available
  168. * CarbonLib: not available
  169. * Mac OS X: not available
  170. */
  171. EXTERN_API_C( float * )
  172. Q3ColorRGB_Luminance(
  173. const TQ3ColorRGB * color,
  174. float * luminance);
  175. #endif /* CALL_NOT_IN_CARBON */
  176. /******************************************************************************
  177. ** **
  178. ** Shader Types **
  179. ** **
  180. *****************************************************************************/
  181. enum TQ3ShaderUVBoundary {
  182. kQ3ShaderUVBoundaryWrap = 0,
  183. kQ3ShaderUVBoundaryClamp = 1
  184. };
  185. typedef enum TQ3ShaderUVBoundary TQ3ShaderUVBoundary;
  186. /******************************************************************************
  187. ** **
  188. ** Shader Routines **
  189. ** **
  190. *****************************************************************************/
  191. #if CALL_NOT_IN_CARBON
  192. /*
  193. * Q3Shader_GetType()
  194. *
  195. * Availability:
  196. * Non-Carbon CFM: not available
  197. * CarbonLib: not available
  198. * Mac OS X: not available
  199. */
  200. EXTERN_API_C( TQ3ObjectType )
  201. Q3Shader_GetType(TQ3ShaderObject shader);
  202. /*
  203. * Q3Shader_Submit()
  204. *
  205. * Availability:
  206. * Non-Carbon CFM: not available
  207. * CarbonLib: not available
  208. * Mac OS X: not available
  209. */
  210. EXTERN_API_C( TQ3Status )
  211. Q3Shader_Submit(
  212. TQ3ShaderObject shader,
  213. TQ3ViewObject view);
  214. /*
  215. * Q3Shader_SetUVTransform()
  216. *
  217. * Availability:
  218. * Non-Carbon CFM: not available
  219. * CarbonLib: not available
  220. * Mac OS X: not available
  221. */
  222. EXTERN_API_C( TQ3Status )
  223. Q3Shader_SetUVTransform(
  224. TQ3ShaderObject shader,
  225. const TQ3Matrix3x3 * uvTransform);
  226. /*
  227. * Q3Shader_GetUVTransform()
  228. *
  229. * Availability:
  230. * Non-Carbon CFM: not available
  231. * CarbonLib: not available
  232. * Mac OS X: not available
  233. */
  234. EXTERN_API_C( TQ3Status )
  235. Q3Shader_GetUVTransform(
  236. TQ3ShaderObject shader,
  237. TQ3Matrix3x3 * uvTransform);
  238. /*
  239. * Q3Shader_SetUBoundary()
  240. *
  241. * Availability:
  242. * Non-Carbon CFM: not available
  243. * CarbonLib: not available
  244. * Mac OS X: not available
  245. */
  246. EXTERN_API_C( TQ3Status )
  247. Q3Shader_SetUBoundary(
  248. TQ3ShaderObject shader,
  249. TQ3ShaderUVBoundary uBoundary);
  250. /*
  251. * Q3Shader_SetVBoundary()
  252. *
  253. * Availability:
  254. * Non-Carbon CFM: not available
  255. * CarbonLib: not available
  256. * Mac OS X: not available
  257. */
  258. EXTERN_API_C( TQ3Status )
  259. Q3Shader_SetVBoundary(
  260. TQ3ShaderObject shader,
  261. TQ3ShaderUVBoundary vBoundary);
  262. /*
  263. * Q3Shader_GetUBoundary()
  264. *
  265. * Availability:
  266. * Non-Carbon CFM: not available
  267. * CarbonLib: not available
  268. * Mac OS X: not available
  269. */
  270. EXTERN_API_C( TQ3Status )
  271. Q3Shader_GetUBoundary(
  272. TQ3ShaderObject shader,
  273. TQ3ShaderUVBoundary * uBoundary);
  274. /*
  275. * Q3Shader_GetVBoundary()
  276. *
  277. * Availability:
  278. * Non-Carbon CFM: not available
  279. * CarbonLib: not available
  280. * Mac OS X: not available
  281. */
  282. EXTERN_API_C( TQ3Status )
  283. Q3Shader_GetVBoundary(
  284. TQ3ShaderObject shader,
  285. TQ3ShaderUVBoundary * vBoundary);
  286. /******************************************************************************
  287. ** **
  288. ** Illumination Shader Classes **
  289. ** **
  290. *****************************************************************************/
  291. /*
  292. * Q3IlluminationShader_GetType()
  293. *
  294. * Availability:
  295. * Non-Carbon CFM: not available
  296. * CarbonLib: not available
  297. * Mac OS X: not available
  298. */
  299. EXTERN_API_C( TQ3ObjectType )
  300. Q3IlluminationShader_GetType(TQ3ShaderObject shader);
  301. /*
  302. * Q3PhongIllumination_New()
  303. *
  304. * Availability:
  305. * Non-Carbon CFM: not available
  306. * CarbonLib: not available
  307. * Mac OS X: not available
  308. */
  309. EXTERN_API_C( TQ3ShaderObject )
  310. Q3PhongIllumination_New(void);
  311. /*
  312. * Q3LambertIllumination_New()
  313. *
  314. * Availability:
  315. * Non-Carbon CFM: not available
  316. * CarbonLib: not available
  317. * Mac OS X: not available
  318. */
  319. EXTERN_API_C( TQ3ShaderObject )
  320. Q3LambertIllumination_New(void);
  321. /*
  322. * Q3NULLIllumination_New()
  323. *
  324. * Availability:
  325. * Non-Carbon CFM: not available
  326. * CarbonLib: not available
  327. * Mac OS X: not available
  328. */
  329. EXTERN_API_C( TQ3ShaderObject )
  330. Q3NULLIllumination_New(void);
  331. /******************************************************************************
  332. ** **
  333. ** Surface Shader **
  334. ** **
  335. *****************************************************************************/
  336. /*
  337. * Q3SurfaceShader_GetType()
  338. *
  339. * Availability:
  340. * Non-Carbon CFM: not available
  341. * CarbonLib: not available
  342. * Mac OS X: not available
  343. */
  344. EXTERN_API_C( TQ3ObjectType )
  345. Q3SurfaceShader_GetType(TQ3SurfaceShaderObject shader);
  346. /******************************************************************************
  347. ** **
  348. ** Texture Shader **
  349. ** **
  350. *****************************************************************************/
  351. /*
  352. * Q3TextureShader_New()
  353. *
  354. * Availability:
  355. * Non-Carbon CFM: not available
  356. * CarbonLib: not available
  357. * Mac OS X: not available
  358. */
  359. EXTERN_API_C( TQ3ShaderObject )
  360. Q3TextureShader_New(TQ3TextureObject texture);
  361. /*
  362. * Q3TextureShader_GetTexture()
  363. *
  364. * Availability:
  365. * Non-Carbon CFM: not available
  366. * CarbonLib: not available
  367. * Mac OS X: not available
  368. */
  369. EXTERN_API_C( TQ3Status )
  370. Q3TextureShader_GetTexture(
  371. TQ3ShaderObject shader,
  372. TQ3TextureObject * texture);
  373. /*
  374. * Q3TextureShader_SetTexture()
  375. *
  376. * Availability:
  377. * Non-Carbon CFM: not available
  378. * CarbonLib: not available
  379. * Mac OS X: not available
  380. */
  381. EXTERN_API_C( TQ3Status )
  382. Q3TextureShader_SetTexture(
  383. TQ3ShaderObject shader,
  384. TQ3TextureObject texture);
  385. /******************************************************************************
  386. ** **
  387. ** Texture Objects **
  388. ** **
  389. *****************************************************************************/
  390. /*
  391. * Q3Texture_GetType()
  392. *
  393. * Availability:
  394. * Non-Carbon CFM: not available
  395. * CarbonLib: not available
  396. * Mac OS X: not available
  397. */
  398. EXTERN_API_C( TQ3ObjectType )
  399. Q3Texture_GetType(TQ3TextureObject texture);
  400. /*
  401. * Q3Texture_GetWidth()
  402. *
  403. * Availability:
  404. * Non-Carbon CFM: not available
  405. * CarbonLib: not available
  406. * Mac OS X: not available
  407. */
  408. EXTERN_API_C( TQ3Status )
  409. Q3Texture_GetWidth(
  410. TQ3TextureObject texture,
  411. unsigned long * width);
  412. /*
  413. * Q3Texture_GetHeight()
  414. *
  415. * Availability:
  416. * Non-Carbon CFM: not available
  417. * CarbonLib: not available
  418. * Mac OS X: not available
  419. */
  420. EXTERN_API_C( TQ3Status )
  421. Q3Texture_GetHeight(
  422. TQ3TextureObject texture,
  423. unsigned long * height);
  424. /******************************************************************************
  425. ** **
  426. ** Pixmap Texture **
  427. ** **
  428. *****************************************************************************/
  429. /*
  430. * Q3PixmapTexture_New()
  431. *
  432. * Availability:
  433. * Non-Carbon CFM: not available
  434. * CarbonLib: not available
  435. * Mac OS X: not available
  436. */
  437. EXTERN_API_C( TQ3TextureObject )
  438. Q3PixmapTexture_New(const TQ3StoragePixmap * pixmap);
  439. /*
  440. * Q3PixmapTexture_GetPixmap()
  441. *
  442. * Availability:
  443. * Non-Carbon CFM: not available
  444. * CarbonLib: not available
  445. * Mac OS X: not available
  446. */
  447. EXTERN_API_C( TQ3Status )
  448. Q3PixmapTexture_GetPixmap(
  449. TQ3TextureObject texture,
  450. TQ3StoragePixmap * pixmap);
  451. /*
  452. * Q3PixmapTexture_SetPixmap()
  453. *
  454. * Availability:
  455. * Non-Carbon CFM: not available
  456. * CarbonLib: not available
  457. * Mac OS X: not available
  458. */
  459. EXTERN_API_C( TQ3Status )
  460. Q3PixmapTexture_SetPixmap(
  461. TQ3TextureObject texture,
  462. const TQ3StoragePixmap * pixmap);
  463. /******************************************************************************
  464. ** **
  465. ** Mipmap Texture **
  466. ** **
  467. *****************************************************************************/
  468. /*
  469. * Q3MipmapTexture_New()
  470. *
  471. * Availability:
  472. * Non-Carbon CFM: not available
  473. * CarbonLib: not available
  474. * Mac OS X: not available
  475. */
  476. EXTERN_API_C( TQ3TextureObject )
  477. Q3MipmapTexture_New(const TQ3Mipmap * mipmap);
  478. /*
  479. * Q3MipmapTexture_GetMipmap()
  480. *
  481. * Availability:
  482. * Non-Carbon CFM: not available
  483. * CarbonLib: not available
  484. * Mac OS X: not available
  485. */
  486. EXTERN_API_C( TQ3Status )
  487. Q3MipmapTexture_GetMipmap(
  488. TQ3TextureObject texture,
  489. TQ3Mipmap * mipmap);
  490. /*
  491. * Q3MipmapTexture_SetMipmap()
  492. *
  493. * Availability:
  494. * Non-Carbon CFM: not available
  495. * CarbonLib: not available
  496. * Mac OS X: not available
  497. */
  498. EXTERN_API_C( TQ3Status )
  499. Q3MipmapTexture_SetMipmap(
  500. TQ3TextureObject texture,
  501. const TQ3Mipmap * mipmap);
  502. /******************************************************************************
  503. ** **
  504. ** Compressed Pixmap Texture **
  505. ** **
  506. *****************************************************************************/
  507. /*
  508. * Q3CompressedPixmapTexture_New()
  509. *
  510. * Availability:
  511. * Non-Carbon CFM: not available
  512. * CarbonLib: not available
  513. * Mac OS X: not available
  514. */
  515. EXTERN_API_C( TQ3TextureObject )
  516. Q3CompressedPixmapTexture_New(const TQ3CompressedPixmap * compressedPixmap);
  517. /*
  518. * Q3CompressedPixmapTexture_GetCompressedPixmap()
  519. *
  520. * Availability:
  521. * Non-Carbon CFM: not available
  522. * CarbonLib: not available
  523. * Mac OS X: not available
  524. */
  525. EXTERN_API_C( TQ3Status )
  526. Q3CompressedPixmapTexture_GetCompressedPixmap(
  527. TQ3TextureObject texture,
  528. TQ3CompressedPixmap * compressedPixmap);
  529. /*
  530. * Q3CompressedPixmapTexture_SetCompressedPixmap()
  531. *
  532. * Availability:
  533. * Non-Carbon CFM: not available
  534. * CarbonLib: not available
  535. * Mac OS X: not available
  536. */
  537. EXTERN_API_C( TQ3Status )
  538. Q3CompressedPixmapTexture_SetCompressedPixmap(
  539. TQ3TextureObject texture,
  540. const TQ3CompressedPixmap * compressedPixmap);
  541. /*
  542. * Q3CompressedPixmapTexture_CompressImage()
  543. *
  544. * Availability:
  545. * Non-Carbon CFM: not available
  546. * CarbonLib: not available
  547. * Mac OS X: not available
  548. */
  549. EXTERN_API_C( TQ3Status )
  550. Q3CompressedPixmapTexture_CompressImage(
  551. TQ3CompressedPixmap * compressedPixmap,
  552. PixMapHandle sourcePixMap,
  553. CodecType codecType,
  554. CodecComponent codecComponent,
  555. short codedDepth,
  556. CodecQ codecQuality);
  557. #endif /* CALL_NOT_IN_CARBON */
  558. #if PRAGMA_ENUM_ALWAYSINT
  559. #pragma enumsalwaysint reset
  560. #ifdef __QD3DSHADER__RESTORE_TWOBYTEINTS
  561. #pragma fourbyteints off
  562. #endif
  563. #elif PRAGMA_ENUM_OPTIONS
  564. #pragma option enum=reset
  565. #elif defined(__QD3DSHADER__RESTORE_PACKED_ENUMS)
  566. #pragma options(pack_enums)
  567. #endif
  568. #if PRAGMA_STRUCT_ALIGN
  569. #pragma options align=reset
  570. #elif PRAGMA_STRUCT_PACKPUSH
  571. #pragma pack(pop)
  572. #elif PRAGMA_STRUCT_PACK
  573. #pragma pack()
  574. #endif
  575. #ifdef PRAGMA_IMPORT_OFF
  576. #pragma import off
  577. #elif PRAGMA_IMPORT
  578. #pragma import reset
  579. #endif
  580. #ifdef __cplusplus
  581. }
  582. #endif
  583. #endif /* __QD3DSHADER__ */