ATSLayoutTypes.pas 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656
  1. {
  2. File: ATSLayoutTypes.p
  3. Contains: Apple Type Services layout public structures and constants.
  4. Version: Technology: Mac OS 9/Carbon
  5. Release: Universal Interfaces 3.4.2
  6. Copyright: © 1994-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 ATSLayoutTypes;
  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,SFNTLayoutTypes,ATSTypes;
  92. {$ALIGN MAC68K}
  93. { --------------------------------------------------------------------------- }
  94. { CONSTANTS and related scalar types }
  95. { --------------------------------------------------------------------------- }
  96. { Miscellaneous constants }
  97. const
  98. kATSUseGlyphAdvance = $7FFFFFFF; { assignment to use natural glyph advance value }
  99. kATSUseLineHeight = $7FFFFFFF; { assignment to use natural line ascent/descent values }
  100. kATSNoTracking = $80000000; { negativeInfinity }
  101. {
  102. * ATSULayoutOperationSelector
  103. *
  104. * Summary:
  105. * This is used to select which operations to override, or which
  106. * operation is currently being run.
  107. }
  108. type ATSULayoutOperationSelector = UInt32;
  109. const
  110. {
  111. * No Layout operation is currently selected.
  112. }
  113. kATSULayoutOperationNone = $00000000;
  114. {
  115. * Select the Justification operation.
  116. }
  117. kATSULayoutOperationJustification = $00000001;
  118. {
  119. * Select the character morphing operation.
  120. }
  121. kATSULayoutOperationMorph = $00000002;
  122. {
  123. * Select the kerning adjustment operation.
  124. }
  125. kATSULayoutOperationKerningAdjustment = $00000004;
  126. {
  127. * Select the baseline adjustment operation.
  128. }
  129. kATSULayoutOperationBaselineAdjustment = $00000008;
  130. {
  131. * Select the tracking adjustment operation.
  132. }
  133. kATSULayoutOperationTrackingAdjustment = $00000010;
  134. {
  135. * Select the period of time after ATSUI has finished all of it's
  136. * layout operations.
  137. }
  138. kATSULayoutOperationPostLayoutAdjustment = $00000020;
  139. kATSULayoutOperationAppleReserved = $FFFFFFC0;
  140. { ---------------------------------------------------------------------------- }
  141. {
  142. * ATSULayoutOperationCallbackStatus
  143. *
  144. * Summary:
  145. * One of these must be returned by a
  146. * ATSUDLayoutOperationOverrideUPP callback function in order to
  147. * indicate ATSUI's status.
  148. }
  149. type ATSULayoutOperationCallbackStatus = UInt32;
  150. const
  151. {
  152. * Return this if the callback function has totally handled the
  153. * operation which triggered the callback and does not need ATSUI to
  154. * run any further processing for the operation.
  155. }
  156. kATSULayoutOperationCallbackStatusHandled = $00000000;
  157. {
  158. * Return this if the callback function has not totally handled the
  159. * operation which triggered the callback and needs ATSUI to run it's
  160. * own processing.
  161. }
  162. kATSULayoutOperationCallbackStatusContinue = $00000001;
  163. { ---------------------------------------------------------------------------- }
  164. {
  165. * ATSLineLayoutOptions
  166. *
  167. * Summary:
  168. * ATSLineLayoutOptions are normally set in an ATSUTextLayout object
  169. * via the kATSULineLayoutOptionsTag layout control attribute. They
  170. * can also be set in an ATSLineLayoutParams structure.
  171. }
  172. type ATSLineLayoutOptions = UInt32;
  173. const
  174. {
  175. * No options specified.
  176. }
  177. kATSLineNoLayoutOptions = $00000000;
  178. {
  179. * This line option is no longer used.
  180. }
  181. kATSLineIsDisplayOnly = $00000001; { obsolete option }
  182. {
  183. * Specifies that no hangers to be formed on the line.
  184. }
  185. kATSLineHasNoHangers = $00000002;
  186. {
  187. * Specifies that no optical alignment to be performed on the line.
  188. }
  189. kATSLineHasNoOpticalAlignment = $00000004;
  190. {
  191. * Specifies that space charcters should not be treated as hangers.
  192. }
  193. kATSLineKeepSpacesOutOfMargin = $00000008;
  194. {
  195. * Specifies no post-compensation justification is to be performed.
  196. }
  197. kATSLineNoSpecialJustification = $00000010;
  198. {
  199. * Specifies that if the line is the last of a paragraph, it will not
  200. * get justified.
  201. }
  202. kATSLineLastNoJustification = $00000020;
  203. {
  204. * Specifies that the displayed line glyphs will adjust for device
  205. * metrics.
  206. }
  207. kATSLineFractDisable = $00000040;
  208. {
  209. * Specifies that the carets at the ends of the line will be
  210. * guarenteed to be perpendicular to the baseline.
  211. }
  212. kATSLineImposeNoAngleForEnds = $00000080;
  213. {
  214. * Highlights for the line end characters will be extended to 0 and
  215. * the specified line width.
  216. }
  217. kATSLineFillOutToWidth = $00000100;
  218. {
  219. * Specifies that the tab character width will be automatically
  220. * adjusted to fit the specified line width.
  221. }
  222. kATSLineTabAdjustEnabled = $00000200;
  223. {
  224. * Specifies that any leading value specified by a font will be
  225. * ignored.
  226. }
  227. kATSLineIgnoreFontLeading = $00000400;
  228. {
  229. * Specifies that ATS produce antialiased glyph images despite system
  230. * preferences or CGContext settings.
  231. }
  232. kATSLineApplyAntiAliasing = $00000800;
  233. {
  234. * Specifies that ATS turn-off antialiasing glyph imaging despite
  235. * system preferences or CGContext settings (negates
  236. * kATSLineApplyAntiAliasing bit if set).
  237. }
  238. kATSLineNoAntiAliasing = $00001000;
  239. {
  240. * Specifies that if the line width is not sufficient to hold all its
  241. * glyphs, glyph positions are allowed to extend beyond the line's
  242. * assigned width so negative justification is not used.
  243. }
  244. kATSLineDisableNegativeJustification = $00002000;
  245. {
  246. * Specifies that lines with any integer glyph positioning (due to
  247. * either any character non-antialiased or kATSLineFractDisable
  248. * specified), not automatically esthetically adjust individual
  249. * character positions while rendering to display.
  250. }
  251. kATSLineDisableAutoAdjustDisplayPos = $00004000;
  252. {
  253. * Specifies that rendering be done through Quickdraw (default
  254. * rendering in ATSUI is through CoreGraphics on MacOSX).
  255. }
  256. kATSLineUseQDRendering = $00008000;
  257. {
  258. * Specifies that any Justification operations will not be run.
  259. }
  260. kATSLineDisableAllJustification = $00010000;
  261. {
  262. * Specifies that any glyph morphing operations will not be run.
  263. }
  264. kATSLineDisableAllGlyphMorphing = $00020000;
  265. {
  266. * Specifies that any kerning adjustment operations will not be run.
  267. }
  268. kATSLineDisableAllKerningAdjustments = $00040000;
  269. {
  270. * Specifies that any baseline adjustment operations will not be run.
  271. }
  272. kATSLineDisableAllBaselineAdjustments = $00080000;
  273. {
  274. * Specifies that any tracking adjustment operations will not be run.
  275. }
  276. kATSLineDisableAllTrackingAdjustments = $00100000;
  277. {
  278. * Convenience constant for turning-off all adjustments.
  279. }
  280. kATSLineDisableAllLayoutOperations = kATSLineDisableAllJustification or kATSLineDisableAllGlyphMorphing or kATSLineDisableAllKerningAdjustments or kATSLineDisableAllBaselineAdjustments or kATSLineDisableAllTrackingAdjustments;
  281. {
  282. * Specifies to optimize for displaying text only. Note, rounded
  283. * device metrics will be used instead of fractional path metrics.
  284. }
  285. kATSLineUseDeviceMetrics = $01000000;
  286. {
  287. * Specifies that line breaking should occur at the nearest
  288. * character, not word. This could cause a word to be split among
  289. * multiple lines.
  290. }
  291. kATSLineBreakToNearestCharacter = $02000000;
  292. {
  293. * These bits are reserved by Apple and will result in a invalid
  294. * value error if attemped to set. Obsolete constants:
  295. }
  296. kATSLineAppleReserved = $FCE00000;
  297. { --------------------------------------------------------------------------- }
  298. {
  299. * ATSStyleRenderingOptions
  300. *
  301. * Summary:
  302. * ATSStyleRenderingOptions are set in the ATSUStyle object via the
  303. * attribute tag kATSUStyleRenderingOptions. They provide finer
  304. * control over how the style is rendered.
  305. }
  306. type ATSStyleRenderingOptions = UInt32;
  307. const
  308. {
  309. * No options specified.
  310. }
  311. kATSStyleNoOptions = $00000000;
  312. {
  313. * Specifies that ATS produce "unhinted" glyph outlines (default is
  314. * hinted glyph outlines).
  315. }
  316. kATSStyleNoHinting = $00000001;
  317. {
  318. * Specifies that ATS produce antialiased glyph images despite system
  319. * preferences or CGContext settings.
  320. }
  321. kATSStyleApplyAntiAliasing = $00000002;
  322. {
  323. * Specifies that ATS turn-off antialiasing glyph imaging despite
  324. * system preferences or CGContext settings (negates
  325. * kATSStyleApplyAntiAliasing bit if set).
  326. }
  327. kATSStyleNoAntiAliasing = $00000004;
  328. {
  329. * These bits are reserved by Apple and will result in a invalid
  330. * value error if attemped to set.
  331. }
  332. kATSStyleAppleReserved = $FFFFFFF8;
  333. {
  334. * (OBSOLETE) Specifies that ATS produce "hinted" glyph outlines (the
  335. * default behavior). THIS NAME IS OBSOLETE. DO NOT USE. It's only
  336. * left in for backwards compatibility.
  337. }
  338. kATSStyleApplyHints = kATSStyleNoOptions;
  339. {
  340. * ATSGlyphInfoFlags
  341. *
  342. * Summary:
  343. * ATSGlyphInfoFlags are set in the individual ATSLayoutRecord
  344. * structures and apply only to the ATSGlyphRef in that structure.
  345. * The are used by the layout engine to flag a glyph with specific
  346. * properties.
  347. }
  348. type ATSGlyphInfoFlags = UInt32;
  349. const
  350. {
  351. * These bits are Apple reserved and may result in an invalid value
  352. * error if attempted to set.
  353. }
  354. kATSGlyphInfoAppleReserved = $1FFBFFE8;
  355. {
  356. * The glyph attaches to another glyph.
  357. }
  358. kATSGlyphInfoIsAttachment = $80000000;
  359. {
  360. * The glyph can hang off left/top edge of line.
  361. }
  362. kATSGlyphInfoIsLTHanger = $40000000;
  363. {
  364. * The glyph can hang off right/bottom edge of line.
  365. }
  366. kATSGlyphInfoIsRBHanger = $20000000;
  367. {
  368. * The glyph is not really a glyph at all, but an end-marker designed
  369. * to allow the calculation of the previous glyph's advance.
  370. }
  371. kATSGlyphInfoTerminatorGlyph = $00080000;
  372. {
  373. * The glyph is a white space glyph.
  374. }
  375. kATSGlyphInfoIsWhiteSpace = $00040000;
  376. {
  377. * Glyph has a style specified imposed width (i.e. advance)
  378. }
  379. kATSGlyphInfoHasImposedWidth = $00000010;
  380. {
  381. * A three-bit mask, that can be used to get the size of the original
  382. * character that spawned this glyph. When a logical 'and' operation
  383. * with this mask and an ATSGlyphInfoFlags variable, it will yield
  384. * the size in bytes of the original character (0 - 7 bytes possible).
  385. }
  386. kATSGlyphInfoByteSizeMask = $00000007;
  387. { --------------------------------------------------------------------------- }
  388. {
  389. * Summary:
  390. * These values are passed into the ATSUGetGlyphBounds function to
  391. * indicate whether the width of the resulting typographic glyph
  392. * bounds will be determined using the caret origin, glyph origin in
  393. * device space, or glyph origin in fractional absolute positions
  394. }
  395. const
  396. {
  397. * Specifies that the width of the typographic glyph bounds will be
  398. * determined using the caret origin. The caret origin is halfway
  399. * between two characters.
  400. }
  401. kATSUseCaretOrigins = 0;
  402. {
  403. * Specifies that the width of the typographic glyph bounds will be
  404. * determined using the glyph origin in device space. This is useful
  405. * for adjusting text on the screen.
  406. }
  407. kATSUseDeviceOrigins = 1;
  408. {
  409. * Specifies that the width of the typographic glyph bounds will be
  410. * determined using the glyph origin in fractional absolute
  411. * positions, which are uncorrected for device display. This provides
  412. * the ideal position of laid-out text and is useful for scaling text
  413. * on the screen. This origin is also used to get the width of the
  414. * typographic bounding rectangle when you call ATSUMeasureText.
  415. }
  416. kATSUseFractionalOrigins = 2;
  417. kATSUseOriginFlags = 3;
  418. { --------------------------------------------------------------------------- }
  419. { STRUCTURED TYPES and related constants }
  420. { --------------------------------------------------------------------------- }
  421. {
  422. The ATSTrapezoid structure supplies a convenient container
  423. for glyph bounds in trapezoidal form.
  424. }
  425. type
  426. ATSTrapezoidPtr = ^ATSTrapezoid;
  427. ATSTrapezoid = record
  428. upperLeft: FixedPoint;
  429. upperRight: FixedPoint;
  430. lowerRight: FixedPoint;
  431. lowerLeft: FixedPoint;
  432. end;
  433. {
  434. The JustWidthDeltaEntryOverride structure specifies values for the grow and shrink case during
  435. justification, both on the left and on the right. It also contains flags. This particular structure
  436. is used for passing justification overrides to LLC. For further sfnt resource 'just' table
  437. constants and structures, see SFNTLayoutTypes.h.
  438. }
  439. ATSJustWidthDeltaEntryOverridePtr = ^ATSJustWidthDeltaEntryOverride;
  440. ATSJustWidthDeltaEntryOverride = record
  441. beforeGrowLimit: Fixed; { ems AW can grow by at most on LT }
  442. beforeShrinkLimit: Fixed; { ems AW can shrink by at most on LT }
  443. afterGrowLimit: Fixed; { ems AW can grow by at most on RB }
  444. afterShrinkLimit: Fixed; { ems AW can shrink by at most on RB }
  445. growFlags: JustificationFlags; { flags controlling grow case }
  446. shrinkFlags: JustificationFlags; { flags controlling shrink case }
  447. end;
  448. { The JustPriorityOverrides type is an array of 4 width delta records, one per priority level override. }
  449. ATSJustPriorityWidthDeltaOverrides = array [0..3] of ATSJustWidthDeltaEntryOverride;
  450. { --------------------------------------------------------------------------- }
  451. {
  452. * ATSULineRef
  453. *
  454. * Summary:
  455. * A reference to a line that is being laid out. This is passed into
  456. * the ATSUDirectLayoutOperationOverrideUPP callback function to be
  457. * used by the ATSUDirectGetLayoutDataArrayPtrFromLineRef function.
  458. * The only way to get a line ref is inside of the callback. The
  459. * only time the line ref is valid is inside of the callback.
  460. }
  461. type
  462. ATSULineRef = ^SInt32; { an opaque 32-bit type }
  463. { ---------------------------------------------------------------------------- }
  464. { DirectAccess Layout Callback Definitions }
  465. { ---------------------------------------------------------------------------- }
  466. {
  467. * ATSUDirectLayoutOperationOverrideProcPtr
  468. *
  469. * Summary:
  470. * Callback definition for a low-level adjustment routine hook.
  471. *
  472. * Discussion:
  473. * This callback can be set in an ATSUTextLayout object by setting
  474. * the attribute tag kATSULayoutOperationOverrideTag and passing in
  475. * a ATSULayoutOperationOverrideSpecifier structure into
  476. * ATSUSetLayoutAttribute. This callback will be called whenever an
  477. * ATSUI call triggers a re-layout for each operation it is
  478. * installed for. The operation that triggered the callback will be
  479. * set in the iCurrentOperation parameter. The callback function
  480. * defined by the developer is only required to do one thing: return
  481. * it's status to ATSUI as to what it has done. This is done via the
  482. * oCallbackStatus parameter. It needs to tell ATSUI if it had
  483. * handled the layout operation or if it still needs ATSUI to run
  484. * it's own processes. iOperationCallbackParameterPtr is there in
  485. * case there are ever any ATSUDirectLayoutOperationSelector which
  486. * require extra parameters to be passed into the callback function.
  487. * It is currently unused and will always be set to NULL. iRefCon is
  488. * the constant that is set in the ATSUTextLayout object that
  489. * spawned the operation by the ATSUSetTextLayoutRefCon() API.
  490. * Within the context of the callback itself, only a limited subset
  491. * of ATSUI APIs may be called. Basically, only the APIs that have
  492. * no chance of triggering a re-layout are allowed to be called. The
  493. * reason for this restriction is to prevent runaway recursion. Most
  494. * of the APIs that have "create", "get", or "copy" are safe. Any
  495. * attempt to call one of the restricted APIs will result in an
  496. * immediate return with the kATSUInvalidCallInsideCallbackErr
  497. * error. ATSULayoutOperationSelector and
  498. * ATSULayoutOperationCallbackStatus are defined in ATSLayoutTypes.i.
  499. }
  500. type ATSUDirectLayoutOperationOverrideProcPtr = function( iCurrentOperation: ATSULayoutOperationSelector; iLineRef: ATSULineRef; iRefCon: UInt32; iOperationCallbackParameterPtr: UnivPtr; var oCallbackStatus: ATSULayoutOperationCallbackStatus ): OSStatus;
  501. // Beats me what this translates to. If someone finds out they can tell me and we'll update it
  502. // typedef STACK_UPP_TYPE(ATSUDirectLayoutOperationOverrideProcPtr) ATSUDirectLayoutOperationOverrideUPP;
  503. type ATSUDirectLayoutOperationOverrideUPP = Ptr;
  504. {
  505. * NewATSUDirectLayoutOperationOverrideUPP()
  506. *
  507. * Availability:
  508. * Mac OS X: in version 10.2 and later in ApplicationServices.framework
  509. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
  510. * Non-Carbon CFM: available as macro/inline
  511. }
  512. // AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  513. function NewATSUDirectLayoutOperationOverrideUPP( userRoutine: ATSUDirectLayoutOperationOverrideProcPtr ): ATSUDirectLayoutOperationOverrideUPP; external name '_NewATSUDirectLayoutOperationOverrideUPP';
  514. {
  515. * DisposeATSUDirectLayoutOperationOverrideUPP()
  516. *
  517. * Availability:
  518. * Mac OS X: in version 10.2 and later in ApplicationServices.framework
  519. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
  520. * Non-Carbon CFM: available as macro/inline
  521. }
  522. // AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  523. procedure DisposeATSUDirectLayoutOperationOverrideUPP( userUPP: ATSUDirectLayoutOperationOverrideUPP ); external name '_DisposeATSUDirectLayoutOperationOverrideUPP';
  524. {
  525. * InvokeATSUDirectLayoutOperationOverrideUPP()
  526. *
  527. * Availability:
  528. * Mac OS X: in version 10.2 and later in ApplicationServices.framework
  529. * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later
  530. * Non-Carbon CFM: available as macro/inline
  531. }
  532. // AVAILABLE_MAC_OS_X_VERSION_10_2_AND_LATER
  533. function InvokeATSUDirectLayoutOperationOverrideUPP( iCurrentOperation: ATSULayoutOperationSelector; iLineRef: ATSULineRef; iRefCon: UInt32; iOperationCallbackParameterPtr: UnivPtr; var oCallbackStatus: ATSULayoutOperationCallbackStatus; userUPP: ATSUDirectLayoutOperationOverrideUPP ): OSStatus; external name '_InvokeATSUDirectLayoutOperationOverrideUPP';
  534. { ---------------------------------------------------------------------------- }
  535. {
  536. * ATSULayoutOperationOverrideSpecifier
  537. *
  538. * Summary:
  539. * This structure is used to install a callback for one or more
  540. * ATSUI operations. To do this, simply passed one of these
  541. * structure into the ATSUSetLayoutControls call with the
  542. * kATSULayoutOperationOverrideTag tag.
  543. }
  544. type
  545. ATSULayoutOperationOverrideSpecifier = record
  546. {
  547. * A bitfield containing the selector for the operations in which the
  548. * callback will be installed for.
  549. }
  550. operationSelector: ATSULayoutOperationSelector;
  551. overrideUPP: ATSUDirectLayoutOperationOverrideUPP;
  552. end;
  553. ATSULayoutOperationOverrideSpecifierPtr = ^ATSULayoutOperationOverrideSpecifier;
  554. {$ALIGN MAC68K}
  555. end.