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.

435 lines
15 KiB

  1. /*
  2. File: CMCalibrator.h
  3. Contains: ColorSync Calibration API
  4. Version: QuickTime 7.3
  5. Copyright: (c) 2007 (c) 1998-2001 by Apple Computer, 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 __CMCALIBRATOR__
  11. #define __CMCALIBRATOR__
  12. #ifndef __CMAPPLICATION__
  13. #include <CMApplication.h>
  14. #endif
  15. #ifndef __EVENTS__
  16. #include <Events.h>
  17. #endif
  18. #if PRAGMA_ONCE
  19. #pragma once
  20. #endif
  21. #ifdef __cplusplus
  22. extern "C" {
  23. #endif
  24. #if PRAGMA_IMPORT
  25. #pragma import on
  26. #endif
  27. #if PRAGMA_STRUCT_ALIGN
  28. #pragma options align=mac68k
  29. #elif PRAGMA_STRUCT_PACKPUSH
  30. #pragma pack(push, 2)
  31. #elif PRAGMA_STRUCT_PACK
  32. #pragma pack(2)
  33. #endif
  34. typedef CALLBACK_API( void , CalibrateEventProcPtr )(EventRecord * event);
  35. typedef STACK_UPP_TYPE(CalibrateEventProcPtr) CalibrateEventUPP;
  36. /* Interface for new ColorSync monitor calibrators (ColorSync 2.6 and greater) */
  37. enum {
  38. kCalibratorNamePrefix = FOUR_CHAR_CODE('cali')
  39. };
  40. struct CalibratorInfo {
  41. UInt32 dataSize; /* Size of this structure - compatibility */
  42. CMDisplayIDType displayID; /* Contains an hDC on Win32 */
  43. UInt32 profileLocationSize; /* Max size for returned profile location */
  44. CMProfileLocation * profileLocationPtr; /* For returning the profile */
  45. CalibrateEventUPP eventProc; /* Ignored on Win32 */
  46. Boolean isGood; /* true or false */
  47. };
  48. typedef struct CalibratorInfo CalibratorInfo;
  49. typedef CALLBACK_API( Boolean , CanCalibrateProcPtr )(CMDisplayIDType displayID, Str255 errMessage);
  50. typedef CALLBACK_API( OSErr , CalibrateProcPtr )(CalibratorInfo * theInfo);
  51. typedef STACK_UPP_TYPE(CanCalibrateProcPtr) CanCalibrateUPP;
  52. typedef STACK_UPP_TYPE(CalibrateProcPtr) CalibrateUPP;
  53. /*
  54. * NewCalibrateEventUPP()
  55. *
  56. * Availability:
  57. * Non-Carbon CFM: available as macro/inline
  58. * CarbonLib: in CarbonLib 1.0 and later
  59. * Mac OS X: in version 10.0 and later
  60. */
  61. EXTERN_API_C( CalibrateEventUPP )
  62. NewCalibrateEventUPP(CalibrateEventProcPtr userRoutine);
  63. #if !OPAQUE_UPP_TYPES
  64. enum { uppCalibrateEventProcInfo = 0x000000C0 }; /* pascal no_return_value Func(4_bytes) */
  65. #ifdef __cplusplus
  66. inline DEFINE_API_C(CalibrateEventUPP) NewCalibrateEventUPP(CalibrateEventProcPtr userRoutine) { return (CalibrateEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalibrateEventProcInfo, GetCurrentArchitecture()); }
  67. #else
  68. #define NewCalibrateEventUPP(userRoutine) (CalibrateEventUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalibrateEventProcInfo, GetCurrentArchitecture())
  69. #endif
  70. #endif
  71. /*
  72. * NewCanCalibrateUPP()
  73. *
  74. * Availability:
  75. * Non-Carbon CFM: available as macro/inline
  76. * CarbonLib: in CarbonLib 1.0 and later
  77. * Mac OS X: not available
  78. */
  79. EXTERN_API_C( CanCalibrateUPP )
  80. NewCanCalibrateUPP(CanCalibrateProcPtr userRoutine);
  81. #if !OPAQUE_UPP_TYPES
  82. enum { uppCanCalibrateProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
  83. #ifdef __cplusplus
  84. inline DEFINE_API_C(CanCalibrateUPP) NewCanCalibrateUPP(CanCalibrateProcPtr userRoutine) { return (CanCalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCanCalibrateProcInfo, GetCurrentArchitecture()); }
  85. #else
  86. #define NewCanCalibrateUPP(userRoutine) (CanCalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCanCalibrateProcInfo, GetCurrentArchitecture())
  87. #endif
  88. #endif
  89. /*
  90. * NewCalibrateUPP()
  91. *
  92. * Availability:
  93. * Non-Carbon CFM: available as macro/inline
  94. * CarbonLib: in CarbonLib 1.0 and later
  95. * Mac OS X: not available
  96. */
  97. EXTERN_API_C( CalibrateUPP )
  98. NewCalibrateUPP(CalibrateProcPtr userRoutine);
  99. #if !OPAQUE_UPP_TYPES
  100. enum { uppCalibrateProcInfo = 0x000000E0 }; /* pascal 2_bytes Func(4_bytes) */
  101. #ifdef __cplusplus
  102. inline DEFINE_API_C(CalibrateUPP) NewCalibrateUPP(CalibrateProcPtr userRoutine) { return (CalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalibrateProcInfo, GetCurrentArchitecture()); }
  103. #else
  104. #define NewCalibrateUPP(userRoutine) (CalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppCalibrateProcInfo, GetCurrentArchitecture())
  105. #endif
  106. #endif
  107. /*
  108. * DisposeCalibrateEventUPP()
  109. *
  110. * Availability:
  111. * Non-Carbon CFM: available as macro/inline
  112. * CarbonLib: in CarbonLib 1.0 and later
  113. * Mac OS X: in version 10.0 and later
  114. */
  115. EXTERN_API_C( void )
  116. DisposeCalibrateEventUPP(CalibrateEventUPP userUPP);
  117. #if !OPAQUE_UPP_TYPES
  118. #ifdef __cplusplus
  119. inline DEFINE_API_C(void) DisposeCalibrateEventUPP(CalibrateEventUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  120. #else
  121. #define DisposeCalibrateEventUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  122. #endif
  123. #endif
  124. /*
  125. * DisposeCanCalibrateUPP()
  126. *
  127. * Availability:
  128. * Non-Carbon CFM: available as macro/inline
  129. * CarbonLib: in CarbonLib 1.0 and later
  130. * Mac OS X: not available
  131. */
  132. EXTERN_API_C( void )
  133. DisposeCanCalibrateUPP(CanCalibrateUPP userUPP);
  134. #if !OPAQUE_UPP_TYPES
  135. #ifdef __cplusplus
  136. inline DEFINE_API_C(void) DisposeCanCalibrateUPP(CanCalibrateUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  137. #else
  138. #define DisposeCanCalibrateUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  139. #endif
  140. #endif
  141. /*
  142. * DisposeCalibrateUPP()
  143. *
  144. * Availability:
  145. * Non-Carbon CFM: available as macro/inline
  146. * CarbonLib: in CarbonLib 1.0 and later
  147. * Mac OS X: not available
  148. */
  149. EXTERN_API_C( void )
  150. DisposeCalibrateUPP(CalibrateUPP userUPP);
  151. #if !OPAQUE_UPP_TYPES
  152. #ifdef __cplusplus
  153. inline DEFINE_API_C(void) DisposeCalibrateUPP(CalibrateUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  154. #else
  155. #define DisposeCalibrateUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  156. #endif
  157. #endif
  158. /*
  159. * InvokeCalibrateEventUPP()
  160. *
  161. * Availability:
  162. * Non-Carbon CFM: available as macro/inline
  163. * CarbonLib: in CarbonLib 1.0 and later
  164. * Mac OS X: in version 10.0 and later
  165. */
  166. EXTERN_API_C( void )
  167. InvokeCalibrateEventUPP(
  168. EventRecord * event,
  169. CalibrateEventUPP userUPP);
  170. #if !OPAQUE_UPP_TYPES
  171. #ifdef __cplusplus
  172. inline DEFINE_API_C(void) InvokeCalibrateEventUPP(EventRecord * event, CalibrateEventUPP userUPP) { CALL_ONE_PARAMETER_UPP(userUPP, uppCalibrateEventProcInfo, event); }
  173. #else
  174. #define InvokeCalibrateEventUPP(event, userUPP) CALL_ONE_PARAMETER_UPP((userUPP), uppCalibrateEventProcInfo, (event))
  175. #endif
  176. #endif
  177. /*
  178. * InvokeCanCalibrateUPP()
  179. *
  180. * Availability:
  181. * Non-Carbon CFM: available as macro/inline
  182. * CarbonLib: in CarbonLib 1.0 and later
  183. * Mac OS X: not available
  184. */
  185. EXTERN_API_C( Boolean )
  186. InvokeCanCalibrateUPP(
  187. CMDisplayIDType displayID,
  188. Str255 errMessage,
  189. CanCalibrateUPP userUPP);
  190. #if !OPAQUE_UPP_TYPES
  191. #ifdef __cplusplus
  192. inline DEFINE_API_C(Boolean) InvokeCanCalibrateUPP(CMDisplayIDType displayID, Str255 errMessage, CanCalibrateUPP userUPP) { return (Boolean)CALL_TWO_PARAMETER_UPP(userUPP, uppCanCalibrateProcInfo, displayID, errMessage); }
  193. #else
  194. #define InvokeCanCalibrateUPP(displayID, errMessage, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppCanCalibrateProcInfo, (displayID), (errMessage))
  195. #endif
  196. #endif
  197. /*
  198. * InvokeCalibrateUPP()
  199. *
  200. * Availability:
  201. * Non-Carbon CFM: available as macro/inline
  202. * CarbonLib: in CarbonLib 1.0 and later
  203. * Mac OS X: not available
  204. */
  205. EXTERN_API_C( OSErr )
  206. InvokeCalibrateUPP(
  207. CalibratorInfo * theInfo,
  208. CalibrateUPP userUPP);
  209. #if !OPAQUE_UPP_TYPES
  210. #ifdef __cplusplus
  211. inline DEFINE_API_C(OSErr) InvokeCalibrateUPP(CalibratorInfo * theInfo, CalibrateUPP userUPP) { return (OSErr)CALL_ONE_PARAMETER_UPP(userUPP, uppCalibrateProcInfo, theInfo); }
  212. #else
  213. #define InvokeCalibrateUPP(theInfo, userUPP) (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppCalibrateProcInfo, (theInfo))
  214. #endif
  215. #endif
  216. #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
  217. /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
  218. #define NewCalibrateEventProc(userRoutine) NewCalibrateEventUPP(userRoutine)
  219. #define NewCanCalibrateProc(userRoutine) NewCanCalibrateUPP(userRoutine)
  220. #define NewCalibrateProc(userRoutine) NewCalibrateUPP(userRoutine)
  221. #define CallCalibrateEventProc(userRoutine, event) InvokeCalibrateEventUPP(event, userRoutine)
  222. #define CallCanCalibrateProc(userRoutine, displayID, errMessage) InvokeCanCalibrateUPP(displayID, errMessage, userRoutine)
  223. #define CallCalibrateProc(userRoutine, theInfo) InvokeCalibrateUPP(theInfo, userRoutine)
  224. #endif /* CALL_NOT_IN_CARBON */
  225. /*
  226. * CMCalibrateDisplay()
  227. *
  228. * Availability:
  229. * Non-Carbon CFM: not available
  230. * CarbonLib: not available
  231. * Mac OS X: in version 10.0 and later
  232. */
  233. EXTERN_API( OSErr )
  234. CMCalibrateDisplay(CalibratorInfo * theInfo);
  235. #if OLDROUTINENAMES
  236. /* Interface for original ColorSync monitor calibrators (ColorSync 2.5.x) */
  237. enum {
  238. kOldCalibratorNamePrefix = FOUR_CHAR_CODE('Cali')
  239. };
  240. struct OldCalibratorInfo {
  241. CMDisplayIDType displayID; /* Contains an hDC on Win32 */
  242. CMProfileLocation profileLocation;
  243. CalibrateEventUPP eventProc; /* Ignored on Win32 */
  244. UInt32 reserved; /* Unused */
  245. UInt32 flags; /* Unused */
  246. Boolean isGood; /* true or false */
  247. SInt8 byteFiller; /* Unused */
  248. };
  249. typedef struct OldCalibratorInfo OldCalibratorInfo;
  250. typedef CALLBACK_API( Boolean , OldCanCalibrateProcPtr )(CMDisplayIDType displayID);
  251. typedef CALLBACK_API( OSErr , OldCalibrateProcPtr )(OldCalibratorInfo * theInfo);
  252. typedef STACK_UPP_TYPE(OldCanCalibrateProcPtr) OldCanCalibrateUPP;
  253. typedef STACK_UPP_TYPE(OldCalibrateProcPtr) OldCalibrateUPP;
  254. #if CALL_NOT_IN_CARBON
  255. /*
  256. * NewOldCanCalibrateUPP()
  257. *
  258. * Availability:
  259. * Non-Carbon CFM: available as macro/inline
  260. * CarbonLib: not available
  261. * Mac OS X: not available
  262. */
  263. EXTERN_API_C( OldCanCalibrateUPP )
  264. NewOldCanCalibrateUPP(OldCanCalibrateProcPtr userRoutine);
  265. #if !OPAQUE_UPP_TYPES
  266. enum { uppOldCanCalibrateProcInfo = 0x000000D0 }; /* pascal 1_byte Func(4_bytes) */
  267. #ifdef __cplusplus
  268. inline DEFINE_API_C(OldCanCalibrateUPP) NewOldCanCalibrateUPP(OldCanCalibrateProcPtr userRoutine) { return (OldCanCalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOldCanCalibrateProcInfo, GetCurrentArchitecture()); }
  269. #else
  270. #define NewOldCanCalibrateUPP(userRoutine) (OldCanCalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOldCanCalibrateProcInfo, GetCurrentArchitecture())
  271. #endif
  272. #endif
  273. /*
  274. * NewOldCalibrateUPP()
  275. *
  276. * Availability:
  277. * Non-Carbon CFM: available as macro/inline
  278. * CarbonLib: not available
  279. * Mac OS X: not available
  280. */
  281. EXTERN_API_C( OldCalibrateUPP )
  282. NewOldCalibrateUPP(OldCalibrateProcPtr userRoutine);
  283. #if !OPAQUE_UPP_TYPES
  284. enum { uppOldCalibrateProcInfo = 0x000000E0 }; /* pascal 2_bytes Func(4_bytes) */
  285. #ifdef __cplusplus
  286. inline DEFINE_API_C(OldCalibrateUPP) NewOldCalibrateUPP(OldCalibrateProcPtr userRoutine) { return (OldCalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOldCalibrateProcInfo, GetCurrentArchitecture()); }
  287. #else
  288. #define NewOldCalibrateUPP(userRoutine) (OldCalibrateUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppOldCalibrateProcInfo, GetCurrentArchitecture())
  289. #endif
  290. #endif
  291. /*
  292. * DisposeOldCanCalibrateUPP()
  293. *
  294. * Availability:
  295. * Non-Carbon CFM: available as macro/inline
  296. * CarbonLib: not available
  297. * Mac OS X: not available
  298. */
  299. EXTERN_API_C( void )
  300. DisposeOldCanCalibrateUPP(OldCanCalibrateUPP userUPP);
  301. #if !OPAQUE_UPP_TYPES
  302. #ifdef __cplusplus
  303. inline DEFINE_API_C(void) DisposeOldCanCalibrateUPP(OldCanCalibrateUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  304. #else
  305. #define DisposeOldCanCalibrateUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  306. #endif
  307. #endif
  308. /*
  309. * DisposeOldCalibrateUPP()
  310. *
  311. * Availability:
  312. * Non-Carbon CFM: available as macro/inline
  313. * CarbonLib: not available
  314. * Mac OS X: not available
  315. */
  316. EXTERN_API_C( void )
  317. DisposeOldCalibrateUPP(OldCalibrateUPP userUPP);
  318. #if !OPAQUE_UPP_TYPES
  319. #ifdef __cplusplus
  320. inline DEFINE_API_C(void) DisposeOldCalibrateUPP(OldCalibrateUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); }
  321. #else
  322. #define DisposeOldCalibrateUPP(userUPP) DisposeRoutineDescriptor(userUPP)
  323. #endif
  324. #endif
  325. /*
  326. * InvokeOldCanCalibrateUPP()
  327. *
  328. * Availability:
  329. * Non-Carbon CFM: available as macro/inline
  330. * CarbonLib: not available
  331. * Mac OS X: not available
  332. */
  333. EXTERN_API_C( Boolean )
  334. InvokeOldCanCalibrateUPP(
  335. CMDisplayIDType displayID,
  336. OldCanCalibrateUPP userUPP);
  337. #if !OPAQUE_UPP_TYPES
  338. #ifdef __cplusplus
  339. inline DEFINE_API_C(Boolean) InvokeOldCanCalibrateUPP(CMDisplayIDType displayID, OldCanCalibrateUPP userUPP) { return (Boolean)CALL_ONE_PARAMETER_UPP(userUPP, uppOldCanCalibrateProcInfo, displayID); }
  340. #else
  341. #define InvokeOldCanCalibrateUPP(displayID, userUPP) (Boolean)CALL_ONE_PARAMETER_UPP((userUPP), uppOldCanCalibrateProcInfo, (displayID))
  342. #endif
  343. #endif
  344. /*
  345. * InvokeOldCalibrateUPP()
  346. *
  347. * Availability:
  348. * Non-Carbon CFM: available as macro/inline
  349. * CarbonLib: not available
  350. * Mac OS X: not available
  351. */
  352. EXTERN_API_C( OSErr )
  353. InvokeOldCalibrateUPP(
  354. OldCalibratorInfo * theInfo,
  355. OldCalibrateUPP userUPP);
  356. #if !OPAQUE_UPP_TYPES
  357. #ifdef __cplusplus
  358. inline DEFINE_API_C(OSErr) InvokeOldCalibrateUPP(OldCalibratorInfo * theInfo, OldCalibrateUPP userUPP) { return (OSErr)CALL_ONE_PARAMETER_UPP(userUPP, uppOldCalibrateProcInfo, theInfo); }
  359. #else
  360. #define InvokeOldCalibrateUPP(theInfo, userUPP) (OSErr)CALL_ONE_PARAMETER_UPP((userUPP), uppOldCalibrateProcInfo, (theInfo))
  361. #endif
  362. #endif
  363. #endif /* CALL_NOT_IN_CARBON */
  364. #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
  365. /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
  366. #define NewOldCanCalibrateProc(userRoutine) NewOldCanCalibrateUPP(userRoutine)
  367. #define NewOldCalibrateProc(userRoutine) NewOldCalibrateUPP(userRoutine)
  368. #define CallOldCanCalibrateProc(userRoutine, displayID) InvokeOldCanCalibrateUPP(displayID, userRoutine)
  369. #define CallOldCalibrateProc(userRoutine, theInfo) InvokeOldCalibrateUPP(theInfo, userRoutine)
  370. #endif /* CALL_NOT_IN_CARBON */
  371. #endif /* OLDROUTINENAMES */
  372. #if PRAGMA_STRUCT_ALIGN
  373. #pragma options align=reset
  374. #elif PRAGMA_STRUCT_PACKPUSH
  375. #pragma pack(pop)
  376. #elif PRAGMA_STRUCT_PACK
  377. #pragma pack()
  378. #endif
  379. #ifdef PRAGMA_IMPORT_OFF
  380. #pragma import off
  381. #elif PRAGMA_IMPORT
  382. #pragma import reset
  383. #endif
  384. #ifdef __cplusplus
  385. }
  386. #endif
  387. #endif /* __CMCALIBRATOR__ */