ATSLayoutTypes.h
上传用户:xjjlds
上传日期:2015-12-05
资源大小:22823k
文件大小:6k
源码类别:

多媒体编程

开发平台:

Visual C++

  1. /*
  2.      File:       ATSLayoutTypes.h
  3.  
  4.      Contains:   Apple Text Services layout public structures and constants.
  5.  
  6.      Version:    Technology: Allegro
  7.                  Release:    QuickTime 6.0.2
  8.  
  9.      Copyright:  (c) 1994-2001 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:      For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __ATSLAYOUTTYPES__
  18. #define __ATSLAYOUTTYPES__
  19. #ifndef __MACTYPES__
  20. #include "MacTypes.h"
  21. #endif
  22. #ifndef __SFNTTYPES__
  23. #include "SFNTTypes.h"
  24. #endif
  25. #ifndef __SFNTLAYOUTTYPES__
  26. #include "SFNTLayoutTypes.h"
  27. #endif
  28. #if PRAGMA_ONCE
  29. #pragma once
  30. #endif
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34. #if PRAGMA_IMPORT
  35. #pragma import on
  36. #endif
  37. #if PRAGMA_STRUCT_ALIGN
  38.     #pragma options align=mac68k
  39. #elif PRAGMA_STRUCT_PACKPUSH
  40.     #pragma pack(push, 2)
  41. #elif PRAGMA_STRUCT_PACK
  42.     #pragma pack(2)
  43. #endif
  44. /* --------------------------------------------------------------------------- */
  45. /* CONSTANTS */
  46. /* --------------------------------------------------------------------------- */
  47. /* Miscellaneous constants */
  48. enum {
  49.     kATSItalicQDSkew            = (1 << 16) / 4,                /* fixed value of 0.25 */
  50.     kATSRadiansFactor           = 1144,                         /* fixed value of approx. pi/180 (0.0174560546875) */
  51.     kATSUseLineHeight           = 0x7FFFFFFF,                   /* assignment to use natural line ascent/descent values */
  52.     kATSNoTracking              = (long)0x80000000              /* negativeInfinity */
  53. };
  54. /* LineOptions flags */
  55. enum {
  56.     kATSLineNoLayoutOptions     = 0x00000000,                   /* no options */
  57.     kATSLineIsDisplayOnly       = 0x00000001,                   /* specifies to optimize for displaying text only */
  58.     kATSLineHasNoHangers        = 0x00000002,                   /* specifies that no hangers to be formed on the line */
  59.     kATSLineHasNoOpticalAlignment = 0x00000004,                 /* specifies that no optical alignment to be performed on the line */
  60.     kATSLineKeepSpacesOutOfMargin = 0x00000008,                 /* specifies that space charcters should not be treated as hangers */
  61.     kATSLineNoSpecialJustification = 0x00000010,                /* specifies no post-compensation justification is to be performed */
  62.     kATSLineLastNoJustification = 0x00000020,                   /* specifies that if the line is the last of a paragraph, it will not get justified */
  63.     kATSLineFractDisable        = 0x00000040,                   /* specifies that the displayed line glyphs will adjust for device metrics */
  64.     kATSLineImposeNoAngleForEnds = 0x00000080,                  /* specifies that the carets at the ends of the line will be guarenteed to be perpendicular to the baseline */
  65.     kATSLineFillOutToWidth      = 0x00000100,                   /* highlights for the line end characters will be extended to 0 and the specified line width */
  66.     kATSLineTabAdjustEnabled    = 0x00000200,                   /* specifies that the tab character width will be automatically adjusted to fit the specified line width */
  67.     kATSLineAppleReserved       = (long)0xFFFFFC00              /* these bits are reserved by Apple and will result in a invalid value error if attemped to set */
  68. };
  69. /* For accessing glyph bounds */
  70. enum {
  71.     kATSUseCaretOrigins         = 0,
  72.     kATSUseDeviceOrigins        = 1,
  73.     kATSUseFractionalOrigins    = 2,
  74.     kATSUseOriginFlags          = 3
  75. };
  76. /* --------------------------------------------------------------------------- */
  77. /* TYPES */
  78. /* --------------------------------------------------------------------------- */
  79. typedef UInt32                          ATSLineLayoutOptions;
  80. /*
  81.     Each individual glyph is assigned an index of its needed style
  82.     which could be changed during the layout process (in that case, the associated style's 
  83.     ATSStyleSetting styleFlags field would have its kStyleSynthesized bit set).
  84.     
  85. |*
  86.     The ATSTrapezoid structure supplies a convenient container
  87.     for glyph bounds in trapezoidal form.
  88. */
  89. struct ATSTrapezoid {
  90.     FixedPoint                      upperLeft;
  91.     FixedPoint                      upperRight;
  92.     FixedPoint                      lowerRight;
  93.     FixedPoint                      lowerLeft;
  94. };
  95. typedef struct ATSTrapezoid             ATSTrapezoid;
  96. /*
  97.     The JustWidthDeltaEntryOverride structure specifies values for the grow and shrink case during
  98.     justification, both on the left and on the right. It also contains flags.  This particular structure
  99.     is used for passing justification overrides to LLC.  For further sfnt resource 'just' table
  100.     constants and structures, see SFNTLayoutTypes.h.
  101. */
  102. struct ATSJustWidthDeltaEntryOverride {
  103.     Fixed                           beforeGrowLimit;            /* ems AW can grow by at most on LT */
  104.     Fixed                           beforeShrinkLimit;          /* ems AW can shrink by at most on LT */
  105.     Fixed                           afterGrowLimit;             /* ems AW can grow by at most on RB */
  106.     Fixed                           afterShrinkLimit;           /* ems AW can shrink by at most on RB */
  107.     JustificationFlags              growFlags;                  /* flags controlling grow case */
  108.     JustificationFlags              shrinkFlags;                /* flags controlling shrink case */
  109. };
  110. typedef struct ATSJustWidthDeltaEntryOverride ATSJustWidthDeltaEntryOverride;
  111. /* The JustPriorityOverrides type is an array of 4 width delta records, one per priority level override. */
  112. typedef ATSJustWidthDeltaEntryOverride  ATSJustPriorityWidthDeltaOverrides[4];
  113. /* --------------------------------------------------------------------------- */
  114. #if PRAGMA_STRUCT_ALIGN
  115.     #pragma options align=reset
  116. #elif PRAGMA_STRUCT_PACKPUSH
  117.     #pragma pack(pop)
  118. #elif PRAGMA_STRUCT_PACK
  119.     #pragma pack()
  120. #endif
  121. #ifdef PRAGMA_IMPORT_OFF
  122. #pragma import off
  123. #elif PRAGMA_IMPORT
  124. #pragma import reset
  125. #endif
  126. #ifdef __cplusplus
  127. }
  128. #endif
  129. #endif /* __ATSLAYOUTTYPES__ */