QuickTimeVRFormat.pas 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661
  1. {
  2. File: QuickTime/QuickTimeVRFormat.h
  3. Contains: QuickTime VR interfaces
  4. Version: QuickTime 7.7.1
  5. Copyright: © 1997-2012 by Apple Inc., all rights reserved.
  6. Bugs?: For bug reports, consult the following page on
  7. the World Wide Web:
  8. http://bugs.freepascal.org
  9. }
  10. { Pascal Translation Updated: Jonas Maebe, <[email protected]>, October 2009 }
  11. { Pascal Translation Updated: Jonas Maebe, <[email protected]>, October 2012 }
  12. {
  13. Modified for use with Free Pascal
  14. Version 308
  15. Please report any bugs to <[email protected]>
  16. }
  17. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  18. {$mode macpas}
  19. {$modeswitch cblocks}
  20. {$packenum 1}
  21. {$macro on}
  22. {$inline on}
  23. {$calling mwpascal}
  24. unit QuickTimeVRFormat;
  25. interface
  26. {$setc UNIVERSAL_INTERFACES_VERSION := $0400}
  27. {$setc GAP_INTERFACES_VERSION := $0308}
  28. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  29. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  30. {$endc}
  31. {$ifc defined CPUPOWERPC and defined CPUI386}
  32. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  33. {$endc}
  34. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  35. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  36. {$endc}
  37. {$ifc not defined __ppc__ and defined CPUPOWERPC32}
  38. {$setc __ppc__ := 1}
  39. {$elsec}
  40. {$setc __ppc__ := 0}
  41. {$endc}
  42. {$ifc not defined __ppc64__ and defined CPUPOWERPC64}
  43. {$setc __ppc64__ := 1}
  44. {$elsec}
  45. {$setc __ppc64__ := 0}
  46. {$endc}
  47. {$ifc not defined __i386__ and defined CPUI386}
  48. {$setc __i386__ := 1}
  49. {$elsec}
  50. {$setc __i386__ := 0}
  51. {$endc}
  52. {$ifc not defined __x86_64__ and defined CPUX86_64}
  53. {$setc __x86_64__ := 1}
  54. {$elsec}
  55. {$setc __x86_64__ := 0}
  56. {$endc}
  57. {$ifc not defined __arm__ and defined CPUARM}
  58. {$setc __arm__ := 1}
  59. {$elsec}
  60. {$setc __arm__ := 0}
  61. {$endc}
  62. {$ifc not defined __arm64__ and defined CPUAARCH64}
  63. {$setc __arm64__ := 1}
  64. {$elsec}
  65. {$setc __arm64__ := 0}
  66. {$endc}
  67. {$ifc defined cpu64}
  68. {$setc __LP64__ := 1}
  69. {$elsec}
  70. {$setc __LP64__ := 0}
  71. {$endc}
  72. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  73. {$error Conflicting definitions for __ppc__ and __i386__}
  74. {$endc}
  75. {$ifc defined __ppc__ and __ppc__}
  76. {$setc TARGET_CPU_PPC := TRUE}
  77. {$setc TARGET_CPU_PPC64 := FALSE}
  78. {$setc TARGET_CPU_X86 := FALSE}
  79. {$setc TARGET_CPU_X86_64 := FALSE}
  80. {$setc TARGET_CPU_ARM := FALSE}
  81. {$setc TARGET_CPU_ARM64 := FALSE}
  82. {$setc TARGET_OS_MAC := TRUE}
  83. {$setc TARGET_OS_IPHONE := FALSE}
  84. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  85. {$setc TARGET_OS_EMBEDDED := FALSE}
  86. {$elifc defined __ppc64__ and __ppc64__}
  87. {$setc TARGET_CPU_PPC := FALSE}
  88. {$setc TARGET_CPU_PPC64 := TRUE}
  89. {$setc TARGET_CPU_X86 := FALSE}
  90. {$setc TARGET_CPU_X86_64 := FALSE}
  91. {$setc TARGET_CPU_ARM := FALSE}
  92. {$setc TARGET_CPU_ARM64 := FALSE}
  93. {$setc TARGET_OS_MAC := TRUE}
  94. {$setc TARGET_OS_IPHONE := FALSE}
  95. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  96. {$setc TARGET_OS_EMBEDDED := FALSE}
  97. {$elifc defined __i386__ and __i386__}
  98. {$setc TARGET_CPU_PPC := FALSE}
  99. {$setc TARGET_CPU_PPC64 := FALSE}
  100. {$setc TARGET_CPU_X86 := TRUE}
  101. {$setc TARGET_CPU_X86_64 := FALSE}
  102. {$setc TARGET_CPU_ARM := FALSE}
  103. {$setc TARGET_CPU_ARM64 := FALSE}
  104. {$ifc defined(iphonesim)}
  105. {$setc TARGET_OS_MAC := FALSE}
  106. {$setc TARGET_OS_IPHONE := TRUE}
  107. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  108. {$elsec}
  109. {$setc TARGET_OS_MAC := TRUE}
  110. {$setc TARGET_OS_IPHONE := FALSE}
  111. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  112. {$endc}
  113. {$setc TARGET_OS_EMBEDDED := FALSE}
  114. {$elifc defined __x86_64__ and __x86_64__}
  115. {$setc TARGET_CPU_PPC := FALSE}
  116. {$setc TARGET_CPU_PPC64 := FALSE}
  117. {$setc TARGET_CPU_X86 := FALSE}
  118. {$setc TARGET_CPU_X86_64 := TRUE}
  119. {$setc TARGET_CPU_ARM := FALSE}
  120. {$setc TARGET_CPU_ARM64 := FALSE}
  121. {$ifc defined(iphonesim)}
  122. {$setc TARGET_OS_MAC := FALSE}
  123. {$setc TARGET_OS_IPHONE := TRUE}
  124. {$setc TARGET_IPHONE_SIMULATOR := TRUE}
  125. {$elsec}
  126. {$setc TARGET_OS_MAC := TRUE}
  127. {$setc TARGET_OS_IPHONE := FALSE}
  128. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  129. {$endc}
  130. {$setc TARGET_OS_EMBEDDED := FALSE}
  131. {$elifc defined __arm__ and __arm__}
  132. {$setc TARGET_CPU_PPC := FALSE}
  133. {$setc TARGET_CPU_PPC64 := FALSE}
  134. {$setc TARGET_CPU_X86 := FALSE}
  135. {$setc TARGET_CPU_X86_64 := FALSE}
  136. {$setc TARGET_CPU_ARM := TRUE}
  137. {$setc TARGET_CPU_ARM64 := FALSE}
  138. { will require compiler define when/if other Apple devices with ARM cpus ship }
  139. {$setc TARGET_OS_MAC := FALSE}
  140. {$setc TARGET_OS_IPHONE := TRUE}
  141. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  142. {$setc TARGET_OS_EMBEDDED := TRUE}
  143. {$elifc defined __arm64__ and __arm64__}
  144. {$setc TARGET_CPU_PPC := FALSE}
  145. {$setc TARGET_CPU_PPC64 := FALSE}
  146. {$setc TARGET_CPU_X86 := FALSE}
  147. {$setc TARGET_CPU_X86_64 := FALSE}
  148. {$setc TARGET_CPU_ARM := FALSE}
  149. {$setc TARGET_CPU_ARM64 := TRUE}
  150. { will require compiler define when/if other Apple devices with ARM cpus ship }
  151. {$setc TARGET_OS_MAC := FALSE}
  152. {$setc TARGET_OS_IPHONE := TRUE}
  153. {$setc TARGET_IPHONE_SIMULATOR := FALSE}
  154. {$setc TARGET_OS_EMBEDDED := TRUE}
  155. {$elsec}
  156. {$error __ppc__ nor __ppc64__ nor __i386__ nor __x86_64__ nor __arm__ nor __arm64__ is defined.}
  157. {$endc}
  158. {$ifc defined __LP64__ and __LP64__ }
  159. {$setc TARGET_CPU_64 := TRUE}
  160. {$elsec}
  161. {$setc TARGET_CPU_64 := FALSE}
  162. {$endc}
  163. {$ifc defined FPC_BIG_ENDIAN}
  164. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  165. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  166. {$elifc defined FPC_LITTLE_ENDIAN}
  167. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  168. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  169. {$elsec}
  170. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  171. {$endc}
  172. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  173. {$setc CALL_NOT_IN_CARBON := FALSE}
  174. {$setc OLDROUTINENAMES := FALSE}
  175. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  176. {$setc OPAQUE_UPP_TYPES := TRUE}
  177. {$setc OTCARBONAPPLICATION := TRUE}
  178. {$setc OTKERNEL := FALSE}
  179. {$setc PM_USE_SESSION_APIS := TRUE}
  180. {$setc TARGET_API_MAC_CARBON := TRUE}
  181. {$setc TARGET_API_MAC_OS8 := FALSE}
  182. {$setc TARGET_API_MAC_OSX := TRUE}
  183. {$setc TARGET_CARBON := TRUE}
  184. {$setc TARGET_CPU_68K := FALSE}
  185. {$setc TARGET_CPU_MIPS := FALSE}
  186. {$setc TARGET_CPU_SPARC := FALSE}
  187. {$setc TARGET_OS_UNIX := FALSE}
  188. {$setc TARGET_OS_WIN32 := FALSE}
  189. {$setc TARGET_RT_MAC_68881 := FALSE}
  190. {$setc TARGET_RT_MAC_CFM := FALSE}
  191. {$setc TARGET_RT_MAC_MACHO := TRUE}
  192. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  193. {$setc TYPE_BOOL := FALSE}
  194. {$setc TYPE_EXTENDED := FALSE}
  195. {$setc TYPE_LONGLONG := TRUE}
  196. uses MacTypes,Movies,QuickTimeVR;
  197. {$endc} {not MACOSALLINCLUDE}
  198. {$ifc TARGET_OS_MAC}
  199. {$ALIGN MAC68K}
  200. { QuickTime is not available to 64-bit clients }
  201. {$ifc not TARGET_CPU_64}
  202. { File Format Version numbers }
  203. const
  204. kQTVRMajorVersion = 2;
  205. const
  206. kQTVRMinorVersion = 0;
  207. { User data type for the Movie Controller type specifier}
  208. const
  209. kQTControllerType = kQTVRControllerSubType; { Atom & ID of where our}
  210. kQTControllerID = 1; { ...controller name is stored}
  211. { VRWorld atom types}
  212. const
  213. kQTVRWorldHeaderAtomType = FourCharCode('vrsc');
  214. kQTVRImagingParentAtomType = FourCharCode('imgp');
  215. kQTVRPanoImagingAtomType = FourCharCode('impn');
  216. kQTVRObjectImagingAtomType = FourCharCode('imob');
  217. kQTVRNodeParentAtomType = FourCharCode('vrnp');
  218. kQTVRNodeIDAtomType = FourCharCode('vrni');
  219. kQTVRNodeLocationAtomType = FourCharCode('nloc');
  220. kQTVRCursorParentAtomType = FourCharCode('vrcp'); { New with 2.1}
  221. kQTVRCursorAtomType = FourCharCode('CURS'); { New with 2.1}
  222. kQTVRColorCursorAtomType = FourCharCode('crsr'); { New with 2.1}
  223. { NodeInfo atom types}
  224. const
  225. kQTVRNodeHeaderAtomType = FourCharCode('ndhd');
  226. kQTVRHotSpotParentAtomType = FourCharCode('hspa');
  227. kQTVRHotSpotAtomType = FourCharCode('hots');
  228. kQTVRHotSpotInfoAtomType = FourCharCode('hsin');
  229. kQTVRLinkInfoAtomType = FourCharCode('link');
  230. { Miscellaneous atom types}
  231. const
  232. kQTVRStringAtomType = FourCharCode('vrsg');
  233. kQTVRStringEncodingAtomType = FourCharCode('vrse'); { New with 2.1}
  234. kQTVRPanoSampleDataAtomType = FourCharCode('pdat');
  235. kQTVRObjectInfoAtomType = FourCharCode('obji');
  236. kQTVRImageTrackRefAtomType = FourCharCode('imtr'); { Parent is kQTVRObjectInfoAtomType. Required if track ref is not 1 as required by 2.0 format.}
  237. kQTVRHotSpotTrackRefAtomType = FourCharCode('hstr'); { Parent is kQTVRObjectInfoAtomType. Required if track ref is not 1 as required by 2.0 format.}
  238. kQTVRAngleRangeAtomType = FourCharCode('arng');
  239. kQTVRTrackRefArrayAtomType = FourCharCode('tref');
  240. kQTVRPanConstraintAtomType = FourCharCode('pcon');
  241. kQTVRTiltConstraintAtomType = FourCharCode('tcon');
  242. kQTVRFOVConstraintAtomType = FourCharCode('fcon');
  243. kQTVRCubicViewAtomType = FourCharCode('cuvw'); { New with 5.0}
  244. kQTVRCubicFaceDataAtomType = FourCharCode('cufa'); { New with 5.0}
  245. const
  246. kQTVRObjectInfoAtomID = 1;
  247. kQTVRObjectImageTrackRefAtomID = 1; { New with 2.1, it adds a track reference to select between multiple image tracks}
  248. kQTVRObjectHotSpotTrackRefAtomID = 1; { New with 2.1, it adds a track reference to select between multiple hotspot tracks}
  249. { Track reference types}
  250. const
  251. kQTVRImageTrackRefType = FourCharCode('imgt');
  252. kQTVRHotSpotTrackRefType = FourCharCode('hott');
  253. { Old hot spot types}
  254. const
  255. kQTVRHotSpotNavigableType = FourCharCode('navg');
  256. { Valid bits used in QTVRLinkHotSpotAtom}
  257. const
  258. kQTVRValidPan = 1 shl 0;
  259. kQTVRValidTilt = 1 shl 1;
  260. kQTVRValidFOV = 1 shl 2;
  261. kQTVRValidViewCenter = 1 shl 3;
  262. { Values for flags field in QTVRPanoSampleAtom}
  263. const
  264. kQTVRPanoFlagHorizontal = 1 shl 0;
  265. kQTVRPanoFlagLast = 1 shl 31;
  266. { Values for locationFlags field in QTVRNodeLocationAtom}
  267. const
  268. kQTVRSameFile = 0;
  269. {$endc} {not TARGET_CPU_64}
  270. { Header for QTVR track's Sample Description record (vrWorld atom container is appended)}
  271. type
  272. QTVRSampleDescription = record
  273. descSize: UInt32; { total size of the QTVRSampleDescription}
  274. descType: UInt32; { must be 'qtvr'}
  275. reserved1: UInt32; { must be zero}
  276. reserved2: UInt16; { must be zero}
  277. dataRefIndex: UInt16; { must be zero}
  278. data: UInt32; { Will be extended to hold vrWorld QTAtomContainer}
  279. end;
  280. QTVRSampleDescriptionPtr = ^QTVRSampleDescription;
  281. type
  282. QTVRSampleDescriptionHandle = ^QTVRSampleDescriptionPtr;
  283. {$ifc not TARGET_CPU_64}
  284. {
  285. =================================================================================================
  286. Definitions and structures used in the VRWorld QTAtomContainer
  287. -------------------------------------------------------------------------------------------------
  288. }
  289. type
  290. QTVRStringAtom = record
  291. stringUsage: UInt16;
  292. stringLength: UInt16;
  293. theString: packed array [0..3] of UInt8; { field previously named "string" }
  294. end;
  295. QTVRStringAtomPtr = ^QTVRStringAtom;
  296. type
  297. QTVRWorldHeaderAtom = record
  298. majorVersion: UInt16;
  299. minorVersion: UInt16;
  300. nameAtomID: QTAtomID;
  301. defaultNodeID: UInt32;
  302. vrWorldFlags: UInt32;
  303. reserved1: UInt32;
  304. reserved2: UInt32;
  305. end;
  306. QTVRWorldHeaderAtomPtr = ^QTVRWorldHeaderAtom;
  307. { Valid bits used in QTVRPanoImagingAtom}
  308. const
  309. kQTVRValidCorrection = 1 shl 0;
  310. kQTVRValidQuality = 1 shl 1;
  311. kQTVRValidDirectDraw = 1 shl 2;
  312. kQTVRValidFirstExtraProperty = 1 shl 3;
  313. type
  314. QTVRPanoImagingAtom = record
  315. majorVersion: UInt16;
  316. minorVersion: UInt16;
  317. imagingMode: UInt32;
  318. imagingValidFlags: UInt32;
  319. correction: UInt32;
  320. quality: UInt32;
  321. directDraw: UInt32;
  322. imagingProperties: array [0..5] of UInt32; { for future properties}
  323. reserved1: UInt32;
  324. reserved2: UInt32;
  325. end;
  326. QTVRPanoImagingAtomPtr = ^QTVRPanoImagingAtom;
  327. type
  328. QTVRNodeLocationAtom = record
  329. majorVersion: UInt16;
  330. minorVersion: UInt16;
  331. nodeType: OSType;
  332. locationFlags: UInt32;
  333. locationData: UInt32;
  334. reserved1: UInt32;
  335. reserved2: UInt32;
  336. end;
  337. QTVRNodeLocationAtomPtr = ^QTVRNodeLocationAtom;
  338. {
  339. =================================================================================================
  340. Definitions and structures used in the Nodeinfo QTAtomContainer
  341. -------------------------------------------------------------------------------------------------
  342. }
  343. type
  344. QTVRNodeHeaderAtom = record
  345. majorVersion: UInt16;
  346. minorVersion: UInt16;
  347. nodeType: OSType;
  348. nodeID: QTAtomID;
  349. nameAtomID: QTAtomID;
  350. commentAtomID: QTAtomID;
  351. reserved1: UInt32;
  352. reserved2: UInt32;
  353. end;
  354. QTVRNodeHeaderAtomPtr = ^QTVRNodeHeaderAtom;
  355. type
  356. QTVRAngleRangeAtom = record
  357. minimumAngle: Float32;
  358. maximumAngle: Float32;
  359. end;
  360. QTVRAngleRangeAtomPtr = ^QTVRAngleRangeAtom;
  361. type
  362. QTVRHotSpotInfoAtom = record
  363. majorVersion: UInt16;
  364. minorVersion: UInt16;
  365. hotSpotType: OSType;
  366. nameAtomID: QTAtomID;
  367. commentAtomID: QTAtomID;
  368. cursorID: array [0..2] of SInt32;
  369. { canonical view for this hot spot}
  370. bestPan: Float32;
  371. bestTilt: Float32;
  372. bestFOV: Float32;
  373. bestViewCenter: QTVRFloatPoint;
  374. { Bounding box for this hot spot}
  375. hotSpotRect: Rect;
  376. flags: UInt32;
  377. reserved1: UInt32;
  378. reserved2: UInt32;
  379. end;
  380. QTVRHotSpotInfoAtomPtr = ^QTVRHotSpotInfoAtom;
  381. type
  382. QTVRLinkHotSpotAtom = record
  383. majorVersion: UInt16;
  384. minorVersion: UInt16;
  385. toNodeID: UInt32;
  386. fromValidFlags: UInt32;
  387. fromPan: Float32;
  388. fromTilt: Float32;
  389. fromFOV: Float32;
  390. fromViewCenter: QTVRFloatPoint;
  391. toValidFlags: UInt32;
  392. toPan: Float32;
  393. toTilt: Float32;
  394. toFOV: Float32;
  395. toViewCenter: QTVRFloatPoint;
  396. distance: Float32;
  397. flags: UInt32;
  398. reserved1: UInt32;
  399. reserved2: UInt32;
  400. end;
  401. QTVRLinkHotSpotAtomPtr = ^QTVRLinkHotSpotAtom;
  402. {
  403. =================================================================================================
  404. Definitions and structures used in Panorama and Object tracks
  405. -------------------------------------------------------------------------------------------------
  406. }
  407. type
  408. QTVRPanoSampleAtom = record
  409. majorVersion: UInt16;
  410. minorVersion: UInt16;
  411. imageRefTrackIndex: UInt32; { track reference index of the full res image track}
  412. hotSpotRefTrackIndex: UInt32; { track reference index of the full res hot spot track}
  413. minPan: Float32;
  414. maxPan: Float32;
  415. minTilt: Float32;
  416. maxTilt: Float32;
  417. minFieldOfView: Float32;
  418. maxFieldOfView: Float32;
  419. defaultPan: Float32;
  420. defaultTilt: Float32;
  421. defaultFieldOfView: Float32;
  422. { Info for highest res version of image track}
  423. imageSizeX: UInt32; { pixel width of the panorama (e.g. 768)}
  424. imageSizeY: UInt32; { pixel height of the panorama (e.g. 2496)}
  425. imageNumFramesX: UInt16; { diced frames wide (e.g. 1)}
  426. imageNumFramesY: UInt16; { diced frames high (e.g. 24)}
  427. { Info for highest res version of hotSpot track}
  428. hotSpotSizeX: UInt32; { pixel width of the hot spot panorama (e.g. 768)}
  429. hotSpotSizeY: UInt32; { pixel height of the hot spot panorama (e.g. 2496)}
  430. hotSpotNumFramesX: UInt16; { diced frames wide (e.g. 1)}
  431. hotSpotNumFramesY: UInt16; { diced frames high (e.g. 24)}
  432. flags: UInt32;
  433. panoType: OSType;
  434. reserved2: UInt32;
  435. end;
  436. QTVRPanoSampleAtomPtr = ^QTVRPanoSampleAtom;
  437. {
  438. View atom for cubes (since same fields in QTVRPanoSampleAtom are set to special
  439. values for backwards compatibility and hence are ignored by the cubic engine)
  440. }
  441. type
  442. QTVRCubicViewAtom = record
  443. minPan: Float32;
  444. maxPan: Float32;
  445. minTilt: Float32;
  446. maxTilt: Float32;
  447. minFieldOfView: Float32;
  448. maxFieldOfView: Float32;
  449. defaultPan: Float32;
  450. defaultTilt: Float32;
  451. defaultFieldOfView: Float32;
  452. end;
  453. QTVRCubicViewAtomPtr = ^QTVRCubicViewAtom;
  454. type
  455. QTVRCubicFaceData = record
  456. orientation: array [0..4-1] of Float32; { WXYZ quaternion of absolute orientation}
  457. center: array [0..2-1] of Float32; { Center of image relative to center of projection (default = (0,0)) in normalized units}
  458. aspect: Float32; { aspect>1 => tall pixels; aspect <1 => squat pixels (default = 1)}
  459. skew: Float32; { skew x by y (default = 0)}
  460. end;
  461. QTVRCubicFaceDataPtr = ^QTVRCubicFaceData;
  462. { Special resolution values for the Image Track Reference Atoms. Use only one value per track reference.}
  463. const
  464. kQTVRFullTrackRes = kQTVRFullRes;
  465. kQTVRHalfTrackRes = kQTVRHalfRes;
  466. kQTVRQuarterTrackRes = kQTVRQuarterRes;
  467. kQTVRPreviewTrackRes = $8000;
  468. type
  469. QTVRTrackRefEntryPtr = ^QTVRTrackRefEntry;
  470. QTVRTrackRefEntry = record
  471. trackRefType: UInt32;
  472. trackResolution: UInt16;
  473. trackRefIndex: UInt32;
  474. end;
  475. {
  476. =================================================================================================
  477. Object File format 2.0
  478. -------------------------------------------------------------------------------------------------
  479. }
  480. const
  481. kQTVRObjectAnimateViewFramesOn = 1 shl 0;
  482. kQTVRObjectPalindromeViewFramesOn = 1 shl 1;
  483. kQTVRObjectStartFirstViewFrameOn = 1 shl 2;
  484. kQTVRObjectAnimateViewsOn = 1 shl 3;
  485. kQTVRObjectPalindromeViewsOn = 1 shl 4;
  486. kQTVRObjectSyncViewToFrameRate = 1 shl 5;
  487. kQTVRObjectDontLoopViewFramesOn = 1 shl 6;
  488. kQTVRObjectPlayEveryViewFrameOn = 1 shl 7;
  489. kQTVRObjectStreamingViewsOn = 1 shl 8;
  490. const
  491. kQTVRObjectWrapPanOn = 1 shl 0;
  492. kQTVRObjectWrapTiltOn = 1 shl 1;
  493. kQTVRObjectCanZoomOn = 1 shl 2;
  494. kQTVRObjectReverseHControlOn = 1 shl 3;
  495. kQTVRObjectReverseVControlOn = 1 shl 4;
  496. kQTVRObjectSwapHVControlOn = 1 shl 5;
  497. kQTVRObjectTranslationOn = 1 shl 6;
  498. const
  499. kGrabberScrollerUI = 1; { "Object" }
  500. kOldJoyStickUI = 2; { "1.0 Object as Scene" }
  501. kJoystickUI = 3; { "Object In Scene"}
  502. kGrabberUI = 4; { "Grabber only"}
  503. kAbsoluteUI = 5; { "Absolute pointer"}
  504. type
  505. QTVRObjectSampleAtom = record
  506. majorVersion: UInt16; { kQTVRMajorVersion}
  507. minorVersion: UInt16; { kQTVRMinorVersion}
  508. movieType: UInt16; { ObjectUITypes}
  509. viewStateCount: UInt16; { The number of view states 1 based}
  510. defaultViewState: UInt16; { The default view state number. The number must be 1 to viewStateCount}
  511. mouseDownViewState: UInt16; { The mouse down view state. The number must be 1 to viewStateCount}
  512. viewDuration: UInt32; { The duration of each view including all animation frames in a view}
  513. columns: UInt32; { Number of columns in movie}
  514. rows: UInt32; { Number rows in movie}
  515. mouseMotionScale: Float32; { 180.0 for kStandardObject or kQTVRObjectInScene, actual degrees for kOldNavigableMovieScene.}
  516. minPan: Float32; { Start horizontal pan angle in degrees}
  517. maxPan: Float32; { End horizontal pan angle in degrees}
  518. defaultPan: Float32; { Initial horizontal pan angle in degrees (poster view)}
  519. minTilt: Float32; { Start vertical pan angle in degrees}
  520. maxTilt: Float32; { End vertical pan angle in degrees}
  521. defaultTilt: Float32; { Initial vertical pan angle in degrees (poster view) }
  522. minFieldOfView: Float32; { minimum field of view setting (appears as the maximum zoom effect) must be >= 1}
  523. fieldOfView: Float32; { the field of view range must be >= 1}
  524. defaultFieldOfView: Float32; { must be in minFieldOfView and maxFieldOfView range inclusive}
  525. defaultViewCenterH: Float32;
  526. defaultViewCenterV: Float32;
  527. viewRate: Float32;
  528. frameRate: Float32;
  529. animationSettings: UInt32; { 32 reserved bit fields}
  530. controlSettings: UInt32; { 32 reserved bit fields}
  531. end;
  532. QTVRObjectSampleAtomPtr = ^QTVRObjectSampleAtom;
  533. {
  534. =================================================================================================
  535. QuickTime VR Authoring Components
  536. -------------------------------------------------------------------------------------------------
  537. }
  538. {
  539. ComponentDescription constants for QTVR Export components
  540. (componentType = MovieExportType; componentSubType = MovieFileType)
  541. }
  542. const
  543. kQTVRFlattenerManufacturer = FourCharCode('vrwe'); { aka QTVRFlattenerType}
  544. kQTVRSplitterManufacturer = FourCharCode('vrsp');
  545. kQTVRObjExporterManufacturer = FourCharCode('vrob');
  546. { QuickTime VR Flattener atom types}
  547. const
  548. kQTVRFlattenerSettingsParentAtomType = FourCharCode('VRWe'); { parent of settings atoms (other than compression)}
  549. kQTVRFlattenerPreviewResAtomType = FourCharCode('PRes'); { preview resolution Int16}
  550. kQTVRFlattenerImportSpecAtomType = FourCharCode('ISpe'); { import file spec FSSpec}
  551. kQTVRFlattenerCreatePreviewAtomType = FourCharCode('Prev'); { Boolean}
  552. kQTVRFlattenerImportPreviewAtomType = FourCharCode('IPre'); { Boolean}
  553. kQTVRFlattenerBlurPreviewAtomType = FourCharCode('Blur'); { Boolean}
  554. { QuickTime VR Splitter atom types}
  555. const
  556. kQTVRSplitterSettingsParentAtomType = FourCharCode('VRSp'); { parent of settings atoms (other than compression)}
  557. kQTVRSplitterGenerateHTMLAtomType = FourCharCode('Ghtm'); { Boolean}
  558. kQTVRSplitterOverwriteFilesAtomType = FourCharCode('Owfi'); { Boolean}
  559. kQTVRSplitterUseFlattenerAtomType = FourCharCode('Usef'); { Boolean}
  560. kQTVRSplitterShowControllerAtomType = FourCharCode('Shco'); { Boolean}
  561. kQTVRSplitterTargetMyselfAtomType = FourCharCode('Tgtm'); { Boolean}
  562. { QuickTime VR Object Exporter atom types}
  563. const
  564. kQTVRObjExporterSettingsBlockSize = FourCharCode('bsiz'); { block size for compression}
  565. kQTVRObjExporterSettingsTargetSize = FourCharCode('tsiz'); { target file size}
  566. {$endc} {not TARGET_CPU_64}
  567. {$endc} {TARGET_OS_MAC}
  568. {$ifc not defined MACOSALLINCLUDE or not MACOSALLINCLUDE}
  569. end.
  570. {$endc} {not MACOSALLINCLUDE}