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.

1048 lines
26 KiB

  1. /*
  2. File: QD3DDrawContext.h
  3. Contains: Draw context class types and 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 __QD3DDRAWCONTEXT__
  12. #define __QD3DDRAWCONTEXT__
  13. #ifndef __QD3D__
  14. #include <QD3D.h>
  15. #endif
  16. #if TARGET_OS_MAC
  17. #ifndef __QUICKDRAW__
  18. #include <Quickdraw.h>
  19. #endif
  20. #ifndef __FIXMATH__
  21. #include <FixMath.h>
  22. #endif
  23. #ifndef __GXTYPES__
  24. #include <GXTypes.h>
  25. #endif
  26. #endif /* TARGET_OS_MAC */
  27. #if TARGET_OS_UNIX
  28. #include <X11/Xlib.h>
  29. #include <X11/Xutil.h>
  30. #endif /* TARGET_OS_WIN32 */
  31. #if TARGET_OS_WIN32
  32. /******************************************************************************
  33. * **
  34. * ABOUT QD3D_NO_DIRECTDRAW: (Win32 Only) **
  35. * **
  36. * NOTE: Define QD3D_NO_DIRECTDRAW for your application makefile/project **
  37. * only if you don't need Q3DDSurfaceDrawContext support and don't **
  38. * have access to ddraw.h. **
  39. * **
  40. *****************************************************************************/
  41. #include <windows.h>
  42. #if !defined(QD3D_NO_DIRECTDRAW)
  43. #include <ddraw.h>
  44. #endif /* !QD3D_NO_DIRECTDRAW */
  45. #endif /* TARGET_OS_WIN32 */
  46. #if PRAGMA_ONCE
  47. #pragma once
  48. #endif
  49. #ifdef __cplusplus
  50. extern "C" {
  51. #endif
  52. #if PRAGMA_IMPORT
  53. #pragma import on
  54. #endif
  55. #if PRAGMA_STRUCT_ALIGN
  56. #pragma options align=power
  57. #elif PRAGMA_STRUCT_PACKPUSH
  58. #pragma pack(push, 2)
  59. #elif PRAGMA_STRUCT_PACK
  60. #pragma pack(2)
  61. #endif
  62. #if PRAGMA_ENUM_ALWAYSINT
  63. #if defined(__fourbyteints__) && !__fourbyteints__
  64. #define __QD3DDRAWCONTEXT__RESTORE_TWOBYTEINTS
  65. #pragma fourbyteints on
  66. #endif
  67. #pragma enumsalwaysint on
  68. #elif PRAGMA_ENUM_OPTIONS
  69. #pragma option enum=int
  70. #elif PRAGMA_ENUM_PACK
  71. #if __option(pack_enums)
  72. #define __QD3DDRAWCONTEXT__RESTORE_PACKED_ENUMS
  73. #pragma options(!pack_enums)
  74. #endif
  75. #endif
  76. /******************************************************************************
  77. ** **
  78. ** DrawContext Data Structures **
  79. ** **
  80. *****************************************************************************/
  81. enum TQ3DrawContextClearImageMethod {
  82. kQ3ClearMethodNone = 0,
  83. kQ3ClearMethodWithColor = 1
  84. };
  85. typedef enum TQ3DrawContextClearImageMethod TQ3DrawContextClearImageMethod;
  86. struct TQ3DrawContextData {
  87. TQ3DrawContextClearImageMethod clearImageMethod;
  88. TQ3ColorARGB clearImageColor;
  89. TQ3Area pane;
  90. TQ3Boolean paneState;
  91. TQ3Bitmap mask;
  92. TQ3Boolean maskState;
  93. TQ3Boolean doubleBufferState;
  94. };
  95. typedef struct TQ3DrawContextData TQ3DrawContextData;
  96. /******************************************************************************
  97. ** **
  98. ** DrawContext Routines **
  99. ** **
  100. *****************************************************************************/
  101. #if CALL_NOT_IN_CARBON
  102. /*
  103. * Q3DrawContext_GetType()
  104. *
  105. * Availability:
  106. * Non-Carbon CFM: not available
  107. * CarbonLib: not available
  108. * Mac OS X: not available
  109. */
  110. EXTERN_API_C( TQ3ObjectType )
  111. Q3DrawContext_GetType(TQ3DrawContextObject drawContext);
  112. /*
  113. * Q3DrawContext_SetData()
  114. *
  115. * Availability:
  116. * Non-Carbon CFM: not available
  117. * CarbonLib: not available
  118. * Mac OS X: not available
  119. */
  120. EXTERN_API_C( TQ3Status )
  121. Q3DrawContext_SetData(
  122. TQ3DrawContextObject context,
  123. const TQ3DrawContextData * contextData);
  124. /*
  125. * Q3DrawContext_GetData()
  126. *
  127. * Availability:
  128. * Non-Carbon CFM: not available
  129. * CarbonLib: not available
  130. * Mac OS X: not available
  131. */
  132. EXTERN_API_C( TQ3Status )
  133. Q3DrawContext_GetData(
  134. TQ3DrawContextObject context,
  135. TQ3DrawContextData * contextData);
  136. /*
  137. * Q3DrawContext_SetClearImageColor()
  138. *
  139. * Availability:
  140. * Non-Carbon CFM: not available
  141. * CarbonLib: not available
  142. * Mac OS X: not available
  143. */
  144. EXTERN_API_C( TQ3Status )
  145. Q3DrawContext_SetClearImageColor(
  146. TQ3DrawContextObject context,
  147. const TQ3ColorARGB * color);
  148. /*
  149. * Q3DrawContext_GetClearImageColor()
  150. *
  151. * Availability:
  152. * Non-Carbon CFM: not available
  153. * CarbonLib: not available
  154. * Mac OS X: not available
  155. */
  156. EXTERN_API_C( TQ3Status )
  157. Q3DrawContext_GetClearImageColor(
  158. TQ3DrawContextObject context,
  159. TQ3ColorARGB * color);
  160. /*
  161. * Q3DrawContext_SetPane()
  162. *
  163. * Availability:
  164. * Non-Carbon CFM: not available
  165. * CarbonLib: not available
  166. * Mac OS X: not available
  167. */
  168. EXTERN_API_C( TQ3Status )
  169. Q3DrawContext_SetPane(
  170. TQ3DrawContextObject context,
  171. const TQ3Area * pane);
  172. /*
  173. * Q3DrawContext_GetPane()
  174. *
  175. * Availability:
  176. * Non-Carbon CFM: not available
  177. * CarbonLib: not available
  178. * Mac OS X: not available
  179. */
  180. EXTERN_API_C( TQ3Status )
  181. Q3DrawContext_GetPane(
  182. TQ3DrawContextObject context,
  183. TQ3Area * pane);
  184. /*
  185. * Q3DrawContext_SetPaneState()
  186. *
  187. * Availability:
  188. * Non-Carbon CFM: not available
  189. * CarbonLib: not available
  190. * Mac OS X: not available
  191. */
  192. EXTERN_API_C( TQ3Status )
  193. Q3DrawContext_SetPaneState(
  194. TQ3DrawContextObject context,
  195. TQ3Boolean state);
  196. /*
  197. * Q3DrawContext_GetPaneState()
  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. Q3DrawContext_GetPaneState(
  206. TQ3DrawContextObject context,
  207. TQ3Boolean * state);
  208. /*
  209. * Q3DrawContext_SetClearImageMethod()
  210. *
  211. * Availability:
  212. * Non-Carbon CFM: not available
  213. * CarbonLib: not available
  214. * Mac OS X: not available
  215. */
  216. EXTERN_API_C( TQ3Status )
  217. Q3DrawContext_SetClearImageMethod(
  218. TQ3DrawContextObject context,
  219. TQ3DrawContextClearImageMethod method);
  220. /*
  221. * Q3DrawContext_GetClearImageMethod()
  222. *
  223. * Availability:
  224. * Non-Carbon CFM: not available
  225. * CarbonLib: not available
  226. * Mac OS X: not available
  227. */
  228. EXTERN_API_C( TQ3Status )
  229. Q3DrawContext_GetClearImageMethod(
  230. TQ3DrawContextObject context,
  231. TQ3DrawContextClearImageMethod * method);
  232. /*
  233. * Q3DrawContext_SetMask()
  234. *
  235. * Availability:
  236. * Non-Carbon CFM: not available
  237. * CarbonLib: not available
  238. * Mac OS X: not available
  239. */
  240. EXTERN_API_C( TQ3Status )
  241. Q3DrawContext_SetMask(
  242. TQ3DrawContextObject context,
  243. const TQ3Bitmap * mask);
  244. /*
  245. * Q3DrawContext_GetMask()
  246. *
  247. * Availability:
  248. * Non-Carbon CFM: not available
  249. * CarbonLib: not available
  250. * Mac OS X: not available
  251. */
  252. EXTERN_API_C( TQ3Status )
  253. Q3DrawContext_GetMask(
  254. TQ3DrawContextObject context,
  255. TQ3Bitmap * mask);
  256. /*
  257. * Q3DrawContext_SetMaskState()
  258. *
  259. * Availability:
  260. * Non-Carbon CFM: not available
  261. * CarbonLib: not available
  262. * Mac OS X: not available
  263. */
  264. EXTERN_API_C( TQ3Status )
  265. Q3DrawContext_SetMaskState(
  266. TQ3DrawContextObject context,
  267. TQ3Boolean state);
  268. /*
  269. * Q3DrawContext_GetMaskState()
  270. *
  271. * Availability:
  272. * Non-Carbon CFM: not available
  273. * CarbonLib: not available
  274. * Mac OS X: not available
  275. */
  276. EXTERN_API_C( TQ3Status )
  277. Q3DrawContext_GetMaskState(
  278. TQ3DrawContextObject context,
  279. TQ3Boolean * state);
  280. /*
  281. * Q3DrawContext_SetDoubleBufferState()
  282. *
  283. * Availability:
  284. * Non-Carbon CFM: not available
  285. * CarbonLib: not available
  286. * Mac OS X: not available
  287. */
  288. EXTERN_API_C( TQ3Status )
  289. Q3DrawContext_SetDoubleBufferState(
  290. TQ3DrawContextObject context,
  291. TQ3Boolean state);
  292. /*
  293. * Q3DrawContext_GetDoubleBufferState()
  294. *
  295. * Availability:
  296. * Non-Carbon CFM: not available
  297. * CarbonLib: not available
  298. * Mac OS X: not available
  299. */
  300. EXTERN_API_C( TQ3Status )
  301. Q3DrawContext_GetDoubleBufferState(
  302. TQ3DrawContextObject context,
  303. TQ3Boolean * state);
  304. /******************************************************************************
  305. ** **
  306. ** Pixmap Data Structure **
  307. ** **
  308. *****************************************************************************/
  309. #endif /* CALL_NOT_IN_CARBON */
  310. struct TQ3PixmapDrawContextData {
  311. TQ3DrawContextData drawContextData;
  312. TQ3Pixmap pixmap;
  313. };
  314. typedef struct TQ3PixmapDrawContextData TQ3PixmapDrawContextData;
  315. /******************************************************************************
  316. ** **
  317. ** Pixmap DrawContext Routines **
  318. ** **
  319. *****************************************************************************/
  320. #if CALL_NOT_IN_CARBON
  321. /*
  322. * Q3PixmapDrawContext_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( TQ3DrawContextObject )
  330. Q3PixmapDrawContext_New(const TQ3PixmapDrawContextData * contextData);
  331. /*
  332. * Q3PixmapDrawContext_SetPixmap()
  333. *
  334. * Availability:
  335. * Non-Carbon CFM: not available
  336. * CarbonLib: not available
  337. * Mac OS X: not available
  338. */
  339. EXTERN_API_C( TQ3Status )
  340. Q3PixmapDrawContext_SetPixmap(
  341. TQ3DrawContextObject drawContext,
  342. const TQ3Pixmap * pixmap);
  343. /*
  344. * Q3PixmapDrawContext_GetPixmap()
  345. *
  346. * Availability:
  347. * Non-Carbon CFM: not available
  348. * CarbonLib: not available
  349. * Mac OS X: not available
  350. */
  351. EXTERN_API_C( TQ3Status )
  352. Q3PixmapDrawContext_GetPixmap(
  353. TQ3DrawContextObject drawContext,
  354. TQ3Pixmap * pixmap);
  355. #endif /* CALL_NOT_IN_CARBON */
  356. #if TARGET_OS_MAC
  357. /******************************************************************************
  358. ** **
  359. ** Macintosh DrawContext Data Structures **
  360. ** **
  361. *****************************************************************************/
  362. enum TQ3MacDrawContext2DLibrary {
  363. kQ3Mac2DLibraryNone = 0,
  364. kQ3Mac2DLibraryQuickDraw = 1,
  365. kQ3Mac2DLibraryQuickDrawGX = 2
  366. };
  367. typedef enum TQ3MacDrawContext2DLibrary TQ3MacDrawContext2DLibrary;
  368. struct TQ3MacDrawContextData {
  369. TQ3DrawContextData drawContextData;
  370. CWindowPtr window;
  371. TQ3MacDrawContext2DLibrary library;
  372. gxViewPort viewPort;
  373. CGrafPtr grafPort;
  374. };
  375. typedef struct TQ3MacDrawContextData TQ3MacDrawContextData;
  376. /******************************************************************************
  377. ** **
  378. ** Macintosh DrawContext Routines **
  379. ** **
  380. *****************************************************************************/
  381. #if CALL_NOT_IN_CARBON
  382. /*
  383. * Q3MacDrawContext_New()
  384. *
  385. * Availability:
  386. * Non-Carbon CFM: not available
  387. * CarbonLib: not available
  388. * Mac OS X: not available
  389. */
  390. EXTERN_API_C( TQ3DrawContextObject )
  391. Q3MacDrawContext_New(const TQ3MacDrawContextData * drawContextData);
  392. /*
  393. * Q3MacDrawContext_SetWindow()
  394. *
  395. * Availability:
  396. * Non-Carbon CFM: not available
  397. * CarbonLib: not available
  398. * Mac OS X: not available
  399. */
  400. EXTERN_API_C( TQ3Status )
  401. Q3MacDrawContext_SetWindow(
  402. TQ3DrawContextObject drawContext,
  403. CWindowPtr window);
  404. /*
  405. * Q3MacDrawContext_GetWindow()
  406. *
  407. * Availability:
  408. * Non-Carbon CFM: not available
  409. * CarbonLib: not available
  410. * Mac OS X: not available
  411. */
  412. EXTERN_API_C( TQ3Status )
  413. Q3MacDrawContext_GetWindow(
  414. TQ3DrawContextObject drawContext,
  415. CWindowPtr * window);
  416. /*
  417. * Q3MacDrawContext_SetGXViewPort()
  418. *
  419. * Availability:
  420. * Non-Carbon CFM: not available
  421. * CarbonLib: not available
  422. * Mac OS X: not available
  423. */
  424. EXTERN_API_C( TQ3Status )
  425. Q3MacDrawContext_SetGXViewPort(
  426. TQ3DrawContextObject drawContext,
  427. gxViewPort viewPort);
  428. /*
  429. * Q3MacDrawContext_GetGXViewPort()
  430. *
  431. * Availability:
  432. * Non-Carbon CFM: not available
  433. * CarbonLib: not available
  434. * Mac OS X: not available
  435. */
  436. EXTERN_API_C( TQ3Status )
  437. Q3MacDrawContext_GetGXViewPort(
  438. TQ3DrawContextObject drawContext,
  439. gxViewPort * viewPort);
  440. /*
  441. * Q3MacDrawContext_SetGrafPort()
  442. *
  443. * Availability:
  444. * Non-Carbon CFM: not available
  445. * CarbonLib: not available
  446. * Mac OS X: not available
  447. */
  448. EXTERN_API_C( TQ3Status )
  449. Q3MacDrawContext_SetGrafPort(
  450. TQ3DrawContextObject drawContext,
  451. CGrafPtr grafPort);
  452. /*
  453. * Q3MacDrawContext_GetGrafPort()
  454. *
  455. * Availability:
  456. * Non-Carbon CFM: not available
  457. * CarbonLib: not available
  458. * Mac OS X: not available
  459. */
  460. EXTERN_API_C( TQ3Status )
  461. Q3MacDrawContext_GetGrafPort(
  462. TQ3DrawContextObject drawContext,
  463. CGrafPtr * grafPort);
  464. /*
  465. * Q3MacDrawContext_Set2DLibrary()
  466. *
  467. * Availability:
  468. * Non-Carbon CFM: not available
  469. * CarbonLib: not available
  470. * Mac OS X: not available
  471. */
  472. EXTERN_API_C( TQ3Status )
  473. Q3MacDrawContext_Set2DLibrary(
  474. TQ3DrawContextObject drawContext,
  475. TQ3MacDrawContext2DLibrary library);
  476. /*
  477. * Q3MacDrawContext_Get2DLibrary()
  478. *
  479. * Availability:
  480. * Non-Carbon CFM: not available
  481. * CarbonLib: not available
  482. * Mac OS X: not available
  483. */
  484. EXTERN_API_C( TQ3Status )
  485. Q3MacDrawContext_Get2DLibrary(
  486. TQ3DrawContextObject drawContext,
  487. TQ3MacDrawContext2DLibrary * library);
  488. #endif /* CALL_NOT_IN_CARBON */
  489. #endif /* TARGET_OS_MAC */
  490. #if TARGET_OS_UNIX
  491. /******************************************************************************
  492. ** **
  493. ** X/Windows DrawContext Data Structures **
  494. ** **
  495. *****************************************************************************/
  496. typedef struct OpaqueTQ3XBufferObject* TQ3XBufferObject;
  497. struct TQ3XColormapData {
  498. long baseEntry;
  499. long maxRed;
  500. long maxGreen;
  501. long maxBlue;
  502. long multRed;
  503. long multGreen;
  504. long multBlue;
  505. };
  506. typedef struct TQ3XColormapData TQ3XColormapData;
  507. struct TQ3XDrawContextData {
  508. TQ3DrawContextData contextData;
  509. Display * display;
  510. Drawable drawable;
  511. Visual * visual;
  512. Colormap cmap;
  513. TQ3XColormapData * colorMapData;
  514. };
  515. typedef struct TQ3XDrawContextData TQ3XDrawContextData;
  516. /******************************************************************************
  517. ** **
  518. ** X/Windows DrawContext Routines **
  519. ** **
  520. *****************************************************************************/
  521. #ifdef XDC_OLD
  522. #if CALL_NOT_IN_CARBON
  523. /*
  524. * Q3XDrawContext_New()
  525. *
  526. * Availability:
  527. * Non-Carbon CFM: not available
  528. * CarbonLib: not available
  529. * Mac OS X: not available
  530. */
  531. EXTERN_API_C( TQ3DrawContextObject )
  532. Q3XDrawContext_New(void);
  533. /*
  534. * Q3XDrawContext_Set()
  535. *
  536. * Availability:
  537. * Non-Carbon CFM: not available
  538. * CarbonLib: not available
  539. * Mac OS X: not available
  540. */
  541. EXTERN_API_C( void )
  542. Q3XDrawContext_Set(
  543. TQ3DrawContextObject drawContext,
  544. unsigned long flag,
  545. void * data);
  546. /*
  547. * Q3XDrawContext_Get()
  548. *
  549. * Availability:
  550. * Non-Carbon CFM: not available
  551. * CarbonLib: not available
  552. * Mac OS X: not available
  553. */
  554. EXTERN_API_C( void )
  555. Q3XDrawContext_Get(
  556. TQ3DrawContextObject drawContext,
  557. unsigned long flag,
  558. void * data);
  559. #endif /* CALL_NOT_IN_CARBON */
  560. #endif /* defined(XDC_OLD) */
  561. #if CALL_NOT_IN_CARBON
  562. /*
  563. * Q3XBuffers_New()
  564. *
  565. * Availability:
  566. * Non-Carbon CFM: not available
  567. * CarbonLib: not available
  568. * Mac OS X: not available
  569. */
  570. EXTERN_API_C( TQ3XBufferObject )
  571. Q3XBuffers_New(
  572. Display * dpy,
  573. unsigned long numBuffers,
  574. Window window);
  575. /*
  576. * Q3XBuffers_Swap()
  577. *
  578. * Availability:
  579. * Non-Carbon CFM: not available
  580. * CarbonLib: not available
  581. * Mac OS X: not available
  582. */
  583. EXTERN_API_C( void )
  584. Q3XBuffers_Swap(
  585. Display * dpy,
  586. TQ3XBufferObject buffers);
  587. /*
  588. * Q3X_GetVisualInfo()
  589. *
  590. * Availability:
  591. * Non-Carbon CFM: not available
  592. * CarbonLib: not available
  593. * Mac OS X: not available
  594. */
  595. EXTERN_API_C( XVisualInfo * )
  596. Q3X_GetVisualInfo(
  597. Display * dpy,
  598. Screen * screen);
  599. /*
  600. * Q3XDrawContext_New()
  601. *
  602. * Availability:
  603. * Non-Carbon CFM: not available
  604. * CarbonLib: not available
  605. * Mac OS X: not available
  606. */
  607. EXTERN_API_C( TQ3DrawContextObject )
  608. Q3XDrawContext_New(const TQ3XDrawContextData * xContextData);
  609. /*
  610. * Q3XDrawContext_SetDisplay()
  611. *
  612. * Availability:
  613. * Non-Carbon CFM: not available
  614. * CarbonLib: not available
  615. * Mac OS X: not available
  616. */
  617. EXTERN_API_C( TQ3Status )
  618. Q3XDrawContext_SetDisplay(
  619. TQ3DrawContextObject drawContext,
  620. const Display * display);
  621. /*
  622. * Q3XDrawContext_GetDisplay()
  623. *
  624. * Availability:
  625. * Non-Carbon CFM: not available
  626. * CarbonLib: not available
  627. * Mac OS X: not available
  628. */
  629. EXTERN_API_C( TQ3Status )
  630. Q3XDrawContext_GetDisplay(
  631. TQ3DrawContextObject drawContext,
  632. Display ** display);
  633. /*
  634. * Q3XDrawContext_SetDrawable()
  635. *
  636. * Availability:
  637. * Non-Carbon CFM: not available
  638. * CarbonLib: not available
  639. * Mac OS X: not available
  640. */
  641. EXTERN_API_C( TQ3Status )
  642. Q3XDrawContext_SetDrawable(
  643. TQ3DrawContextObject drawContext,
  644. Drawable drawable);
  645. /*
  646. * Q3XDrawContext_GetDrawable()
  647. *
  648. * Availability:
  649. * Non-Carbon CFM: not available
  650. * CarbonLib: not available
  651. * Mac OS X: not available
  652. */
  653. EXTERN_API_C( TQ3Status )
  654. Q3XDrawContext_GetDrawable(
  655. TQ3DrawContextObject drawContext,
  656. Drawable * drawable);
  657. /*
  658. * Q3XDrawContext_SetVisual()
  659. *
  660. * Availability:
  661. * Non-Carbon CFM: not available
  662. * CarbonLib: not available
  663. * Mac OS X: not available
  664. */
  665. EXTERN_API_C( TQ3Status )
  666. Q3XDrawContext_SetVisual(
  667. TQ3DrawContextObject drawContext,
  668. const Visual * visual);
  669. /*
  670. * Q3XDrawContext_GetVisual()
  671. *
  672. * Availability:
  673. * Non-Carbon CFM: not available
  674. * CarbonLib: not available
  675. * Mac OS X: not available
  676. */
  677. EXTERN_API_C( TQ3Status )
  678. Q3XDrawContext_GetVisual(
  679. TQ3DrawContextObject drawContext,
  680. Visual ** visual);
  681. /*
  682. * Q3XDrawContext_SetColormap()
  683. *
  684. * Availability:
  685. * Non-Carbon CFM: not available
  686. * CarbonLib: not available
  687. * Mac OS X: not available
  688. */
  689. EXTERN_API_C( TQ3Status )
  690. Q3XDrawContext_SetColormap(
  691. TQ3DrawContextObject drawContext,
  692. Colormap colormap);
  693. /*
  694. * Q3XDrawContext_GetColormap()
  695. *
  696. * Availability:
  697. * Non-Carbon CFM: not available
  698. * CarbonLib: not available
  699. * Mac OS X: not available
  700. */
  701. EXTERN_API_C( TQ3Status )
  702. Q3XDrawContext_GetColormap(
  703. TQ3DrawContextObject drawContext,
  704. Colormap * colormap);
  705. /*
  706. * Q3XDrawContext_SetColormapData()
  707. *
  708. * Availability:
  709. * Non-Carbon CFM: not available
  710. * CarbonLib: not available
  711. * Mac OS X: not available
  712. */
  713. EXTERN_API_C( TQ3Status )
  714. Q3XDrawContext_SetColormapData(
  715. TQ3DrawContextObject drawContext,
  716. const TQ3XColormapData * colormapData);
  717. /*
  718. * Q3XDrawContext_GetColormapData()
  719. *
  720. * Availability:
  721. * Non-Carbon CFM: not available
  722. * CarbonLib: not available
  723. * Mac OS X: not available
  724. */
  725. EXTERN_API_C( TQ3Status )
  726. Q3XDrawContext_GetColormapData(
  727. TQ3DrawContextObject drawContext,
  728. TQ3XColormapData * colormapData);
  729. #endif /* CALL_NOT_IN_CARBON */
  730. #endif /* TARGET_OS_UNIX */
  731. #if TARGET_OS_WIN32
  732. /******************************************************************************
  733. ** **
  734. ** Win32 DrawContext Data Structures **
  735. ** **
  736. *****************************************************************************/
  737. struct TQ3Win32DCDrawContextData {
  738. TQ3DrawContextData drawContextData;
  739. HDC hdc;
  740. };
  741. typedef struct TQ3Win32DCDrawContextData TQ3Win32DCDrawContextData;
  742. #ifndef QD3D_NO_DIRECTDRAW
  743. enum TQ3DirectDrawObjectSelector {
  744. kQ3DirectDrawObject = 1,
  745. kQ3DirectDrawObject2 = 2
  746. };
  747. typedef enum TQ3DirectDrawObjectSelector TQ3DirectDrawObjectSelector;
  748. enum TQ3DirectDrawSurfaceSelector {
  749. kQ3DirectDrawSurface = 1,
  750. kQ3DirectDrawSurface2 = 2
  751. };
  752. typedef enum TQ3DirectDrawSurfaceSelector TQ3DirectDrawSurfaceSelector;
  753. struct TQ3DDSurfaceDescriptor {
  754. TQ3DirectDrawObjectSelector objectSelector;
  755. union
  756. {
  757. LPDIRECTDRAW lpDirectDraw;
  758. LPDIRECTDRAW2 lpDirectDraw2;
  759. };
  760. TQ3DirectDrawSurfaceSelector surfaceSelector;
  761. union
  762. {
  763. LPDIRECTDRAWSURFACE lpDirectDrawSurface;
  764. LPDIRECTDRAWSURFACE2 lpDirectDrawSurface2;
  765. };
  766. };
  767. typedef struct TQ3DDSurfaceDescriptor TQ3DDSurfaceDescriptor;
  768. struct TQ3DDSurfaceDrawContextData {
  769. TQ3DrawContextData drawContextData;
  770. TQ3DDSurfaceDescriptor ddSurfaceDescriptor;
  771. };
  772. typedef struct TQ3DDSurfaceDrawContextData TQ3DDSurfaceDrawContextData;
  773. #endif /* !defined(QD3D_NO_DIRECTDRAW) */
  774. /******************************************************************************
  775. ** **
  776. ** Win32DC DrawContext Routines **
  777. ** **
  778. *****************************************************************************/
  779. #if CALL_NOT_IN_CARBON
  780. /*
  781. * Q3Win32DCDrawContext_New()
  782. *
  783. * Availability:
  784. * Non-Carbon CFM: not available
  785. * CarbonLib: not available
  786. * Mac OS X: not available
  787. */
  788. EXTERN_API_C( TQ3DrawContextObject )
  789. Q3Win32DCDrawContext_New(const TQ3Win32DCDrawContextData * drawContextData);
  790. /*
  791. * Q3Win32DCDrawContext_SetDC()
  792. *
  793. * Availability:
  794. * Non-Carbon CFM: not available
  795. * CarbonLib: not available
  796. * Mac OS X: not available
  797. */
  798. EXTERN_API_C( TQ3Status )
  799. Q3Win32DCDrawContext_SetDC(
  800. TQ3DrawContextObject drawContext,
  801. HDC newHDC);
  802. /*
  803. * Q3Win32DCDrawContext_GetDC()
  804. *
  805. * Availability:
  806. * Non-Carbon CFM: not available
  807. * CarbonLib: not available
  808. * Mac OS X: not available
  809. */
  810. EXTERN_API_C( TQ3Status )
  811. Q3Win32DCDrawContext_GetDC(
  812. TQ3DrawContextObject drawContext,
  813. HDC * curHDC);
  814. /******************************************************************************
  815. ** **
  816. ** DDSurface DrawContext Routines **
  817. ** **
  818. *****************************************************************************/
  819. #endif /* CALL_NOT_IN_CARBON */
  820. #ifndef QD3D_NO_DIRECTDRAW
  821. #if CALL_NOT_IN_CARBON
  822. /*
  823. * Q3DDSurfaceDrawContext_New()
  824. *
  825. * Availability:
  826. * Non-Carbon CFM: not available
  827. * CarbonLib: not available
  828. * Mac OS X: not available
  829. */
  830. EXTERN_API_C( TQ3DrawContextObject )
  831. Q3DDSurfaceDrawContext_New(const TQ3DDSurfaceDrawContextData * drawContextData);
  832. /*
  833. * Q3DDSurfaceDrawContext_SetDirectDrawSurface()
  834. *
  835. * Availability:
  836. * Non-Carbon CFM: not available
  837. * CarbonLib: not available
  838. * Mac OS X: not available
  839. */
  840. EXTERN_API_C( TQ3Status )
  841. Q3DDSurfaceDrawContext_SetDirectDrawSurface(
  842. TQ3DrawContextObject drawContext,
  843. const TQ3DDSurfaceDescriptor * ddSurfaceDescriptor);
  844. /*
  845. * Q3DDSurfaceDrawContext_GetDirectDrawSurface()
  846. *
  847. * Availability:
  848. * Non-Carbon CFM: not available
  849. * CarbonLib: not available
  850. * Mac OS X: not available
  851. */
  852. EXTERN_API_C( TQ3Status )
  853. Q3DDSurfaceDrawContext_GetDirectDrawSurface(
  854. TQ3DrawContextObject drawContext,
  855. TQ3DDSurfaceDescriptor * ddSurfaceDescriptor);
  856. #endif /* CALL_NOT_IN_CARBON */
  857. #endif /* !defined(QD3D_NO_DIRECTDRAW) */
  858. #endif /* TARGET_OS_WIN32 */
  859. #if PRAGMA_ENUM_ALWAYSINT
  860. #pragma enumsalwaysint reset
  861. #ifdef __QD3DDRAWCONTEXT__RESTORE_TWOBYTEINTS
  862. #pragma fourbyteints off
  863. #endif
  864. #elif PRAGMA_ENUM_OPTIONS
  865. #pragma option enum=reset
  866. #elif defined(__QD3DDRAWCONTEXT__RESTORE_PACKED_ENUMS)
  867. #pragma options(pack_enums)
  868. #endif
  869. #if PRAGMA_STRUCT_ALIGN
  870. #pragma options align=reset
  871. #elif PRAGMA_STRUCT_PACKPUSH
  872. #pragma pack(pop)
  873. #elif PRAGMA_STRUCT_PACK
  874. #pragma pack()
  875. #endif
  876. #ifdef PRAGMA_IMPORT_OFF
  877. #pragma import off
  878. #elif PRAGMA_IMPORT
  879. #pragma import reset
  880. #endif
  881. #ifdef __cplusplus
  882. }
  883. #endif
  884. #endif /* __QD3DDRAWCONTEXT__ */