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.

810 lines
19 KiB

  1. /*
  2. File: QD3DLight.h
  3. Contains: Generic light routines
  4. Version: Technology: Quickdraw 3D 1.6
  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 __QD3DLIGHT__
  12. #define __QD3DLIGHT__
  13. #ifndef __QD3D__
  14. #include <QD3D.h>
  15. #endif
  16. #if PRAGMA_ONCE
  17. #pragma once
  18. #endif
  19. #ifdef __cplusplus
  20. extern "C" {
  21. #endif
  22. #if PRAGMA_IMPORT
  23. #pragma import on
  24. #endif
  25. #if PRAGMA_STRUCT_ALIGN
  26. #pragma options align=power
  27. #elif PRAGMA_STRUCT_PACKPUSH
  28. #pragma pack(push, 2)
  29. #elif PRAGMA_STRUCT_PACK
  30. #pragma pack(2)
  31. #endif
  32. #if PRAGMA_ENUM_ALWAYSINT
  33. #if defined(__fourbyteints__) && !__fourbyteints__
  34. #define __QD3DLIGHT__RESTORE_TWOBYTEINTS
  35. #pragma fourbyteints on
  36. #endif
  37. #pragma enumsalwaysint on
  38. #elif PRAGMA_ENUM_OPTIONS
  39. #pragma option enum=int
  40. #elif PRAGMA_ENUM_PACK
  41. #if __option(pack_enums)
  42. #define __QD3DLIGHT__RESTORE_PACKED_ENUMS
  43. #pragma options(!pack_enums)
  44. #endif
  45. #endif
  46. /******************************************************************************
  47. ** **
  48. ** Enum Definitions **
  49. ** **
  50. *****************************************************************************/
  51. enum TQ3AttenuationType {
  52. kQ3AttenuationTypeNone = 0,
  53. kQ3AttenuationTypeInverseDistance = 1,
  54. kQ3AttenuationTypeInverseDistanceSquared = 2
  55. };
  56. typedef enum TQ3AttenuationType TQ3AttenuationType;
  57. enum TQ3FallOffType {
  58. kQ3FallOffTypeNone = 0,
  59. kQ3FallOffTypeLinear = 1,
  60. kQ3FallOffTypeExponential = 2,
  61. kQ3FallOffTypeCosine = 3
  62. };
  63. typedef enum TQ3FallOffType TQ3FallOffType;
  64. /******************************************************************************
  65. ** **
  66. ** Data Structure Definitions **
  67. ** **
  68. *****************************************************************************/
  69. struct TQ3LightData {
  70. TQ3Boolean isOn;
  71. float brightness;
  72. TQ3ColorRGB color;
  73. };
  74. typedef struct TQ3LightData TQ3LightData;
  75. struct TQ3DirectionalLightData {
  76. TQ3LightData lightData;
  77. TQ3Boolean castsShadows;
  78. TQ3Vector3D direction;
  79. };
  80. typedef struct TQ3DirectionalLightData TQ3DirectionalLightData;
  81. struct TQ3PointLightData {
  82. TQ3LightData lightData;
  83. TQ3Boolean castsShadows;
  84. TQ3AttenuationType attenuation;
  85. TQ3Point3D location;
  86. };
  87. typedef struct TQ3PointLightData TQ3PointLightData;
  88. struct TQ3SpotLightData {
  89. TQ3LightData lightData;
  90. TQ3Boolean castsShadows;
  91. TQ3AttenuationType attenuation;
  92. TQ3Point3D location;
  93. TQ3Vector3D direction;
  94. float hotAngle;
  95. float outerAngle;
  96. TQ3FallOffType fallOff;
  97. };
  98. typedef struct TQ3SpotLightData TQ3SpotLightData;
  99. /******************************************************************************
  100. ** **
  101. ** Light routines (apply to all TQ3LightObjects) **
  102. ** **
  103. *****************************************************************************/
  104. #if CALL_NOT_IN_CARBON
  105. /*
  106. * Q3Light_GetType()
  107. *
  108. * Availability:
  109. * Non-Carbon CFM: not available
  110. * CarbonLib: not available
  111. * Mac OS X: not available
  112. */
  113. EXTERN_API_C( TQ3ObjectType )
  114. Q3Light_GetType(TQ3LightObject light);
  115. /*
  116. * Q3Light_GetState()
  117. *
  118. * Availability:
  119. * Non-Carbon CFM: not available
  120. * CarbonLib: not available
  121. * Mac OS X: not available
  122. */
  123. EXTERN_API_C( TQ3Status )
  124. Q3Light_GetState(
  125. TQ3LightObject light,
  126. TQ3Boolean * isOn);
  127. /*
  128. * Q3Light_GetBrightness()
  129. *
  130. * Availability:
  131. * Non-Carbon CFM: not available
  132. * CarbonLib: not available
  133. * Mac OS X: not available
  134. */
  135. EXTERN_API_C( TQ3Status )
  136. Q3Light_GetBrightness(
  137. TQ3LightObject light,
  138. float * brightness);
  139. /*
  140. * Q3Light_GetColor()
  141. *
  142. * Availability:
  143. * Non-Carbon CFM: not available
  144. * CarbonLib: not available
  145. * Mac OS X: not available
  146. */
  147. EXTERN_API_C( TQ3Status )
  148. Q3Light_GetColor(
  149. TQ3LightObject light,
  150. TQ3ColorRGB * color);
  151. /*
  152. * Q3Light_SetState()
  153. *
  154. * Availability:
  155. * Non-Carbon CFM: not available
  156. * CarbonLib: not available
  157. * Mac OS X: not available
  158. */
  159. EXTERN_API_C( TQ3Status )
  160. Q3Light_SetState(
  161. TQ3LightObject light,
  162. TQ3Boolean isOn);
  163. /*
  164. * Q3Light_SetBrightness()
  165. *
  166. * Availability:
  167. * Non-Carbon CFM: not available
  168. * CarbonLib: not available
  169. * Mac OS X: not available
  170. */
  171. EXTERN_API_C( TQ3Status )
  172. Q3Light_SetBrightness(
  173. TQ3LightObject light,
  174. float brightness);
  175. /*
  176. * Q3Light_SetColor()
  177. *
  178. * Availability:
  179. * Non-Carbon CFM: not available
  180. * CarbonLib: not available
  181. * Mac OS X: not available
  182. */
  183. EXTERN_API_C( TQ3Status )
  184. Q3Light_SetColor(
  185. TQ3LightObject light,
  186. const TQ3ColorRGB * color);
  187. /*
  188. * Q3Light_GetData()
  189. *
  190. * Availability:
  191. * Non-Carbon CFM: not available
  192. * CarbonLib: not available
  193. * Mac OS X: not available
  194. */
  195. EXTERN_API_C( TQ3Status )
  196. Q3Light_GetData(
  197. TQ3LightObject light,
  198. TQ3LightData * lightData);
  199. /*
  200. * Q3Light_SetData()
  201. *
  202. * Availability:
  203. * Non-Carbon CFM: not available
  204. * CarbonLib: not available
  205. * Mac OS X: not available
  206. */
  207. EXTERN_API_C( TQ3Status )
  208. Q3Light_SetData(
  209. TQ3LightObject light,
  210. const TQ3LightData * lightData);
  211. /******************************************************************************
  212. ** **
  213. ** Specific Light Routines **
  214. ** **
  215. *****************************************************************************/
  216. /******************************************************************************
  217. ** **
  218. ** Ambient Light **
  219. ** **
  220. *****************************************************************************/
  221. /*
  222. * Q3AmbientLight_New()
  223. *
  224. * Availability:
  225. * Non-Carbon CFM: not available
  226. * CarbonLib: not available
  227. * Mac OS X: not available
  228. */
  229. EXTERN_API_C( TQ3LightObject )
  230. Q3AmbientLight_New(const TQ3LightData * lightData);
  231. /*
  232. * Q3AmbientLight_GetData()
  233. *
  234. * Availability:
  235. * Non-Carbon CFM: not available
  236. * CarbonLib: not available
  237. * Mac OS X: not available
  238. */
  239. EXTERN_API_C( TQ3Status )
  240. Q3AmbientLight_GetData(
  241. TQ3LightObject light,
  242. TQ3LightData * lightData);
  243. /*
  244. * Q3AmbientLight_SetData()
  245. *
  246. * Availability:
  247. * Non-Carbon CFM: not available
  248. * CarbonLib: not available
  249. * Mac OS X: not available
  250. */
  251. EXTERN_API_C( TQ3Status )
  252. Q3AmbientLight_SetData(
  253. TQ3LightObject light,
  254. const TQ3LightData * lightData);
  255. /******************************************************************************
  256. ** **
  257. ** Directional Light **
  258. ** **
  259. *****************************************************************************/
  260. /*
  261. * Q3DirectionalLight_New()
  262. *
  263. * Availability:
  264. * Non-Carbon CFM: not available
  265. * CarbonLib: not available
  266. * Mac OS X: not available
  267. */
  268. EXTERN_API_C( TQ3LightObject )
  269. Q3DirectionalLight_New(const TQ3DirectionalLightData * directionalLightData);
  270. /*
  271. * Q3DirectionalLight_GetCastShadowsState()
  272. *
  273. * Availability:
  274. * Non-Carbon CFM: not available
  275. * CarbonLib: not available
  276. * Mac OS X: not available
  277. */
  278. EXTERN_API_C( TQ3Status )
  279. Q3DirectionalLight_GetCastShadowsState(
  280. TQ3LightObject light,
  281. TQ3Boolean * castsShadows);
  282. /*
  283. * Q3DirectionalLight_GetDirection()
  284. *
  285. * Availability:
  286. * Non-Carbon CFM: not available
  287. * CarbonLib: not available
  288. * Mac OS X: not available
  289. */
  290. EXTERN_API_C( TQ3Status )
  291. Q3DirectionalLight_GetDirection(
  292. TQ3LightObject light,
  293. TQ3Vector3D * direction);
  294. /*
  295. * Q3DirectionalLight_SetCastShadowsState()
  296. *
  297. * Availability:
  298. * Non-Carbon CFM: not available
  299. * CarbonLib: not available
  300. * Mac OS X: not available
  301. */
  302. EXTERN_API_C( TQ3Status )
  303. Q3DirectionalLight_SetCastShadowsState(
  304. TQ3LightObject light,
  305. TQ3Boolean castsShadows);
  306. /*
  307. * Q3DirectionalLight_SetDirection()
  308. *
  309. * Availability:
  310. * Non-Carbon CFM: not available
  311. * CarbonLib: not available
  312. * Mac OS X: not available
  313. */
  314. EXTERN_API_C( TQ3Status )
  315. Q3DirectionalLight_SetDirection(
  316. TQ3LightObject light,
  317. const TQ3Vector3D * direction);
  318. /*
  319. * Q3DirectionalLight_GetData()
  320. *
  321. * Availability:
  322. * Non-Carbon CFM: not available
  323. * CarbonLib: not available
  324. * Mac OS X: not available
  325. */
  326. EXTERN_API_C( TQ3Status )
  327. Q3DirectionalLight_GetData(
  328. TQ3LightObject light,
  329. TQ3DirectionalLightData * directionalLightData);
  330. /*
  331. * Q3DirectionalLight_SetData()
  332. *
  333. * Availability:
  334. * Non-Carbon CFM: not available
  335. * CarbonLib: not available
  336. * Mac OS X: not available
  337. */
  338. EXTERN_API_C( TQ3Status )
  339. Q3DirectionalLight_SetData(
  340. TQ3LightObject light,
  341. const TQ3DirectionalLightData * directionalLightData);
  342. /******************************************************************************
  343. ** **
  344. ** Point Light **
  345. ** **
  346. *****************************************************************************/
  347. /*
  348. * Q3PointLight_New()
  349. *
  350. * Availability:
  351. * Non-Carbon CFM: not available
  352. * CarbonLib: not available
  353. * Mac OS X: not available
  354. */
  355. EXTERN_API_C( TQ3LightObject )
  356. Q3PointLight_New(const TQ3PointLightData * pointLightData);
  357. /*
  358. * Q3PointLight_GetCastShadowsState()
  359. *
  360. * Availability:
  361. * Non-Carbon CFM: not available
  362. * CarbonLib: not available
  363. * Mac OS X: not available
  364. */
  365. EXTERN_API_C( TQ3Status )
  366. Q3PointLight_GetCastShadowsState(
  367. TQ3LightObject light,
  368. TQ3Boolean * castsShadows);
  369. /*
  370. * Q3PointLight_GetAttenuation()
  371. *
  372. * Availability:
  373. * Non-Carbon CFM: not available
  374. * CarbonLib: not available
  375. * Mac OS X: not available
  376. */
  377. EXTERN_API_C( TQ3Status )
  378. Q3PointLight_GetAttenuation(
  379. TQ3LightObject light,
  380. TQ3AttenuationType * attenuation);
  381. /*
  382. * Q3PointLight_GetLocation()
  383. *
  384. * Availability:
  385. * Non-Carbon CFM: not available
  386. * CarbonLib: not available
  387. * Mac OS X: not available
  388. */
  389. EXTERN_API_C( TQ3Status )
  390. Q3PointLight_GetLocation(
  391. TQ3LightObject light,
  392. TQ3Point3D * location);
  393. /*
  394. * Q3PointLight_GetData()
  395. *
  396. * Availability:
  397. * Non-Carbon CFM: not available
  398. * CarbonLib: not available
  399. * Mac OS X: not available
  400. */
  401. EXTERN_API_C( TQ3Status )
  402. Q3PointLight_GetData(
  403. TQ3LightObject light,
  404. TQ3PointLightData * pointLightData);
  405. /*
  406. * Q3PointLight_SetCastShadowsState()
  407. *
  408. * Availability:
  409. * Non-Carbon CFM: not available
  410. * CarbonLib: not available
  411. * Mac OS X: not available
  412. */
  413. EXTERN_API_C( TQ3Status )
  414. Q3PointLight_SetCastShadowsState(
  415. TQ3LightObject light,
  416. TQ3Boolean castsShadows);
  417. /*
  418. * Q3PointLight_SetAttenuation()
  419. *
  420. * Availability:
  421. * Non-Carbon CFM: not available
  422. * CarbonLib: not available
  423. * Mac OS X: not available
  424. */
  425. EXTERN_API_C( TQ3Status )
  426. Q3PointLight_SetAttenuation(
  427. TQ3LightObject light,
  428. TQ3AttenuationType attenuation);
  429. /*
  430. * Q3PointLight_SetLocation()
  431. *
  432. * Availability:
  433. * Non-Carbon CFM: not available
  434. * CarbonLib: not available
  435. * Mac OS X: not available
  436. */
  437. EXTERN_API_C( TQ3Status )
  438. Q3PointLight_SetLocation(
  439. TQ3LightObject light,
  440. const TQ3Point3D * location);
  441. /*
  442. * Q3PointLight_SetData()
  443. *
  444. * Availability:
  445. * Non-Carbon CFM: not available
  446. * CarbonLib: not available
  447. * Mac OS X: not available
  448. */
  449. EXTERN_API_C( TQ3Status )
  450. Q3PointLight_SetData(
  451. TQ3LightObject light,
  452. const TQ3PointLightData * pointLightData);
  453. /******************************************************************************
  454. ** **
  455. ** Spot Light **
  456. ** **
  457. *****************************************************************************/
  458. /*
  459. * Q3SpotLight_New()
  460. *
  461. * Availability:
  462. * Non-Carbon CFM: not available
  463. * CarbonLib: not available
  464. * Mac OS X: not available
  465. */
  466. EXTERN_API_C( TQ3LightObject )
  467. Q3SpotLight_New(const TQ3SpotLightData * spotLightData);
  468. /*
  469. * Q3SpotLight_GetCastShadowsState()
  470. *
  471. * Availability:
  472. * Non-Carbon CFM: not available
  473. * CarbonLib: not available
  474. * Mac OS X: not available
  475. */
  476. EXTERN_API_C( TQ3Status )
  477. Q3SpotLight_GetCastShadowsState(
  478. TQ3LightObject light,
  479. TQ3Boolean * castsShadows);
  480. /*
  481. * Q3SpotLight_GetAttenuation()
  482. *
  483. * Availability:
  484. * Non-Carbon CFM: not available
  485. * CarbonLib: not available
  486. * Mac OS X: not available
  487. */
  488. EXTERN_API_C( TQ3Status )
  489. Q3SpotLight_GetAttenuation(
  490. TQ3LightObject light,
  491. TQ3AttenuationType * attenuation);
  492. /*
  493. * Q3SpotLight_GetLocation()
  494. *
  495. * Availability:
  496. * Non-Carbon CFM: not available
  497. * CarbonLib: not available
  498. * Mac OS X: not available
  499. */
  500. EXTERN_API_C( TQ3Status )
  501. Q3SpotLight_GetLocation(
  502. TQ3LightObject light,
  503. TQ3Point3D * location);
  504. /*
  505. * Q3SpotLight_GetDirection()
  506. *
  507. * Availability:
  508. * Non-Carbon CFM: not available
  509. * CarbonLib: not available
  510. * Mac OS X: not available
  511. */
  512. EXTERN_API_C( TQ3Status )
  513. Q3SpotLight_GetDirection(
  514. TQ3LightObject light,
  515. TQ3Vector3D * direction);
  516. /*
  517. * Q3SpotLight_GetHotAngle()
  518. *
  519. * Availability:
  520. * Non-Carbon CFM: not available
  521. * CarbonLib: not available
  522. * Mac OS X: not available
  523. */
  524. EXTERN_API_C( TQ3Status )
  525. Q3SpotLight_GetHotAngle(
  526. TQ3LightObject light,
  527. float * hotAngle);
  528. /*
  529. * Q3SpotLight_GetOuterAngle()
  530. *
  531. * Availability:
  532. * Non-Carbon CFM: not available
  533. * CarbonLib: not available
  534. * Mac OS X: not available
  535. */
  536. EXTERN_API_C( TQ3Status )
  537. Q3SpotLight_GetOuterAngle(
  538. TQ3LightObject light,
  539. float * outerAngle);
  540. /*
  541. * Q3SpotLight_GetFallOff()
  542. *
  543. * Availability:
  544. * Non-Carbon CFM: not available
  545. * CarbonLib: not available
  546. * Mac OS X: not available
  547. */
  548. EXTERN_API_C( TQ3Status )
  549. Q3SpotLight_GetFallOff(
  550. TQ3LightObject light,
  551. TQ3FallOffType * fallOff);
  552. /*
  553. * Q3SpotLight_GetData()
  554. *
  555. * Availability:
  556. * Non-Carbon CFM: not available
  557. * CarbonLib: not available
  558. * Mac OS X: not available
  559. */
  560. EXTERN_API_C( TQ3Status )
  561. Q3SpotLight_GetData(
  562. TQ3LightObject light,
  563. TQ3SpotLightData * spotLightData);
  564. /*
  565. * Q3SpotLight_SetCastShadowsState()
  566. *
  567. * Availability:
  568. * Non-Carbon CFM: not available
  569. * CarbonLib: not available
  570. * Mac OS X: not available
  571. */
  572. EXTERN_API_C( TQ3Status )
  573. Q3SpotLight_SetCastShadowsState(
  574. TQ3LightObject light,
  575. TQ3Boolean castsShadows);
  576. /*
  577. * Q3SpotLight_SetAttenuation()
  578. *
  579. * Availability:
  580. * Non-Carbon CFM: not available
  581. * CarbonLib: not available
  582. * Mac OS X: not available
  583. */
  584. EXTERN_API_C( TQ3Status )
  585. Q3SpotLight_SetAttenuation(
  586. TQ3LightObject light,
  587. TQ3AttenuationType attenuation);
  588. /*
  589. * Q3SpotLight_SetLocation()
  590. *
  591. * Availability:
  592. * Non-Carbon CFM: not available
  593. * CarbonLib: not available
  594. * Mac OS X: not available
  595. */
  596. EXTERN_API_C( TQ3Status )
  597. Q3SpotLight_SetLocation(
  598. TQ3LightObject light,
  599. const TQ3Point3D * location);
  600. /*
  601. * Q3SpotLight_SetDirection()
  602. *
  603. * Availability:
  604. * Non-Carbon CFM: not available
  605. * CarbonLib: not available
  606. * Mac OS X: not available
  607. */
  608. EXTERN_API_C( TQ3Status )
  609. Q3SpotLight_SetDirection(
  610. TQ3LightObject light,
  611. const TQ3Vector3D * direction);
  612. /*
  613. * Q3SpotLight_SetHotAngle()
  614. *
  615. * Availability:
  616. * Non-Carbon CFM: not available
  617. * CarbonLib: not available
  618. * Mac OS X: not available
  619. */
  620. EXTERN_API_C( TQ3Status )
  621. Q3SpotLight_SetHotAngle(
  622. TQ3LightObject light,
  623. float hotAngle);
  624. /*
  625. * Q3SpotLight_SetOuterAngle()
  626. *
  627. * Availability:
  628. * Non-Carbon CFM: not available
  629. * CarbonLib: not available
  630. * Mac OS X: not available
  631. */
  632. EXTERN_API_C( TQ3Status )
  633. Q3SpotLight_SetOuterAngle(
  634. TQ3LightObject light,
  635. float outerAngle);
  636. /*
  637. * Q3SpotLight_SetFallOff()
  638. *
  639. * Availability:
  640. * Non-Carbon CFM: not available
  641. * CarbonLib: not available
  642. * Mac OS X: not available
  643. */
  644. EXTERN_API_C( TQ3Status )
  645. Q3SpotLight_SetFallOff(
  646. TQ3LightObject light,
  647. TQ3FallOffType fallOff);
  648. /*
  649. * Q3SpotLight_SetData()
  650. *
  651. * Availability:
  652. * Non-Carbon CFM: not available
  653. * CarbonLib: not available
  654. * Mac OS X: not available
  655. */
  656. EXTERN_API_C( TQ3Status )
  657. Q3SpotLight_SetData(
  658. TQ3LightObject light,
  659. const TQ3SpotLightData * spotLightData);
  660. #endif /* CALL_NOT_IN_CARBON */
  661. #if PRAGMA_ENUM_ALWAYSINT
  662. #pragma enumsalwaysint reset
  663. #ifdef __QD3DLIGHT__RESTORE_TWOBYTEINTS
  664. #pragma fourbyteints off
  665. #endif
  666. #elif PRAGMA_ENUM_OPTIONS
  667. #pragma option enum=reset
  668. #elif defined(__QD3DLIGHT__RESTORE_PACKED_ENUMS)
  669. #pragma options(pack_enums)
  670. #endif
  671. #if PRAGMA_STRUCT_ALIGN
  672. #pragma options align=reset
  673. #elif PRAGMA_STRUCT_PACKPUSH
  674. #pragma pack(pop)
  675. #elif PRAGMA_STRUCT_PACK
  676. #pragma pack()
  677. #endif
  678. #ifdef PRAGMA_IMPORT_OFF
  679. #pragma import off
  680. #elif PRAGMA_IMPORT
  681. #pragma import reset
  682. #endif
  683. #ifdef __cplusplus
  684. }
  685. #endif
  686. #endif /* __QD3DLIGHT__ */