QDOffscreen.pas 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448
  1. {
  2. File: QDOffscreen.p
  3. Contains: Quickdraw Offscreen GWorld Interfaces.
  4. Version: Technology: Mac OS 8
  5. Release: Universal Interfaces 3.4.2
  6. Copyright: © 1985-2002 by Apple Computer, Inc., all rights reserved
  7. Bugs?: For bug reports, consult the following page on
  8. the World Wide Web:
  9. http://www.freepascal.org/bugs.html
  10. }
  11. {
  12. Modified for use with Free Pascal
  13. Version 200
  14. Please report any bugs to <[email protected]>
  15. }
  16. {$mode macpas}
  17. {$packenum 1}
  18. {$macro on}
  19. {$inline on}
  20. {$CALLING MWPASCAL}
  21. unit QDOffscreen;
  22. interface
  23. {$setc UNIVERSAL_INTERFACES_VERSION := $0342}
  24. {$setc GAP_INTERFACES_VERSION := $0200}
  25. {$ifc not defined USE_CFSTR_CONSTANT_MACROS}
  26. {$setc USE_CFSTR_CONSTANT_MACROS := TRUE}
  27. {$endc}
  28. {$ifc defined CPUPOWERPC and defined CPUI386}
  29. {$error Conflicting initial definitions for CPUPOWERPC and CPUI386}
  30. {$endc}
  31. {$ifc defined FPC_BIG_ENDIAN and defined FPC_LITTLE_ENDIAN}
  32. {$error Conflicting initial definitions for FPC_BIG_ENDIAN and FPC_LITTLE_ENDIAN}
  33. {$endc}
  34. {$ifc not defined __ppc__ and defined CPUPOWERPC}
  35. {$setc __ppc__ := 1}
  36. {$elsec}
  37. {$setc __ppc__ := 0}
  38. {$endc}
  39. {$ifc not defined __i386__ and defined CPUI386}
  40. {$setc __i386__ := 1}
  41. {$elsec}
  42. {$setc __i386__ := 0}
  43. {$endc}
  44. {$ifc defined __ppc__ and __ppc__ and defined __i386__ and __i386__}
  45. {$error Conflicting definitions for __ppc__ and __i386__}
  46. {$endc}
  47. {$ifc defined __ppc__ and __ppc__}
  48. {$setc TARGET_CPU_PPC := TRUE}
  49. {$setc TARGET_CPU_X86 := FALSE}
  50. {$elifc defined __i386__ and __i386__}
  51. {$setc TARGET_CPU_PPC := FALSE}
  52. {$setc TARGET_CPU_X86 := TRUE}
  53. {$elsec}
  54. {$error Neither __ppc__ nor __i386__ is defined.}
  55. {$endc}
  56. {$setc TARGET_CPU_PPC_64 := FALSE}
  57. {$ifc defined FPC_BIG_ENDIAN}
  58. {$setc TARGET_RT_BIG_ENDIAN := TRUE}
  59. {$setc TARGET_RT_LITTLE_ENDIAN := FALSE}
  60. {$elifc defined FPC_LITTLE_ENDIAN}
  61. {$setc TARGET_RT_BIG_ENDIAN := FALSE}
  62. {$setc TARGET_RT_LITTLE_ENDIAN := TRUE}
  63. {$elsec}
  64. {$error Neither FPC_BIG_ENDIAN nor FPC_LITTLE_ENDIAN are defined.}
  65. {$endc}
  66. {$setc ACCESSOR_CALLS_ARE_FUNCTIONS := TRUE}
  67. {$setc CALL_NOT_IN_CARBON := FALSE}
  68. {$setc OLDROUTINENAMES := FALSE}
  69. {$setc OPAQUE_TOOLBOX_STRUCTS := TRUE}
  70. {$setc OPAQUE_UPP_TYPES := TRUE}
  71. {$setc OTCARBONAPPLICATION := TRUE}
  72. {$setc OTKERNEL := FALSE}
  73. {$setc PM_USE_SESSION_APIS := TRUE}
  74. {$setc TARGET_API_MAC_CARBON := TRUE}
  75. {$setc TARGET_API_MAC_OS8 := FALSE}
  76. {$setc TARGET_API_MAC_OSX := TRUE}
  77. {$setc TARGET_CARBON := TRUE}
  78. {$setc TARGET_CPU_68K := FALSE}
  79. {$setc TARGET_CPU_MIPS := FALSE}
  80. {$setc TARGET_CPU_SPARC := FALSE}
  81. {$setc TARGET_OS_MAC := TRUE}
  82. {$setc TARGET_OS_UNIX := FALSE}
  83. {$setc TARGET_OS_WIN32 := FALSE}
  84. {$setc TARGET_RT_MAC_68881 := FALSE}
  85. {$setc TARGET_RT_MAC_CFM := FALSE}
  86. {$setc TARGET_RT_MAC_MACHO := TRUE}
  87. {$setc TYPED_FUNCTION_POINTERS := TRUE}
  88. {$setc TYPE_BOOL := FALSE}
  89. {$setc TYPE_EXTENDED := FALSE}
  90. {$setc TYPE_LONGLONG := TRUE}
  91. uses MacTypes,MacErrors,Quickdraw;
  92. {$ALIGN MAC68K}
  93. {
  94. NOTE: GWorldFlags is no longer defined as a set. Instead it is a SInt32
  95. and the set elements are bit masks. You will need to use Bit-OR's
  96. to build a set and Bit-AND's to test sets.
  97. }
  98. const
  99. pixPurgeBit = 0;
  100. noNewDeviceBit = 1;
  101. useTempMemBit = 2;
  102. keepLocalBit = 3;
  103. useDistantHdwrMemBit = 4;
  104. useLocalHdwrMemBit = 5;
  105. pixelsPurgeableBit = 6;
  106. pixelsLockedBit = 7;
  107. mapPixBit = 16;
  108. newDepthBit = 17;
  109. alignPixBit = 18;
  110. newRowBytesBit = 19;
  111. reallocPixBit = 20;
  112. clipPixBit = 28;
  113. stretchPixBit = 29;
  114. ditherPixBit = 30;
  115. gwFlagErrBit = 31;
  116. pixPurge = $00000001;
  117. noNewDevice = $00000002;
  118. useTempMem = $00000004;
  119. keepLocal = $00000008;
  120. useDistantHdwrMem = $00000010;
  121. useLocalHdwrMem = $00000020;
  122. pixelsPurgeable = $00000040;
  123. pixelsLocked = $00000080;
  124. kAllocDirectDrawSurface = $00004000;
  125. mapPix = $00010000;
  126. newDepth = $00020000;
  127. alignPix = $00040000;
  128. newRowBytes = $00080000;
  129. reallocPix = $00100000;
  130. clipPix = $10000000;
  131. stretchPix = $20000000;
  132. ditherPix = $40000000;
  133. gwFlagErr = $80000000;
  134. type
  135. GWorldFlags = UInt32;
  136. { Type definition of a GWorldPtr }
  137. GWorldPtr = CGrafPtr;
  138. {
  139. * NewGWorld()
  140. *
  141. * Availability:
  142. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  143. * CarbonLib: in CarbonLib 1.0 and later
  144. * Mac OS X: in version 10.0 and later
  145. }
  146. function NewGWorld(var offscreenGWorld: GWorldPtr; PixelDepth: SInt16; const (*var*) boundsRect: Rect; cTable: CTabHandle; aGDevice: GDHandle; flags: GWorldFlags): QDErr; external name '_NewGWorld';
  147. { GDevice attribute bits for Carbon and QuickTime 3.0 }
  148. const
  149. deviceIsIndirect = $00000001;
  150. deviceNeedsLock = $00000002;
  151. deviceIsStatic = $00000004;
  152. deviceIsExternalBuffer = $00000008;
  153. deviceIsDDSurface = $00000010;
  154. deviceIsDCISurface = $00000020;
  155. deviceIsGDISurface = $00000040;
  156. deviceIsAScreen = $00000080;
  157. deviceIsOverlaySurface = $00000100;
  158. {$ifc TARGET_OS_WIN32}
  159. {$ifc CALL_NOT_IN_CARBON}
  160. {
  161. * GetGDeviceSurface()
  162. *
  163. * Availability:
  164. * Non-Carbon CFM: not available
  165. * CarbonLib: not available
  166. * Mac OS X: not available
  167. }
  168. function GetGDeviceSurface(gdh: GDHandle): Ptr; external name '_GetGDeviceSurface';
  169. {
  170. * GetGDeviceAttributes()
  171. *
  172. * Availability:
  173. * Non-Carbon CFM: not available
  174. * CarbonLib: not available
  175. * Mac OS X: not available
  176. }
  177. function GetGDeviceAttributes(gdh: GDHandle): UInt32; external name '_GetGDeviceAttributes';
  178. { to allocate non-mac-rgb GWorlds use QTNewGWorld (ImageCompression.h) }
  179. {
  180. * NewGWorldFromHBITMAP()
  181. *
  182. * Availability:
  183. * Non-Carbon CFM: not available
  184. * CarbonLib: not available
  185. * Mac OS X: not available
  186. }
  187. function NewGWorldFromHBITMAP(var offscreenGWorld: GWorldPtr; cTable: CTabHandle; aGDevice: GDHandle; flags: GWorldFlags; newHBITMAP: UnivPtr; newHDC: UnivPtr): QDErr; external name '_NewGWorldFromHBITMAP';
  188. {$endc} {CALL_NOT_IN_CARBON}
  189. {$endc} {TARGET_OS_WIN32}
  190. {
  191. * NewGWorldFromPtr()
  192. *
  193. * Availability:
  194. * Non-Carbon CFM: not available
  195. * CarbonLib: in CarbonLib 1.1 and later
  196. * Mac OS X: in version 10.0 and later
  197. }
  198. function NewGWorldFromPtr(var offscreenGWorld: GWorldPtr; PixelFormat: UInt32; const (*var*) boundsRect: Rect; cTable: CTabHandle; aGDevice: GDHandle; flags: GWorldFlags; newBuffer: Ptr; rowBytes: SInt32): QDErr; external name '_NewGWorldFromPtr';
  199. {
  200. * LockPixels()
  201. *
  202. * Availability:
  203. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  204. * CarbonLib: in CarbonLib 1.0 and later
  205. * Mac OS X: in version 10.0 and later
  206. }
  207. function LockPixels(pm: PixMapHandle): boolean; external name '_LockPixels';
  208. {
  209. * UnlockPixels()
  210. *
  211. * Availability:
  212. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  213. * CarbonLib: in CarbonLib 1.0 and later
  214. * Mac OS X: in version 10.0 and later
  215. }
  216. procedure UnlockPixels(pm: PixMapHandle); external name '_UnlockPixels';
  217. {
  218. * UpdateGWorld()
  219. *
  220. * Availability:
  221. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  222. * CarbonLib: in CarbonLib 1.0 and later
  223. * Mac OS X: in version 10.0 and later
  224. }
  225. function UpdateGWorld(var offscreenGWorld: GWorldPtr; pixelDepth: SInt16; const (*var*) boundsRect: Rect; cTable: CTabHandle; aGDevice: GDHandle; flags: GWorldFlags): GWorldFlags; external name '_UpdateGWorld';
  226. {
  227. * DisposeGWorld()
  228. *
  229. * Availability:
  230. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  231. * CarbonLib: in CarbonLib 1.0 and later
  232. * Mac OS X: in version 10.0 and later
  233. }
  234. procedure DisposeGWorld(offscreenGWorld: GWorldPtr); external name '_DisposeGWorld';
  235. {
  236. * GetGWorld()
  237. *
  238. * Availability:
  239. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  240. * CarbonLib: in CarbonLib 1.0 and later
  241. * Mac OS X: in version 10.0 and later
  242. }
  243. procedure GetGWorld(var port: CGrafPtr; var gdh: GDHandle); external name '_GetGWorld';
  244. {
  245. * SetGWorld()
  246. *
  247. * Availability:
  248. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  249. * CarbonLib: in CarbonLib 1.0 and later
  250. * Mac OS X: in version 10.0 and later
  251. }
  252. procedure SetGWorld(port: CGrafPtr; gdh: GDHandle); external name '_SetGWorld';
  253. {
  254. * CTabChanged()
  255. *
  256. * Availability:
  257. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  258. * CarbonLib: in CarbonLib 1.0 and later
  259. * Mac OS X: in version 10.0 and later
  260. }
  261. procedure CTabChanged(ctab: CTabHandle); external name '_CTabChanged';
  262. {
  263. * PixPatChanged()
  264. *
  265. * Availability:
  266. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  267. * CarbonLib: in CarbonLib 1.0 and later
  268. * Mac OS X: in version 10.0 and later
  269. }
  270. procedure PixPatChanged(ppat: PixPatHandle); external name '_PixPatChanged';
  271. {
  272. * PortChanged()
  273. *
  274. * Availability:
  275. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  276. * CarbonLib: in CarbonLib 1.0 and later
  277. * Mac OS X: in version 10.0 and later
  278. }
  279. procedure PortChanged(port: GrafPtr); external name '_PortChanged';
  280. {
  281. * GDeviceChanged()
  282. *
  283. * Availability:
  284. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  285. * CarbonLib: in CarbonLib 1.0 and later
  286. * Mac OS X: in version 10.0 and later
  287. }
  288. procedure GDeviceChanged(gdh: GDHandle); external name '_GDeviceChanged';
  289. {
  290. * AllowPurgePixels()
  291. *
  292. * Availability:
  293. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  294. * CarbonLib: in CarbonLib 1.0 and later
  295. * Mac OS X: in version 10.0 and later
  296. }
  297. procedure AllowPurgePixels(pm: PixMapHandle); external name '_AllowPurgePixels';
  298. {
  299. * NoPurgePixels()
  300. *
  301. * Availability:
  302. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  303. * CarbonLib: in CarbonLib 1.0 and later
  304. * Mac OS X: in version 10.0 and later
  305. }
  306. procedure NoPurgePixels(pm: PixMapHandle); external name '_NoPurgePixels';
  307. {
  308. * GetPixelsState()
  309. *
  310. * Availability:
  311. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  312. * CarbonLib: in CarbonLib 1.0 and later
  313. * Mac OS X: in version 10.0 and later
  314. }
  315. function GetPixelsState(pm: PixMapHandle): GWorldFlags; external name '_GetPixelsState';
  316. {
  317. * SetPixelsState()
  318. *
  319. * Availability:
  320. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  321. * CarbonLib: in CarbonLib 1.0 and later
  322. * Mac OS X: in version 10.0 and later
  323. }
  324. procedure SetPixelsState(pm: PixMapHandle; state: GWorldFlags); external name '_SetPixelsState';
  325. {
  326. * GetPixBaseAddr()
  327. *
  328. * Availability:
  329. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  330. * CarbonLib: in CarbonLib 1.0 and later
  331. * Mac OS X: in version 10.0 and later
  332. }
  333. function GetPixBaseAddr(pm: PixMapHandle): Ptr; external name '_GetPixBaseAddr';
  334. {
  335. * GetPixRowBytes()
  336. *
  337. * Availability:
  338. * Non-Carbon CFM: in InterfaceLib 8.5 and later
  339. * CarbonLib: in CarbonLib 1.0 and later
  340. * Mac OS X: in version 10.0 and later
  341. }
  342. function GetPixRowBytes(pm: PixMapHandle): SInt32; external name '_GetPixRowBytes';
  343. {
  344. * NewScreenBuffer()
  345. *
  346. * Availability:
  347. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  348. * CarbonLib: in CarbonLib 1.0 and later
  349. * Mac OS X: in version 10.0 and later
  350. }
  351. function NewScreenBuffer(const (*var*) globalRect: Rect; purgeable: boolean; var gdh: GDHandle; var offscreenPixMap: PixMapHandle): QDErr; external name '_NewScreenBuffer';
  352. {
  353. * DisposeScreenBuffer()
  354. *
  355. * Availability:
  356. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  357. * CarbonLib: in CarbonLib 1.0 and later
  358. * Mac OS X: in version 10.0 and later
  359. }
  360. procedure DisposeScreenBuffer(offscreenPixMap: PixMapHandle); external name '_DisposeScreenBuffer';
  361. {
  362. * GetGWorldDevice()
  363. *
  364. * Availability:
  365. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  366. * CarbonLib: in CarbonLib 1.0 and later
  367. * Mac OS X: in version 10.0 and later
  368. }
  369. function GetGWorldDevice(offscreenGWorld: GWorldPtr): GDHandle; external name '_GetGWorldDevice';
  370. {
  371. * QDDone()
  372. *
  373. * Availability:
  374. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  375. * CarbonLib: in CarbonLib 1.0 and later
  376. * Mac OS X: in version 10.0 and later
  377. }
  378. function QDDone(port: GrafPtr): boolean; external name '_QDDone';
  379. {
  380. * OffscreenVersion()
  381. *
  382. * Availability:
  383. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  384. * CarbonLib: in CarbonLib 1.0 and later
  385. * Mac OS X: in version 10.0 and later
  386. }
  387. function OffscreenVersion: SInt32; external name '_OffscreenVersion';
  388. {
  389. * NewTempScreenBuffer()
  390. *
  391. * Availability:
  392. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  393. * CarbonLib: in CarbonLib 1.0 and later
  394. * Mac OS X: in version 10.0 and later
  395. }
  396. function NewTempScreenBuffer(const (*var*) globalRect: Rect; purgeable: boolean; var gdh: GDHandle; var offscreenPixMap: PixMapHandle): QDErr; external name '_NewTempScreenBuffer';
  397. {
  398. * PixMap32Bit()
  399. *
  400. * Availability:
  401. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  402. * CarbonLib: in CarbonLib 1.0 and later
  403. * Mac OS X: in version 10.0 and later
  404. }
  405. function PixMap32Bit(pmHandle: PixMapHandle): boolean; external name '_PixMap32Bit';
  406. {
  407. * GetGWorldPixMap()
  408. *
  409. * Availability:
  410. * Non-Carbon CFM: in InterfaceLib 7.1 and later
  411. * CarbonLib: in CarbonLib 1.0 and later
  412. * Mac OS X: in version 10.0 and later
  413. }
  414. function GetGWorldPixMap(offscreenGWorld: GWorldPtr): PixMapHandle; external name '_GetGWorldPixMap';
  415. {$ALIGN MAC68K}
  416. end.