home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mod201j.zip / modula2.exe / os2api / fontfile.def < prev    next >
Text File  |  1994-07-06  |  13KB  |  312 lines

  1. DEFINITION MODULE FONTFILEFORMAT;
  2.  
  3. (************************************************************************
  4.   OS/2 2.x interface for Presentation Manager
  5.            type declarations for Fonts.
  6.  
  7.   Copyright (c) 1992, 1994 by Juergen Neuhoff
  8. *************************************************************************)
  9.  
  10. (*$XL+       Modula-2 language extensions: '_' allowed for symbol names *)
  11. (*$CDECL+    C-style procedures                                         *)
  12. (*$A         default alignment for record fields                        *)
  13.  
  14. FROM   OS2DEF  IMPORT TYPEPREFIX, PSZ, PANOSE;
  15.  
  16. TYPE
  17.   FOCAMETRICS                  = RECORD (* foca *)
  18.     CASE                         : TYPEPREFIX OF
  19.     | TRUE                       :
  20.       ulIdentity                 : LONGCARD;
  21.       ulSize                     : LONGCARD;
  22.       szFamilyname               : ARRAY [0..31] OF CHAR;
  23.       szFacename                 : ARRAY [0..31] OF CHAR;
  24.       usRegistryId               : INTEGER;
  25.       usCodePage                 : INTEGER;
  26.     | FALSE                      :
  27.       Identity                   : LONGCARD;
  28.       Size                       : LONGCARD;
  29.       FamilyName                 : ARRAY [0..31] OF CHAR;
  30.       Facename                   : ARRAY [0..31] OF CHAR;
  31.       RegistryId                 : INTEGER;
  32.       CodePage                   : INTEGER;
  33.     END;
  34.     yEmHeight                    : INTEGER;
  35.     yXHeight                     : INTEGER;
  36.     yMaxAscender                 : INTEGER;
  37.     yMaxDescender                : INTEGER;
  38.     yLowerCaseAscent             : INTEGER;
  39.     yLowerCaseDescent            : INTEGER;
  40.     yInternalLeading             : INTEGER;
  41.     yExternalLeading             : INTEGER;
  42.     xAveCharWidth                : INTEGER;
  43.     xMaxCharInc                  : INTEGER;
  44.     xEmInc                       : INTEGER;
  45.     yMaxBaselineExt              : INTEGER;
  46.     CASE                         : TYPEPREFIX OF
  47.     | TRUE                       :
  48.       sCharSlope                 : INTEGER;
  49.       sInlineDir                 : INTEGER;
  50.       sCharRot                   : INTEGER;
  51.       usWeightClass              : CARDINAL;
  52.       usWidthClass               : CARDINAL;
  53.     | FALSE                      :
  54.       CharSlope                  : INTEGER;
  55.       InlineDir                  : INTEGER;
  56.       CharRot                    : INTEGER;
  57.       WeightClass                : CARDINAL;
  58.       WidthClass                 : CARDINAL;
  59.     END;
  60.     xDeviceRes                   : INTEGER;
  61.     yDeviceRes                   : INTEGER;
  62.     CASE                         : TYPEPREFIX OF
  63.     | TRUE                       :
  64.       usFirstChar                : INTEGER;
  65.       usLastChar                 : INTEGER;
  66.       usDefaultChar              : INTEGER;
  67.       usBreakChar                : INTEGER;
  68.       usNominalPointSize         : INTEGER;
  69.       usMinimumPointSize         : INTEGER;
  70.       usMaximumPointSize         : INTEGER;
  71.       fsTypeFlags                : INTEGER;
  72.       fsDefn                     : INTEGER;
  73.       fsSelectionFlags           : INTEGER;
  74.       fsCapabilities             : INTEGER;
  75.     | FALSE                      :
  76.       FirstChar                  : INTEGER;
  77.       LastChar                   : INTEGER;
  78.       DefaultChar                : INTEGER;
  79.       BreakChar                  : INTEGER;
  80.       NominalPointSize           : INTEGER;
  81.       MinimumPointSize           : INTEGER;
  82.       MaximumPointSize           : INTEGER;
  83.       TypeFlags                  : INTEGER;
  84.       Defn                       : INTEGER;
  85.       SelectionFlags             : INTEGER;
  86.       Capabilities               : INTEGER;
  87.     END;
  88.     ySubscriptXSize              : INTEGER;
  89.     ySubscriptYSize              : INTEGER;
  90.     ySubscriptXOffset            : INTEGER;
  91.     ySubscriptYOffset            : INTEGER;
  92.     ySuperscriptXSize            : INTEGER;
  93.     ySuperscriptYSize            : INTEGER;
  94.     ySuperscriptXOffset          : INTEGER;
  95.     ySuperscriptYOffset          : INTEGER;
  96.     yUnderscoreSize              : INTEGER;
  97.     yUnderscorePosition          : INTEGER;
  98.     yStrikeoutSize               : INTEGER;
  99.     yStrikeoutPosition           : INTEGER;
  100.     CASE                         : TYPEPREFIX OF
  101.     | TRUE                       :
  102.       usKerningPairs             : INTEGER;
  103.       sFamilyClass               : INTEGER;
  104.       pszDeviceNameOffset        : PSZ;
  105.     | FALSE                      :
  106.       KerningPairs               : INTEGER;
  107.       FamilyClass                : INTEGER;
  108.       DeviceNameOffset           : PSZ;
  109.     END;                         END;
  110.   PFOCAMETRICS                 = POINTER TO FOCAMETRICS;
  111.  
  112. TYPE
  113.   FONTFILEMETRICS              = RECORD (* ffm *)
  114.     CASE                         : TYPEPREFIX OF
  115.     | TRUE                       :
  116.       ulIdentity                 : LONGCARD;
  117.       ulSize                     : LONGCARD;
  118.       szFamilyname               : ARRAY [0..31] OF CHAR;
  119.       szFacename                 : ARRAY [0..31] OF CHAR;
  120.       usRegistryId               : INTEGER;
  121.       usCodePage                 : INTEGER;
  122.     | FALSE                      :
  123.       Identity                   : LONGCARD;
  124.       Size                       : LONGCARD;
  125.       Familyname                 : ARRAY [0..31] OF CHAR;
  126.       Facename                   : ARRAY [0..31] OF CHAR;
  127.       RegistryId                 : INTEGER;
  128.       CodePage                   : INTEGER;
  129.     END;
  130.     yEmHeight                    : INTEGER;
  131.     yXHeight                     : INTEGER;
  132.     yMaxAscender                 : INTEGER;
  133.     yMaxDescender                : INTEGER;
  134.     yLowerCaseAscent             : INTEGER;
  135.     yLowerCaseDescent            : INTEGER;
  136.     yInternalLeading             : INTEGER;
  137.     yExternalLeading             : INTEGER;
  138.     xAveCharWidth                : INTEGER;
  139.     xMaxCharInc                  : INTEGER;
  140.     xEmInc                       : INTEGER;
  141.     yMaxBaselineExt              : INTEGER;
  142.     CASE                         : TYPEPREFIX OF
  143.     | TRUE                       :
  144.       sCharSlope                 : INTEGER;
  145.       sInlineDir                 : INTEGER;
  146.       sCharRot                   : INTEGER;
  147.       usWeightClass              : CARDINAL;
  148.       usWidthClass               : CARDINAL;
  149.     | FALSE                      :
  150.       CharSlope                  : INTEGER;
  151.       InlineDir                  : INTEGER;
  152.       CharRot                    : INTEGER;
  153.       WeightClass                : CARDINAL;
  154.       WidthClass                 : CARDINAL;
  155.     END;
  156.     xDeviceRes                   : INTEGER;
  157.     yDeviceRes                   : INTEGER;
  158.     CASE                         : TYPEPREFIX OF
  159.     | TRUE                       :
  160.       usFirstChar                : INTEGER;
  161.       usLastChar                 : INTEGER;
  162.       usDefaultChar              : INTEGER;
  163.       usBreakChar                : INTEGER;
  164.       usNominalPointSize         : INTEGER;
  165.       usMinimumPointSize         : INTEGER;
  166.       usMaximumPointSize         : INTEGER;
  167.       fsTypeFlags                : INTEGER;
  168.       fsDefn                     : INTEGER;
  169.       fsSelectionFlags           : INTEGER;
  170.       fsCapabilities             : INTEGER;
  171.     | FALSE                      :
  172.       FirstChar                  : INTEGER;
  173.       LastChar                   : INTEGER;
  174.       DefaultChar                : INTEGER;
  175.       BreakChar                  : INTEGER;
  176.       NominalPointSize           : INTEGER;
  177.       MinimumPointSize           : INTEGER;
  178.       MaximumPointSize           : INTEGER;
  179.       TypeFlags                  : INTEGER;
  180.       Defn                       : INTEGER;
  181.       SelectionFlags             : INTEGER;
  182.       Capabilities               : INTEGER;
  183.     END;
  184.     ySubscriptXSize              : INTEGER;
  185.     ySubscriptYSize              : INTEGER;
  186.     ySubscriptXOffset            : INTEGER;
  187.     ySubscriptYOffset            : INTEGER;
  188.     ySuperscriptXSize            : INTEGER;
  189.     ySuperscriptYSize            : INTEGER;
  190.     ySuperscriptXOffset          : INTEGER;
  191.     ySuperscriptYOffset          : INTEGER;
  192.     yUnderscoreSize              : INTEGER;
  193.     yUnderscorePosition          : INTEGER;
  194.     yStrikeoutSize               : INTEGER;
  195.     yStrikeoutPosition           : INTEGER;
  196.     CASE                         : TYPEPREFIX OF
  197.     | TRUE                       :
  198.       usKerningPairs             : INTEGER;
  199.       sFamilyClass               : INTEGER;
  200.       ulReserved                 : LONGCARD;
  201.     | FALSE                      :
  202.       KerningPairs               : INTEGER;
  203.       FamilyClass                : INTEGER;
  204.       Reserved                   : LONGCARD;
  205.     END;
  206.     panose                       : PANOSE;
  207.                                  END;
  208.   PFONTFILEMETRICS             = POINTER TO FONTFILEMETRICS;
  209.  
  210. TYPE
  211.   FONTDEFINITIONHEADER         = RECORD (* fdh *)
  212.     CASE                         : TYPEPREFIX OF
  213.     | TRUE                       :
  214.       ulIdentity                 : LONGCARD;
  215.       ulSize                     : LONGCARD;
  216.       fsFontdef                  : INTEGER;
  217.       fsChardef                  : INTEGER;
  218.       usCellSize                 : INTEGER;
  219.     | FALSE                      :
  220.       Identity                   : LONGCARD;
  221.       Size                       : LONGCARD;
  222.       FontdefFlag                : INTEGER;
  223.       ChardefFlag                : INTEGER;
  224.       CellSize                   : INTEGER;
  225.     END;
  226.     xCellWidth                   : INTEGER;
  227.     yCellHeight                  : INTEGER;
  228.     xCellIncrement               : INTEGER;
  229.     xCellA                       : INTEGER;
  230.     xCellB                       : INTEGER;
  231.     xCellC                       : INTEGER;
  232.     CASE                         : TYPEPREFIX OF
  233.     | TRUE                       :
  234.       pCellBaseOffset            : INTEGER;
  235.     | FALSE                      :
  236.       CellBaseOffset             : INTEGER;
  237.     END;                         END;
  238.   PFONTDEFINITIONHEADER        = POINTER TO FONTDEFINITIONHEADER;
  239.  
  240. CONST
  241.   FONTDEFFONT1    = 0047H;  (* set width, height, inc. & base offset *)
  242.   FONTDEFFONT2    = 0042H;  (* set height & base offset              *)
  243.   FONTDEFFONT3    = 0042H;  (* set height & base offset              *)
  244.   FONTDEFCHAR1    = 0081H;  (* set char offset and width             *)
  245.   FONTDEFCHAR2    = 0081H;  (* set char offset and width             *)
  246.   FONTDEFCHAR3    = 00B8H;  (* set char offset, A, B, and C space    *)
  247.   SPACE_UNDEF     = 8000H;  (* space undefined = take default        *)
  248.  
  249. TYPE
  250.   FONTSIGNATURE                = RECORD (* fs *)
  251.     CASE                         : TYPEPREFIX OF
  252.     | TRUE                       :
  253.       ulIdentity                 : LONGCARD;
  254.       ulSize                     : LONGCARD;
  255.       achSignature               : ARRAY [0..11] OF CHAR;
  256.     | FALSE                      :
  257.       Identity                   : LONGCARD;
  258.       Size                       : LONGCARD;
  259.       Signature                  : ARRAY [0..11] OF CHAR;
  260.     END;                         END;
  261.   PFONTSIGNATURE               = POINTER TO FONTSIGNATURE;
  262.  
  263. TYPE
  264.   ADDITIONALMETRICS            = RECORD (* am *)
  265.     CASE                         : TYPEPREFIX OF
  266.     | TRUE                       :
  267.       ulIdentity                 : LONGCARD;
  268.       ulSize                     : LONGCARD;
  269.     | FALSE                      :
  270.       Identity                   : LONGCARD;
  271.       Size                       : LONGCARD;
  272.     END;
  273.     panose                       : PANOSE;
  274.                                  END;
  275.   PADDITIONALMETRICS           = POINTER TO ADDITIONALMETRICS;
  276.  
  277. TYPE
  278.   FOCAFONT                     = RECORD (* ff *)
  279.     CASE                         : TYPEPREFIX OF
  280.     | TRUE                       :
  281.       fsSignature                : FONTSIGNATURE;
  282.       fmMetrics                  : FOCAMETRICS;
  283.       fdDefinitions              : FONTDEFINITIONHEADER;
  284.     | FALSE                      :
  285.       Signature                  : FONTSIGNATURE;
  286.       Metrics                    : FOCAMETRICS;
  287.       Definitions                : FONTDEFINITIONHEADER;
  288.     END;                         END;
  289.   PFOCAFONT                    = POINTER TO FOCAFONT;
  290.  
  291. CONST
  292.   FONT_SIGNATURE          = 0FFFFFFFEH; (* Identity header start       *)
  293.   FONT_METRICS            = 000000001H; (* Identity metrics            *)
  294.   FONT_DEFINITION         = 000000002H; (* Identity definition         *)
  295.   FONT_KERNPAIRS          = 000000003H; (* Identity Kern Pairs         *)
  296.   FONT_ADDITIONALMETRICS  = 000000004H; (* Identity Additional Metrics *)
  297.   FONT_ENDRECORD          = 0FFFFFFFFH; (* Identity record end         *)
  298.  
  299. CONST (* Options for QueryFonts *)
  300.   QUERY_PUBLIC_FONTS      = 0001H;
  301.   QUERY_PRIVATE_FONTS     = 0002H;
  302.  
  303. CONST
  304.   CDEF_GENERIC            = 0001H;
  305.   CDEF_BOLD               = 0002H;
  306.   CDEF_ITALIC             = 0004H;
  307.   CDEF_UNDERSCORE         = 0008H;
  308.   CDEF_STRIKEOUT          = 0010H;
  309.   CDEF_OUTLINE            = 0020H;
  310.  
  311. END FONTFILEFORMAT.
  312.