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.

674 lines
15 KiB

  1. /*
  2. File: QTML.h
  3. Contains: QuickTime Cross-platform specific interfaces
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 1997-2007 by Apple Inc., all rights reserved.
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://developer.apple.com/bugreporter/
  9. */
  10. #ifndef __QTML__
  11. #define __QTML__
  12. #ifndef __MACTYPES__
  13. #include <MacTypes.h>
  14. #endif
  15. #ifndef __MACMEMORY__
  16. #include <MacMemory.h>
  17. #endif
  18. #ifndef __MACWINDOWS__
  19. #include <MacWindows.h>
  20. #endif
  21. #ifndef __OSUTILS__
  22. #include <OSUtils.h>
  23. #endif
  24. #ifndef __FILES__
  25. #include <Files.h>
  26. #endif
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33. #if PRAGMA_IMPORT
  34. #pragma import on
  35. #endif
  36. #if PRAGMA_STRUCT_ALIGN
  37. #pragma options align=mac68k
  38. #elif PRAGMA_STRUCT_PACKPUSH
  39. #pragma pack(push, 2)
  40. #elif PRAGMA_STRUCT_PACK
  41. #pragma pack(2)
  42. #endif
  43. /* QuickTime is not available to 64-bit clients */
  44. #if !__LP64__
  45. /*
  46. * QTMLYieldCPU()
  47. *
  48. * Availability:
  49. * Non-Carbon CFM: not available
  50. * CarbonLib: in CarbonLib 3.0 and later
  51. * Mac OS X: in version 10.0 and later
  52. * Windows: in qtmlClient.lib 3.0 and later
  53. */
  54. EXTERN_API( void )
  55. QTMLYieldCPU(void);
  56. /* QTMLYieldCPUTime flags*/
  57. enum {
  58. kQTMLHandlePortEvents = (1L << 0) /* ask for event handling during the yield*/
  59. };
  60. /*
  61. * QTMLYieldCPUTime()
  62. *
  63. * Availability:
  64. * Non-Carbon CFM: not available
  65. * CarbonLib: in CarbonLib 3.0 and later
  66. * Mac OS X: in version 10.0 and later
  67. * Windows: in qtmlClient.lib 3.0 and later
  68. */
  69. EXTERN_API( void )
  70. QTMLYieldCPUTime(
  71. long milliSeconds,
  72. unsigned long flags);
  73. typedef struct OpaqueQTMLMutex* QTMLMutex;
  74. typedef struct OpaqueQTMLSyncVar* QTMLSyncVar;
  75. typedef QTMLSyncVar * QTMLSyncVarPtr;
  76. /* InitializeQTML flags*/
  77. enum {
  78. kInitializeQTMLNoSoundFlag = (1L << 0), /* flag for requesting no sound when calling InitializeQTML*/
  79. kInitializeQTMLUseGDIFlag = (1L << 1), /* flag for requesting GDI when calling InitializeQTML*/
  80. kInitializeQTMLDisableDirectSound = (1L << 2), /* disables QTML's use of DirectSound*/
  81. kInitializeQTMLUseExclusiveFullScreenModeFlag = (1L << 3), /* later than QTML 3.0: qtml starts up in exclusive full screen mode*/
  82. kInitializeQTMLDisableDDClippers = (1L << 4), /* flag for requesting QTML not to use DirectDraw clipper objects; QTML 5.0 and later*/
  83. kInitializeQTMLEnableDoubleBufferedSurface = (1L << 6) /* flag for requesting QuickTime use a double-buffered destination surface; QT6.4 and later*/
  84. };
  85. #if CALL_NOT_IN_CARBON
  86. /*
  87. * InitializeQTML()
  88. *
  89. * Availability:
  90. * Non-Carbon CFM: not available
  91. * CarbonLib: not available
  92. * Mac OS X: not available
  93. * Windows: in qtmlClient.lib 3.0 and later
  94. */
  95. EXTERN_API( OSErr )
  96. InitializeQTML(long flag);
  97. /*
  98. * TerminateQTML()
  99. *
  100. * Availability:
  101. * Non-Carbon CFM: not available
  102. * CarbonLib: not available
  103. * Mac OS X: not available
  104. * Windows: in qtmlClient.lib 3.0 and later
  105. */
  106. EXTERN_API( void )
  107. TerminateQTML(void);
  108. /* CreatePortAssociation flags*/
  109. #endif /* CALL_NOT_IN_CARBON */
  110. enum {
  111. kQTMLNoIdleEvents = (1L << 1), /* ask for a non-auto-idled port to be created*/
  112. kQTMLNoDoubleBufferPort = (1L << 2) /* ask for QTML not to double-buffer this port*/
  113. };
  114. #define kQTMLIsDoubleBuffered "UsesDoubleBuffer"
  115. #if CALL_NOT_IN_CARBON
  116. /*
  117. * CreatePortAssociation()
  118. *
  119. * Availability:
  120. * Non-Carbon CFM: not available
  121. * CarbonLib: not available
  122. * Mac OS X: not available
  123. * Windows: in qtmlClient.lib 3.0 and later
  124. */
  125. EXTERN_API( GrafPtr )
  126. CreatePortAssociation(
  127. void * theWnd,
  128. Ptr storage,
  129. long flags);
  130. /*
  131. * DestroyPortAssociation()
  132. *
  133. * Availability:
  134. * Non-Carbon CFM: not available
  135. * CarbonLib: not available
  136. * Mac OS X: not available
  137. * Windows: in qtmlClient.lib 3.0 and later
  138. */
  139. EXTERN_API( void )
  140. DestroyPortAssociation(CGrafPtr cgp);
  141. #endif /* CALL_NOT_IN_CARBON */
  142. /*
  143. * QTMLGrabMutex()
  144. *
  145. * Availability:
  146. * Non-Carbon CFM: not available
  147. * CarbonLib: in CarbonLib 3.0 and later
  148. * Mac OS X: in version 10.0 and later
  149. * Windows: in qtmlClient.lib 3.0 and later
  150. */
  151. EXTERN_API( void )
  152. QTMLGrabMutex(QTMLMutex mu);
  153. /*
  154. * QTMLTryGrabMutex()
  155. *
  156. * Availability:
  157. * Non-Carbon CFM: not available
  158. * CarbonLib: in CarbonLib 4.1 and later
  159. * Mac OS X: in version 10.0 and later
  160. * Windows: in qtmlClient.lib 4.1 and later
  161. */
  162. EXTERN_API( Boolean )
  163. QTMLTryGrabMutex(QTMLMutex mu);
  164. /*
  165. * QTMLReturnMutex()
  166. *
  167. * Availability:
  168. * Non-Carbon CFM: not available
  169. * CarbonLib: in CarbonLib 3.0 and later
  170. * Mac OS X: in version 10.0 and later
  171. * Windows: in qtmlClient.lib 3.0 and later
  172. */
  173. EXTERN_API( void )
  174. QTMLReturnMutex(QTMLMutex mu);
  175. /*
  176. * QTMLCreateMutex()
  177. *
  178. * Availability:
  179. * Non-Carbon CFM: not available
  180. * CarbonLib: in CarbonLib 3.0 and later
  181. * Mac OS X: in version 10.0 and later
  182. * Windows: in qtmlClient.lib 3.0 and later
  183. */
  184. EXTERN_API( QTMLMutex )
  185. QTMLCreateMutex(void);
  186. /*
  187. * QTMLDestroyMutex()
  188. *
  189. * Availability:
  190. * Non-Carbon CFM: not available
  191. * CarbonLib: in CarbonLib 3.0 and later
  192. * Mac OS X: in version 10.0 and later
  193. * Windows: in qtmlClient.lib 3.0 and later
  194. */
  195. EXTERN_API( void )
  196. QTMLDestroyMutex(QTMLMutex mu);
  197. #if CALL_NOT_IN_CARBON
  198. /*
  199. * QTMLCreateSyncVar()
  200. *
  201. * Availability:
  202. * Non-Carbon CFM: not available
  203. * CarbonLib: not available
  204. * Mac OS X: not available
  205. * Windows: in qtmlClient.lib 3.0 and later
  206. */
  207. EXTERN_API( QTMLSyncVarPtr )
  208. QTMLCreateSyncVar(void);
  209. /*
  210. * QTMLDestroySyncVar()
  211. *
  212. * Availability:
  213. * Non-Carbon CFM: not available
  214. * CarbonLib: not available
  215. * Mac OS X: not available
  216. * Windows: in qtmlClient.lib 3.0 and later
  217. */
  218. EXTERN_API( void )
  219. QTMLDestroySyncVar(QTMLSyncVarPtr p);
  220. /*
  221. * QTMLTestAndSetSyncVar()
  222. *
  223. * Availability:
  224. * Non-Carbon CFM: not available
  225. * CarbonLib: not available
  226. * Mac OS X: not available
  227. * Windows: in qtmlClient.lib 3.0 and later
  228. */
  229. EXTERN_API( long )
  230. QTMLTestAndSetSyncVar(QTMLSyncVarPtr sync);
  231. /*
  232. * QTMLWaitAndSetSyncVar()
  233. *
  234. * Availability:
  235. * Non-Carbon CFM: not available
  236. * CarbonLib: not available
  237. * Mac OS X: not available
  238. * Windows: in qtmlClient.lib 3.0 and later
  239. */
  240. EXTERN_API( void )
  241. QTMLWaitAndSetSyncVar(QTMLSyncVarPtr sync);
  242. /*
  243. * QTMLResetSyncVar()
  244. *
  245. * Availability:
  246. * Non-Carbon CFM: not available
  247. * CarbonLib: not available
  248. * Mac OS X: not available
  249. * Windows: in qtmlClient.lib 3.0 and later
  250. */
  251. EXTERN_API( void )
  252. QTMLResetSyncVar(QTMLSyncVarPtr sync);
  253. /*
  254. * InitializeQHdr()
  255. *
  256. * Availability:
  257. * Non-Carbon CFM: not available
  258. * CarbonLib: not available
  259. * Mac OS X: not available
  260. * Windows: in qtmlClient.lib 3.0 and later
  261. */
  262. EXTERN_API( void )
  263. InitializeQHdr(QHdr * qhdr);
  264. /*
  265. * TerminateQHdr()
  266. *
  267. * Availability:
  268. * Non-Carbon CFM: not available
  269. * CarbonLib: not available
  270. * Mac OS X: not available
  271. * Windows: in qtmlClient.lib 3.0 and later
  272. */
  273. EXTERN_API( void )
  274. TerminateQHdr(QHdr * qhdr);
  275. /*
  276. * QTMLAcquireWindowList()
  277. *
  278. * Availability:
  279. * Non-Carbon CFM: not available
  280. * CarbonLib: not available
  281. * Mac OS X: not available
  282. * Windows: in qtmlClient.lib 3.0 and later
  283. */
  284. EXTERN_API( void )
  285. QTMLAcquireWindowList(void);
  286. /*
  287. * QTMLReleaseWindowList()
  288. *
  289. * Availability:
  290. * Non-Carbon CFM: not available
  291. * CarbonLib: not available
  292. * Mac OS X: not available
  293. * Windows: in qtmlClient.lib 3.0 and later
  294. */
  295. EXTERN_API( void )
  296. QTMLReleaseWindowList(void);
  297. /*
  298. These routines are here to support "interrupt level" code
  299. These are dangerous routines, only use if you know what you are doing.
  300. */
  301. /*
  302. * QTMLRegisterInterruptSafeThread()
  303. *
  304. * Availability:
  305. * Non-Carbon CFM: not available
  306. * CarbonLib: not available
  307. * Mac OS X: not available
  308. * Windows: in qtmlClient.lib 3.0 and later
  309. */
  310. EXTERN_API( long )
  311. QTMLRegisterInterruptSafeThread(
  312. unsigned long threadID,
  313. void * threadInfo);
  314. /*
  315. * QTMLUnregisterInterruptSafeThread()
  316. *
  317. * Availability:
  318. * Non-Carbon CFM: not available
  319. * CarbonLib: not available
  320. * Mac OS X: not available
  321. * Windows: in qtmlClient.lib 3.0 and later
  322. */
  323. EXTERN_API( long )
  324. QTMLUnregisterInterruptSafeThread(unsigned long threadID);
  325. /*
  326. * NativeEventToMacEvent()
  327. *
  328. * Availability:
  329. * Non-Carbon CFM: not available
  330. * CarbonLib: not available
  331. * Mac OS X: not available
  332. * Windows: in qtmlClient.lib 3.0 and later
  333. */
  334. EXTERN_API( long )
  335. NativeEventToMacEvent(
  336. void * nativeEvent,
  337. EventRecord * macEvent);
  338. #endif /* CALL_NOT_IN_CARBON */
  339. #if TARGET_OS_WIN32
  340. #if CALL_NOT_IN_CARBON
  341. /*
  342. * WinEventToMacEvent()
  343. *
  344. * Availability:
  345. * Non-Carbon CFM: not available
  346. * CarbonLib: not available
  347. * Mac OS X: not available
  348. * Windows: in qtmlClient.lib 3.0 and later
  349. */
  350. EXTERN_API( long )
  351. WinEventToMacEvent(
  352. void * winMsg,
  353. EventRecord * macEvent);
  354. #define WinEventToMacEvent NativeEventToMacEvent
  355. /*
  356. * IsTaskBarVisible()
  357. *
  358. * Availability:
  359. * Non-Carbon CFM: not available
  360. * CarbonLib: not available
  361. * Mac OS X: not available
  362. * Windows: in qtmlClient.lib 3.0 and later
  363. */
  364. EXTERN_API( Boolean )
  365. IsTaskBarVisible(void);
  366. /*
  367. * ShowHideTaskBar()
  368. *
  369. * Availability:
  370. * Non-Carbon CFM: not available
  371. * CarbonLib: not available
  372. * Mac OS X: not available
  373. * Windows: in qtmlClient.lib 3.0 and later
  374. */
  375. EXTERN_API( void )
  376. ShowHideTaskBar(Boolean showIt);
  377. #endif /* CALL_NOT_IN_CARBON */
  378. enum {
  379. kDDSurfaceLocked = (1L << 0),
  380. kDDSurfaceStatic = (1L << 1)
  381. };
  382. #if CALL_NOT_IN_CARBON
  383. /*
  384. * QTGetDDObject()
  385. *
  386. * Availability:
  387. * Non-Carbon CFM: not available
  388. * CarbonLib: not available
  389. * Mac OS X: not available
  390. * Windows: in qtmlClient.lib 3.0 and later
  391. */
  392. EXTERN_API( OSErr )
  393. QTGetDDObject(void ** lpDDObject);
  394. /*
  395. * QTSetDDObject()
  396. *
  397. * Availability:
  398. * Non-Carbon CFM: not available
  399. * CarbonLib: not available
  400. * Mac OS X: not available
  401. * Windows: in qtmlClient.lib 3.0 and later
  402. */
  403. EXTERN_API( OSErr )
  404. QTSetDDObject(void * lpNewDDObject);
  405. /*
  406. * QTSetDDPrimarySurface()
  407. *
  408. * Availability:
  409. * Non-Carbon CFM: not available
  410. * CarbonLib: not available
  411. * Mac OS X: not available
  412. * Windows: in qtmlClient.lib 3.0 and later
  413. */
  414. EXTERN_API( OSErr )
  415. QTSetDDPrimarySurface(
  416. void * lpNewDDSurface,
  417. unsigned long flags);
  418. /*
  419. * QTMLGetVolumeRootPath()
  420. *
  421. * Availability:
  422. * Non-Carbon CFM: not available
  423. * CarbonLib: not available
  424. * Mac OS X: not available
  425. * Windows: in qtmlClient.lib 3.0 and later
  426. */
  427. EXTERN_API( OSErr )
  428. QTMLGetVolumeRootPath(
  429. char * fullPath,
  430. char * volumeRootPath,
  431. unsigned long volumeRootLen);
  432. /*
  433. * QTMLSetWindowWndProc()
  434. *
  435. * Availability:
  436. * Non-Carbon CFM: not available
  437. * CarbonLib: not available
  438. * Mac OS X: not available
  439. * Windows: in qtmlClient.lib 3.0 and later
  440. */
  441. EXTERN_API( void )
  442. QTMLSetWindowWndProc(
  443. WindowRef theWindow,
  444. void * windowProc);
  445. /*
  446. * QTMLGetWindowWndProc()
  447. *
  448. * Availability:
  449. * Non-Carbon CFM: not available
  450. * CarbonLib: not available
  451. * Mac OS X: not available
  452. * Windows: in qtmlClient.lib 3.0 and later
  453. */
  454. EXTERN_API( void * )
  455. QTMLGetWindowWndProc(WindowRef theWindow);
  456. #endif /* CALL_NOT_IN_CARBON */
  457. #endif /* TARGET_OS_WIN32 */
  458. #if CALL_NOT_IN_CARBON
  459. /*
  460. * QTMLGetCanonicalPathName()
  461. *
  462. * Availability:
  463. * Non-Carbon CFM: not available
  464. * CarbonLib: not available
  465. * Mac OS X: not available
  466. * Windows: in qtmlClient.lib 3.0 and later
  467. */
  468. EXTERN_API( OSErr )
  469. QTMLGetCanonicalPathName(
  470. char * inName,
  471. char * outName,
  472. unsigned long outLen);
  473. #endif /* CALL_NOT_IN_CARBON */
  474. enum {
  475. kFullNativePath = 0,
  476. kFileNameOnly = (1 << 0),
  477. kDirectoryPathOnly = (1 << 1),
  478. kUFSFullPathName = (1 << 2),
  479. kTryVDIMask = (1 << 3), /* Used in NativePathNameToFSSpec to specify to search VDI mountpoints*/
  480. kFullPathSpecifiedMask = (1 << 4) /* the passed in name is a fully qualified full path*/
  481. };
  482. #if CALL_NOT_IN_CARBON
  483. /*
  484. * FSSpecToNativePathName()
  485. *
  486. * Availability:
  487. * Non-Carbon CFM: not available
  488. * CarbonLib: not available
  489. * Mac OS X: not available
  490. * Windows: in qtmlClient.lib 3.0 and later
  491. */
  492. EXTERN_API( OSErr )
  493. FSSpecToNativePathName(
  494. const FSSpec * inFile,
  495. char * outName,
  496. unsigned long outLen,
  497. long flags);
  498. #endif /* CALL_NOT_IN_CARBON */
  499. enum {
  500. kErrorIfFileNotFound = 1L << 31
  501. };
  502. #if CALL_NOT_IN_CARBON
  503. /*
  504. * NativePathNameToFSSpec()
  505. *
  506. * Availability:
  507. * Non-Carbon CFM: not available
  508. * CarbonLib: not available
  509. * Mac OS X: not available
  510. * Windows: in qtmlClient.lib 3.0 and later
  511. */
  512. EXTERN_API( OSErr )
  513. NativePathNameToFSSpec(
  514. char * inName,
  515. FSSpec * outFile,
  516. long flags);
  517. /*
  518. * QTGetAliasInfo()
  519. *
  520. * Availability:
  521. * Non-Carbon CFM: not available
  522. * CarbonLib: not available
  523. * Mac OS X: not available
  524. * Windows: in qtmlClient.lib 5.0 and later
  525. */
  526. EXTERN_API( OSErr )
  527. QTGetAliasInfo(
  528. AliasHandle alias,
  529. AliasInfoType index,
  530. char * outBuf,
  531. long bufLen,
  532. long * outLen,
  533. unsigned long flags);
  534. #endif // !__LP64__
  535. #endif /* CALL_NOT_IN_CARBON */
  536. #if PRAGMA_STRUCT_ALIGN
  537. #pragma options align=reset
  538. #elif PRAGMA_STRUCT_PACKPUSH
  539. #pragma pack(pop)
  540. #elif PRAGMA_STRUCT_PACK
  541. #pragma pack()
  542. #endif
  543. #ifdef PRAGMA_IMPORT_OFF
  544. #pragma import off
  545. #elif PRAGMA_IMPORT
  546. #pragma import reset
  547. #endif
  548. #ifdef __cplusplus
  549. }
  550. #endif
  551. #endif /* __QTML__ */