JwaWinGDI.pas
上传用户:davidchvip
上传日期:2009-07-28
资源大小:1749k
文件大小:424k
源码类别:

Windows编程

开发平台:

Delphi

  1. {******************************************************************************}
  2. {                                                                       }
  3. { Graphics Device Interface API interface Unit for Object Pascal               }
  4. {                                                                       }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft          }
  6. { Corporation. All Rights Reserved.                                            }
  7. {                 }
  8. { The original file is: wingdi.h, released June 2000. The original Pascal      }
  9. { code is: WinGDI.pas, released December 2000. The initial developer of the    }
  10. { Pascal code is Marcel van Brakel (brakelm@chello.nl).                        }
  11. {                                                                              }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001            }
  13. { Marcel van Brakel. All Rights Reserved.                                      }
  14. {                 }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI)        }
  16. {                }
  17. { You may retrieve the latest version of this file at the Project JEDI home    }
  18. { page, located at http://delphi-jedi.org or my personal homepage located at   }
  19. { http://members.chello.nl/m.vanbrakel2                                        }
  20. {                }
  21. { The contents of this file are used with permission, subject to the Mozilla   }
  22. { Public License Version 1.1 (the "License"); you may not use this file except }
  23. { in compliance with the License. You may obtain a copy of the License at      }
  24. { http://www.mozilla.org/MPL/MPL-1.1.html                                      }
  25. {                                                                              }
  26. { Software distributed under the License is distributed on an "AS IS" basis,   }
  27. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  28. { the specific language governing rights and limitations under the License.    }
  29. {                                                                              }
  30. { Alternatively, the contents of this file may be used under the terms of the  }
  31. { GNU Lesser General Public License (the  "LGPL License"), in which case the   }
  32. { provisions of the LGPL License are applicable instead of those above.        }
  33. { If you wish to allow use of your version of this file only under the terms   }
  34. { of the LGPL License and not to allow others to use your version of this file }
  35. { under the MPL, indicate your decision by deleting  the provisions above and  }
  36. { replace  them with the notice and other provisions required by the LGPL      }
  37. { License.  If you do not delete the provisions above, a recipient may use     }
  38. { your version of this file under either the MPL or the LGPL License.          }
  39. {                 }
  40. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  41. {                 }
  42. {******************************************************************************}
  43. unit JwaWinGDI;
  44. {$WEAKPACKAGEUNIT}
  45. {$HPPEMIT ''}
  46. {$HPPEMIT '#include "WinGDI.h"'}
  47. {$HPPEMIT ''}
  48. {$I WINDEFINES.INC}
  49. interface
  50. uses
  51.   JwaWinNT, JwaWinType;
  52. // Binary raster ops
  53. const
  54.   R2_BLACK       = 1; // 0
  55.   {$EXTERNALSYM R2_BLACK}
  56.   R2_NOTMERGEPEN = 2; // DPon
  57.   {$EXTERNALSYM R2_NOTMERGEPEN}
  58.   R2_MASKNOTPEN  = 3; // DPna
  59.   {$EXTERNALSYM R2_MASKNOTPEN}
  60.   R2_NOTCOPYPEN  = 4; // PN
  61.   {$EXTERNALSYM R2_NOTCOPYPEN}
  62.   R2_MASKPENNOT  = 5; // PDna
  63.   {$EXTERNALSYM R2_MASKPENNOT}
  64.   R2_NOT         = 6; // Dn
  65.   {$EXTERNALSYM R2_NOT}
  66.   R2_XORPEN      = 7; // DPx
  67.   {$EXTERNALSYM R2_XORPEN}
  68.   R2_NOTMASKPEN  = 8; // DPan
  69.   {$EXTERNALSYM R2_NOTMASKPEN}
  70.   R2_MASKPEN     = 9; // DPa
  71.   {$EXTERNALSYM R2_MASKPEN}
  72.   R2_NOTXORPEN   = 10; // DPxn
  73.   {$EXTERNALSYM R2_NOTXORPEN}
  74.   R2_NOP         = 11; // D
  75.   {$EXTERNALSYM R2_NOP}
  76.   R2_MERGENOTPEN = 12; // DPno
  77.   {$EXTERNALSYM R2_MERGENOTPEN}
  78.   R2_COPYPEN     = 13; // P
  79.   {$EXTERNALSYM R2_COPYPEN}
  80.   R2_MERGEPENNOT = 14; // PDno
  81.   {$EXTERNALSYM R2_MERGEPENNOT}
  82.   R2_MERGEPEN    = 15; // DPo
  83.   {$EXTERNALSYM R2_MERGEPEN}
  84.   R2_WHITE       = 16; // 1
  85.   {$EXTERNALSYM R2_WHITE}
  86.   R2_LAST        = 16;
  87.   {$EXTERNALSYM R2_LAST}
  88. // Ternary raster operations
  89.   SRCCOPY     = DWORD($00CC0020); // dest = source
  90.   {$EXTERNALSYM SRCCOPY}
  91.   SRCPAINT    = DWORD($00EE0086); // dest = source OR dest
  92.   {$EXTERNALSYM SRCPAINT}
  93.   SRCAND      = DWORD($008800C6); // dest = source AND dest
  94.   {$EXTERNALSYM SRCAND}
  95.   SRCINVERT   = DWORD($00660046); // dest = source XOR dest
  96.   {$EXTERNALSYM SRCINVERT}
  97.   SRCERASE    = DWORD($00440328); // dest = source AND (NOT dest )
  98.   {$EXTERNALSYM SRCERASE}
  99.   NOTSRCCOPY  = DWORD($00330008); // dest = (NOT source)
  100.   {$EXTERNALSYM NOTSRCCOPY}
  101.   NOTSRCERASE = DWORD($001100A6); // dest = (NOT src) AND (NOT dest)
  102.   {$EXTERNALSYM NOTSRCERASE}
  103.   MERGECOPY   = DWORD($00C000CA); // dest = (source AND pattern)
  104.   {$EXTERNALSYM MERGECOPY}
  105.   MERGEPAINT  = DWORD($00BB0226); // dest = (NOT source) OR dest
  106.   {$EXTERNALSYM MERGEPAINT}
  107.   PATCOPY     = DWORD($00F00021); // dest = pattern
  108.   {$EXTERNALSYM PATCOPY}
  109.   PATPAINT    = DWORD($00FB0A09); // dest = DPSnoo
  110.   {$EXTERNALSYM PATPAINT}
  111.   PATINVERT   = DWORD($005A0049); // dest = pattern XOR dest
  112.   {$EXTERNALSYM PATINVERT}
  113.   DSTINVERT   = DWORD($00550009); // dest = (NOT dest)
  114.   {$EXTERNALSYM DSTINVERT}
  115.   BLACKNESS   = DWORD($00000042); // dest = BLACK
  116.   {$EXTERNALSYM BLACKNESS}
  117.   WHITENESS   = DWORD($00FF0062); // dest = WHITE
  118.   {$EXTERNALSYM WHITENESS}
  119.   NOMIRRORBITMAP = DWORD($80000000); // Do not Mirror the bitmap in this call
  120.   {$EXTERNALSYM NOMIRRORBITMAP}
  121.   CAPTUREBLT     = DWORD($40000000); // Include layered windows
  122.   {$EXTERNALSYM CAPTUREBLT}
  123. // Quaternary raster codes
  124. function MAKEROP4(Fore, Back: DWORD): DWORD;
  125. {$EXTERNALSYM MAKEROP4}
  126. const
  127.   GDI_ERROR = DWORD($FFFFFFFF);
  128.   {$EXTERNALSYM GDI_ERROR}
  129.   HGDI_ERROR = HANDLE($FFFFFFFF);
  130.   {$EXTERNALSYM HGDI_ERROR}
  131. // Region Flags
  132.   ERROR         = 0;
  133.   {$EXTERNALSYM ERROR}
  134.   NULLREGION    = 1;
  135.   {$EXTERNALSYM NULLREGION}
  136.   SIMPLEREGION  = 2;
  137.   {$EXTERNALSYM SIMPLEREGION}
  138.   COMPLEXREGION = 3;
  139.   {$EXTERNALSYM COMPLEXREGION}
  140.   RGN_ERROR     = ERROR;
  141.   {$EXTERNALSYM RGN_ERROR}
  142. // CombineRgn() Styles
  143.   RGN_AND  = 1;
  144.   {$EXTERNALSYM RGN_AND}
  145.   RGN_OR   = 2;
  146.   {$EXTERNALSYM RGN_OR}
  147.   RGN_XOR  = 3;
  148.   {$EXTERNALSYM RGN_XOR}
  149.   RGN_DIFF = 4;
  150.   {$EXTERNALSYM RGN_DIFF}
  151.   RGN_COPY = 5;
  152.   {$EXTERNALSYM RGN_COPY}
  153.   RGN_MIN  = RGN_AND;
  154.   {$EXTERNALSYM RGN_MIN}
  155.   RGN_MAX  = RGN_COPY;
  156.   {$EXTERNALSYM RGN_MAX}
  157. // StretchBlt() Modes
  158.   BLACKONWHITE      = 1;
  159.   {$EXTERNALSYM BLACKONWHITE}
  160.   WHITEONBLACK      = 2;
  161.   {$EXTERNALSYM WHITEONBLACK}
  162.   COLORONCOLOR      = 3;
  163.   {$EXTERNALSYM COLORONCOLOR}
  164.   HALFTONE          = 4;
  165.   {$EXTERNALSYM HALFTONE}
  166.   MAXSTRETCHBLTMODE = 4;
  167.   {$EXTERNALSYM MAXSTRETCHBLTMODE}
  168. // New StretchBlt() Modes
  169.   STRETCH_ANDSCANS    = BLACKONWHITE;
  170.   {$EXTERNALSYM STRETCH_ANDSCANS}
  171.   STRETCH_ORSCANS     = WHITEONBLACK;
  172.   {$EXTERNALSYM STRETCH_ORSCANS}
  173.   STRETCH_DELETESCANS = COLORONCOLOR;
  174.   {$EXTERNALSYM STRETCH_DELETESCANS}
  175.   STRETCH_HALFTONE    = HALFTONE;
  176.   {$EXTERNALSYM STRETCH_HALFTONE}
  177. // PolyFill() Modes
  178.   ALTERNATE     = 1;
  179.   {$EXTERNALSYM ALTERNATE}
  180.   WINDING       = 2;
  181.   {$EXTERNALSYM WINDING}
  182.   POLYFILL_LAST = 2;
  183.   {$EXTERNALSYM POLYFILL_LAST}
  184. // Layout Orientation Options
  185.   LAYOUT_RTL                        = $00000001; // Right to left
  186.   {$EXTERNALSYM LAYOUT_RTL}
  187.   LAYOUT_BTT                        = $00000002; // Bottom to top
  188.   {$EXTERNALSYM LAYOUT_BTT}
  189.   LAYOUT_VBH                        = $00000004; // Vertical before horizontal
  190.   {$EXTERNALSYM LAYOUT_VBH}
  191.   LAYOUT_ORIENTATIONMASK            = (LAYOUT_RTL or LAYOUT_BTT or LAYOUT_VBH);
  192.   {$EXTERNALSYM LAYOUT_ORIENTATIONMASK}
  193.   LAYOUT_BITMAPORIENTATIONPRESERVED = $00000008;
  194.   {$EXTERNALSYM LAYOUT_BITMAPORIENTATIONPRESERVED}
  195. // Text Alignment Options
  196.   TA_NOUPDATECP = 0;
  197.   {$EXTERNALSYM TA_NOUPDATECP}
  198.   TA_UPDATECP   = 1;
  199.   {$EXTERNALSYM TA_UPDATECP}
  200.   TA_LEFT   = 0;
  201.   {$EXTERNALSYM TA_LEFT}
  202.   TA_RIGHT  = 2;
  203.   {$EXTERNALSYM TA_RIGHT}
  204.   TA_CENTER = 6;
  205.   {$EXTERNALSYM TA_CENTER}
  206.   TA_TOP      = 0;
  207.   {$EXTERNALSYM TA_TOP}
  208.   TA_BOTTOM   = 8;
  209.   {$EXTERNALSYM TA_BOTTOM}
  210.   TA_BASELINE = 24;
  211.   {$EXTERNALSYM TA_BASELINE}
  212.   TA_RTLREADING = 256;
  213.   {$EXTERNALSYM TA_RTLREADING}
  214. {$IFDEF WINVER_0400_GREATER}
  215.   TA_MASK       = (TA_BASELINE + TA_CENTER + TA_UPDATECP + TA_RTLREADING);
  216.   {$EXTERNALSYM TA_MASK}
  217. {$ELSE}
  218.   TA_MASK       = (TA_BASELINE + TA_CENTER + TA_UPDATECP);
  219.   {$EXTERNALSYM TA_MASK}
  220. {$ENDIF}
  221.   VTA_BASELINE = TA_BASELINE;
  222.   {$EXTERNALSYM VTA_BASELINE}
  223.   VTA_LEFT     = TA_BOTTOM;
  224.   {$EXTERNALSYM VTA_LEFT}
  225.   VTA_RIGHT    = TA_TOP;
  226.   {$EXTERNALSYM VTA_RIGHT}
  227.   VTA_CENTER   = TA_CENTER;
  228.   {$EXTERNALSYM VTA_CENTER}
  229.   VTA_BOTTOM   = TA_RIGHT;
  230.   {$EXTERNALSYM VTA_BOTTOM}
  231.   VTA_TOP      = TA_LEFT;
  232.   {$EXTERNALSYM VTA_TOP}
  233.   ETO_OPAQUE  = $0002;
  234.   {$EXTERNALSYM ETO_OPAQUE}
  235.   ETO_CLIPPED = $0004;
  236.   {$EXTERNALSYM ETO_CLIPPED}
  237.   ETO_GLYPH_INDEX    = $0010;
  238.   {$EXTERNALSYM ETO_GLYPH_INDEX}
  239.   ETO_RTLREADING     = $0080;
  240.   {$EXTERNALSYM ETO_RTLREADING}
  241.   ETO_NUMERICSLOCAL  = $0400;
  242.   {$EXTERNALSYM ETO_NUMERICSLOCAL}
  243.   ETO_NUMERICSLATIN  = $0800;
  244.   {$EXTERNALSYM ETO_NUMERICSLATIN}
  245.   ETO_IGNORELANGUAGE = $1000;
  246.   {$EXTERNALSYM ETO_IGNORELANGUAGE}
  247.   ETO_PDY = $2000;
  248.   {$EXTERNALSYM ETO_PDY}
  249.   ASPECT_FILTERING = $0001;
  250.   {$EXTERNALSYM ASPECT_FILTERING}
  251. // Bounds Accumulation APIs
  252.   DCB_RESET      = $0001;
  253.   {$EXTERNALSYM DCB_RESET}
  254.   DCB_ACCUMULATE = $0002;
  255.   {$EXTERNALSYM DCB_ACCUMULATE}
  256.   DCB_DIRTY      = DCB_ACCUMULATE;
  257.   {$EXTERNALSYM DCB_DIRTY}
  258.   DCB_SET        = (DCB_RESET or DCB_ACCUMULATE);
  259.   {$EXTERNALSYM DCB_SET}
  260.   DCB_ENABLE     = $0004;
  261.   {$EXTERNALSYM DCB_ENABLE}
  262.   DCB_DISABLE    = $0008;
  263.   {$EXTERNALSYM DCB_DISABLE}
  264. // Metafile Functions
  265.   META_SETBKCOLOR            = $0201;
  266.   {$EXTERNALSYM META_SETBKCOLOR}
  267.   META_SETBKMODE             = $0102;
  268.   {$EXTERNALSYM META_SETBKMODE}
  269.   META_SETMAPMODE            = $0103;
  270.   {$EXTERNALSYM META_SETMAPMODE}
  271.   META_SETROP2               = $0104;
  272.   {$EXTERNALSYM META_SETROP2}
  273.   META_SETRELABS             = $0105;
  274.   {$EXTERNALSYM META_SETRELABS}
  275.   META_SETPOLYFILLMODE       = $0106;
  276.   {$EXTERNALSYM META_SETPOLYFILLMODE}
  277.   META_SETSTRETCHBLTMODE     = $0107;
  278.   {$EXTERNALSYM META_SETSTRETCHBLTMODE}
  279.   META_SETTEXTCHAREXTRA      = $0108;
  280.   {$EXTERNALSYM META_SETTEXTCHAREXTRA}
  281.   META_SETTEXTCOLOR          = $0209;
  282.   {$EXTERNALSYM META_SETTEXTCOLOR}
  283.   META_SETTEXTJUSTIFICATION  = $020A;
  284.   {$EXTERNALSYM META_SETTEXTJUSTIFICATION}
  285.   META_SETWINDOWORG          = $020B;
  286.   {$EXTERNALSYM META_SETWINDOWORG}
  287.   META_SETWINDOWEXT          = $020C;
  288.   {$EXTERNALSYM META_SETWINDOWEXT}
  289.   META_SETVIEWPORTORG        = $020D;
  290.   {$EXTERNALSYM META_SETVIEWPORTORG}
  291.   META_SETVIEWPORTEXT        = $020E;
  292.   {$EXTERNALSYM META_SETVIEWPORTEXT}
  293.   META_OFFSETWINDOWORG       = $020F;
  294.   {$EXTERNALSYM META_OFFSETWINDOWORG}
  295.   META_SCALEWINDOWEXT        = $0410;
  296.   {$EXTERNALSYM META_SCALEWINDOWEXT}
  297.   META_OFFSETVIEWPORTORG     = $0211;
  298.   {$EXTERNALSYM META_OFFSETVIEWPORTORG}
  299.   META_SCALEVIEWPORTEXT      = $0412;
  300.   {$EXTERNALSYM META_SCALEVIEWPORTEXT}
  301.   META_LINETO                = $0213;
  302.   {$EXTERNALSYM META_LINETO}
  303.   META_MOVETO                = $0214;
  304.   {$EXTERNALSYM META_MOVETO}
  305.   META_EXCLUDECLIPRECT       = $0415;
  306.   {$EXTERNALSYM META_EXCLUDECLIPRECT}
  307.   META_INTERSECTCLIPRECT     = $0416;
  308.   {$EXTERNALSYM META_INTERSECTCLIPRECT}
  309.   META_ARC                   = $0817;
  310.   {$EXTERNALSYM META_ARC}
  311.   META_ELLIPSE               = $0418;
  312.   {$EXTERNALSYM META_ELLIPSE}
  313.   META_FLOODFILL             = $0419;
  314.   {$EXTERNALSYM META_FLOODFILL}
  315.   META_PIE                   = $081A;
  316.   {$EXTERNALSYM META_PIE}
  317.   META_RECTANGLE             = $041B;
  318.   {$EXTERNALSYM META_RECTANGLE}
  319.   META_ROUNDRECT             = $061C;
  320.   {$EXTERNALSYM META_ROUNDRECT}
  321.   META_PATBLT                = $061D;
  322.   {$EXTERNALSYM META_PATBLT}
  323.   META_SAVEDC                = $001E;
  324.   {$EXTERNALSYM META_SAVEDC}
  325.   META_SETPIXEL              = $041F;
  326.   {$EXTERNALSYM META_SETPIXEL}
  327.   META_OFFSETCLIPRGN         = $0220;
  328.   {$EXTERNALSYM META_OFFSETCLIPRGN}
  329.   META_TEXTOUT               = $0521;
  330.   {$EXTERNALSYM META_TEXTOUT}
  331.   META_BITBLT                = $0922;
  332.   {$EXTERNALSYM META_BITBLT}
  333.   META_STRETCHBLT            = $0B23;
  334.   {$EXTERNALSYM META_STRETCHBLT}
  335.   META_POLYGON               = $0324;
  336.   {$EXTERNALSYM META_POLYGON}
  337.   META_POLYLINE              = $0325;
  338.   {$EXTERNALSYM META_POLYLINE}
  339.   META_ESCAPE                = $0626;
  340.   {$EXTERNALSYM META_ESCAPE}
  341.   META_RESTOREDC             = $0127;
  342.   {$EXTERNALSYM META_RESTOREDC}
  343.   META_FILLREGION            = $0228;
  344.   {$EXTERNALSYM META_FILLREGION}
  345.   META_FRAMEREGION           = $0429;
  346.   {$EXTERNALSYM META_FRAMEREGION}
  347.   META_INVERTREGION          = $012A;
  348.   {$EXTERNALSYM META_INVERTREGION}
  349.   META_PAINTREGION           = $012B;
  350.   {$EXTERNALSYM META_PAINTREGION}
  351.   META_SELECTCLIPREGION      = $012C;
  352.   {$EXTERNALSYM META_SELECTCLIPREGION}
  353.   META_SELECTOBJECT          = $012D;
  354.   {$EXTERNALSYM META_SELECTOBJECT}
  355.   META_SETTEXTALIGN          = $012E;
  356.   {$EXTERNALSYM META_SETTEXTALIGN}
  357.   META_CHORD                 = $0830;
  358.   {$EXTERNALSYM META_CHORD}
  359.   META_SETMAPPERFLAGS        = $0231;
  360.   {$EXTERNALSYM META_SETMAPPERFLAGS}
  361.   META_EXTTEXTOUT            = $0a32;
  362.   {$EXTERNALSYM META_EXTTEXTOUT}
  363.   META_SETDIBTODEV           = $0d33;
  364.   {$EXTERNALSYM META_SETDIBTODEV}
  365.   META_SELECTPALETTE         = $0234;
  366.   {$EXTERNALSYM META_SELECTPALETTE}
  367.   META_REALIZEPALETTE        = $0035;
  368.   {$EXTERNALSYM META_REALIZEPALETTE}
  369.   META_ANIMATEPALETTE        = $0436;
  370.   {$EXTERNALSYM META_ANIMATEPALETTE}
  371.   META_SETPALENTRIES         = $0037;
  372.   {$EXTERNALSYM META_SETPALENTRIES}
  373.   META_POLYPOLYGON           = $0538;
  374.   {$EXTERNALSYM META_POLYPOLYGON}
  375.   META_RESIZEPALETTE         = $0139;
  376.   {$EXTERNALSYM META_RESIZEPALETTE}
  377.   META_DIBBITBLT             = $0940;
  378.   {$EXTERNALSYM META_DIBBITBLT}
  379.   META_DIBSTRETCHBLT         = $0b41;
  380.   {$EXTERNALSYM META_DIBSTRETCHBLT}
  381.   META_DIBCREATEPATTERNBRUSH = $0142;
  382.   {$EXTERNALSYM META_DIBCREATEPATTERNBRUSH}
  383.   META_STRETCHDIB            = $0f43;
  384.   {$EXTERNALSYM META_STRETCHDIB}
  385.   META_EXTFLOODFILL          = $0548;
  386.   {$EXTERNALSYM META_EXTFLOODFILL}
  387.   META_SETLAYOUT             = $0149;
  388.   {$EXTERNALSYM META_SETLAYOUT}
  389.   META_DELETEOBJECT          = $01f0;
  390.   {$EXTERNALSYM META_DELETEOBJECT}
  391.   META_CREATEPALETTE         = $00f7;
  392.   {$EXTERNALSYM META_CREATEPALETTE}
  393.   META_CREATEPATTERNBRUSH    = $01F9;
  394.   {$EXTERNALSYM META_CREATEPATTERNBRUSH}
  395.   META_CREATEPENINDIRECT     = $02FA;
  396.   {$EXTERNALSYM META_CREATEPENINDIRECT}
  397.   META_CREATEFONTINDIRECT    = $02FB;
  398.   {$EXTERNALSYM META_CREATEFONTINDIRECT}
  399.   META_CREATEBRUSHINDIRECT   = $02FC;
  400.   {$EXTERNALSYM META_CREATEBRUSHINDIRECT}
  401.   META_CREATEREGION          = $06FF;
  402.   {$EXTERNALSYM META_CREATEREGION}
  403. type
  404.   PDrawPatRect = ^TDrawPatRect;
  405.   _DRAWPATRECT = record
  406.     ptPosition: POINT;
  407.     ptSize: POINT;
  408.     wStyle: WORD;
  409.     wPattern: WORD;
  410.   end;
  411.   {$EXTERNALSYM _DRAWPATRECT}
  412.   DRAWPATRECT = _DRAWPATRECT;
  413.   {$EXTERNALSYM DRAWPATRECT}
  414.   TDrawPatRect = _DRAWPATRECT;
  415. // GDI Escapes
  416. const
  417.   NEWFRAME           = 1;
  418.   {$EXTERNALSYM NEWFRAME}
  419.   _ABORTDOC          = 2; // Underscore prfix by translator (nameclash)
  420.   {$EXTERNALSYM ABORTDOC}
  421.   NEXTBAND           = 3;
  422.   {$EXTERNALSYM NEXTBAND}
  423.   SETCOLORTABLE      = 4;
  424.   {$EXTERNALSYM SETCOLORTABLE}
  425.   GETCOLORTABLE      = 5;
  426.   {$EXTERNALSYM GETCOLORTABLE}
  427.   FLUSHOUTPUT        = 6;
  428.   {$EXTERNALSYM FLUSHOUTPUT}
  429.   DRAFTMODE          = 7;
  430.   {$EXTERNALSYM DRAFTMODE}
  431.   QUERYESCSUPPORT    = 8;
  432.   {$EXTERNALSYM QUERYESCSUPPORT}
  433.   SETABORTPROC_      = 9;  // Underscore prfix by translator (nameclash)
  434.   {$EXTERNALSYM SETABORTPROC}
  435.   STARTDOC_          = 10; // Underscore prfix by translator (nameclash)
  436.   {$EXTERNALSYM STARTDOC}
  437.   ENDDOC_            = 11; // Underscore prfix by translator (nameclash)
  438.   {$EXTERNALSYM ENDDOC}
  439.   GETPHYSPAGESIZE    = 12;
  440.   {$EXTERNALSYM GETPHYSPAGESIZE}
  441.   GETPRINTINGOFFSET  = 13;
  442.   {$EXTERNALSYM GETPRINTINGOFFSET}
  443.   GETSCALINGFACTOR   = 14;
  444.   {$EXTERNALSYM GETSCALINGFACTOR}
  445.   MFCOMMENT          = 15;
  446.   {$EXTERNALSYM MFCOMMENT}
  447.   GETPENWIDTH        = 16;
  448.   {$EXTERNALSYM GETPENWIDTH}
  449.   SETCOPYCOUNT       = 17;
  450.   {$EXTERNALSYM SETCOPYCOUNT}
  451.   SELECTPAPERSOURCE  = 18;
  452.   {$EXTERNALSYM SELECTPAPERSOURCE}
  453.   DEVICEDATA         = 19;
  454.   {$EXTERNALSYM DEVICEDATA}
  455.   PASSTHROUGH        = 19;
  456.   {$EXTERNALSYM PASSTHROUGH}
  457.   GETTECHNOLGY       = 20;
  458.   {$EXTERNALSYM GETTECHNOLGY}
  459.   GETTECHNOLOGY      = 20;
  460.   {$EXTERNALSYM GETTECHNOLOGY}
  461.   SETLINECAP         = 21;
  462.   {$EXTERNALSYM SETLINECAP}
  463.   SETLINEJOIN        = 22;
  464.   {$EXTERNALSYM SETLINEJOIN}
  465.   SETMITERLIMIT_     = 23; // underscore prefix by translator (nameclash)
  466.   {$EXTERNALSYM SETMITERLIMIT}
  467.   BANDINFO           = 24;
  468.   {$EXTERNALSYM BANDINFO}
  469.   DRAWPATTERNRECT    = 25;
  470.   {$EXTERNALSYM DRAWPATTERNRECT}
  471.   GETVECTORPENSIZE   = 26;
  472.   {$EXTERNALSYM GETVECTORPENSIZE}
  473.   GETVECTORBRUSHSIZE = 27;
  474.   {$EXTERNALSYM GETVECTORBRUSHSIZE}
  475.   ENABLEDUPLEX       = 28;
  476.   {$EXTERNALSYM ENABLEDUPLEX}
  477.   GETSETPAPERBINS    = 29;
  478.   {$EXTERNALSYM GETSETPAPERBINS}
  479.   GETSETPRINTORIENT  = 30;
  480.   {$EXTERNALSYM GETSETPRINTORIENT}
  481.   ENUMPAPERBINS      = 31;
  482.   {$EXTERNALSYM ENUMPAPERBINS}
  483.   SETDIBSCALING      = 32;
  484.   {$EXTERNALSYM SETDIBSCALING}
  485.   EPSPRINTING        = 33;
  486.   {$EXTERNALSYM EPSPRINTING}
  487.   ENUMPAPERMETRICS   = 34;
  488.   {$EXTERNALSYM ENUMPAPERMETRICS}
  489.   GETSETPAPERMETRICS = 35;
  490.   {$EXTERNALSYM GETSETPAPERMETRICS}
  491.   POSTSCRIPT_DATA    = 37;
  492.   {$EXTERNALSYM POSTSCRIPT_DATA}
  493.   POSTSCRIPT_IGNORE  = 38;
  494.   {$EXTERNALSYM POSTSCRIPT_IGNORE}
  495.   MOUSETRAILS        = 39;
  496.   {$EXTERNALSYM MOUSETRAILS}
  497.   GETDEVICEUNITS     = 42;
  498.   {$EXTERNALSYM GETDEVICEUNITS}
  499.   GETEXTENDEDTEXTMETRICS = 256;
  500.   {$EXTERNALSYM GETEXTENDEDTEXTMETRICS}
  501.   GETEXTENTTABLE         = 257;
  502.   {$EXTERNALSYM GETEXTENTTABLE}
  503.   GETPAIRKERNTABLE       = 258;
  504.   {$EXTERNALSYM GETPAIRKERNTABLE}
  505.   GETTRACKKERNTABLE      = 259;
  506.   {$EXTERNALSYM GETTRACKKERNTABLE}
  507.   EXTTEXTOUT_            = 512; // underscore prefix by translator (nameclash)
  508.   {$EXTERNALSYM EXTTEXTOUT}
  509.   GETFACENAME            = 513;
  510.   {$EXTERNALSYM GETFACENAME}
  511.   DOWNLOADFACE           = 514;
  512.   {$EXTERNALSYM DOWNLOADFACE}
  513.   ENABLERELATIVEWIDTHS   = 768;
  514.   {$EXTERNALSYM ENABLERELATIVEWIDTHS}
  515.   ENABLEPAIRKERNING      = 769;
  516.   {$EXTERNALSYM ENABLEPAIRKERNING}
  517.   SETKERNTRACK           = 770;
  518.   {$EXTERNALSYM SETKERNTRACK}
  519.   SETALLJUSTVALUES       = 771;
  520.   {$EXTERNALSYM SETALLJUSTVALUES}
  521.   SETCHARSET             = 772;
  522.   {$EXTERNALSYM SETCHARSET}
  523.   STRETCHBLT_ESCAPE       = 2048; // suffix _ESCAPE by translator because of 
  524.                                   // name-clash with StretchBlt function
  525.   {$EXTERNALSYM STRETCHBLT}
  526.   METAFILE_DRIVER         = 2049;
  527.   {$EXTERNALSYM METAFILE_DRIVER}
  528.   GETSETSCREENPARAMS      = 3072;
  529.   {$EXTERNALSYM GETSETSCREENPARAMS}
  530.   QUERYDIBSUPPORT         = 3073;
  531.   {$EXTERNALSYM QUERYDIBSUPPORT}
  532.   BEGIN_PATH              = 4096;
  533.   {$EXTERNALSYM BEGIN_PATH}
  534.   CLIP_TO_PATH            = 4097;
  535.   {$EXTERNALSYM CLIP_TO_PATH}
  536.   END_PATH                = 4098;
  537.   {$EXTERNALSYM END_PATH}
  538.   EXT_DEVICE_CAPS         = 4099;
  539.   {$EXTERNALSYM EXT_DEVICE_CAPS}
  540.   RESTORE_CTM             = 4100;
  541.   {$EXTERNALSYM RESTORE_CTM}
  542.   SAVE_CTM                = 4101;
  543.   {$EXTERNALSYM SAVE_CTM}
  544.   SET_ARC_DIRECTION       = 4102;
  545.   {$EXTERNALSYM SET_ARC_DIRECTION}
  546.   SET_BACKGROUND_COLOR    = 4103;
  547.   {$EXTERNALSYM SET_BACKGROUND_COLOR}
  548.   SET_POLY_MODE           = 4104;
  549.   {$EXTERNALSYM SET_POLY_MODE}
  550.   SET_SCREEN_ANGLE        = 4105;
  551.   {$EXTERNALSYM SET_SCREEN_ANGLE}
  552.   SET_SPREAD              = 4106;
  553.   {$EXTERNALSYM SET_SPREAD}
  554.   TRANSFORM_CTM           = 4107;
  555.   {$EXTERNALSYM TRANSFORM_CTM}
  556.   SET_CLIP_BOX            = 4108;
  557.   {$EXTERNALSYM SET_CLIP_BOX}
  558.   SET_BOUNDS              = 4109;
  559.   {$EXTERNALSYM SET_BOUNDS}
  560.   SET_MIRROR_MODE         = 4110;
  561.   {$EXTERNALSYM SET_MIRROR_MODE}
  562.   OPENCHANNEL             = 4110;
  563.   {$EXTERNALSYM OPENCHANNEL}
  564.   DOWNLOADHEADER          = 4111;
  565.   {$EXTERNALSYM DOWNLOADHEADER}
  566.   CLOSECHANNEL            = 4112;
  567.   {$EXTERNALSYM CLOSECHANNEL}
  568.   POSTSCRIPT_PASSTHROUGH  = 4115;
  569.   {$EXTERNALSYM POSTSCRIPT_PASSTHROUGH}
  570.   ENCAPSULATED_POSTSCRIPT = 4116;
  571.   {$EXTERNALSYM ENCAPSULATED_POSTSCRIPT}
  572.   POSTSCRIPT_IDENTIFY  = 4117; // new escape for NT5 pscript driver
  573.   {$EXTERNALSYM POSTSCRIPT_IDENTIFY}
  574.   POSTSCRIPT_INJECTION = 4118; // new escape for NT5 pscript driver
  575.   {$EXTERNALSYM POSTSCRIPT_INJECTION}
  576.   CHECKJPEGFORMAT = 4119;
  577.   {$EXTERNALSYM CHECKJPEGFORMAT}
  578.   CHECKPNGFORMAT  = 4120;
  579.   {$EXTERNALSYM CHECKPNGFORMAT}
  580.   GET_PS_FEATURESETTING = 4121; // new escape for NT5 pscript driver
  581.   {$EXTERNALSYM GET_PS_FEATURESETTING}
  582.   SPCLPASSTHROUGH2 = 4568; // new escape for NT5 pscript driver
  583.   {$EXTERNALSYM SPCLPASSTHROUGH2}
  584. //
  585. // Parameters for POSTSCRIPT_IDENTIFY escape
  586. //
  587.   PSIDENT_GDICENTRIC = 0;
  588.   {$EXTERNALSYM PSIDENT_GDICENTRIC}
  589.   PSIDENT_PSCENTRIC  = 1;
  590.   {$EXTERNALSYM PSIDENT_PSCENTRIC}
  591. //
  592. // Header structure for the input buffer to POSTSCRIPT_INJECTION escape
  593. //
  594. type
  595.   PPsInjectData = ^TPsInjectData;
  596.   _PSINJECTDATA = record
  597.     DataBytes: DWORD;     // number of raw data bytes (NOT including this header)
  598.     InjectionPoint: WORD; // injection point
  599.     PageNumber: WORD;     // page number to apply the injection
  600.                           // Followed by raw data to be injected
  601.   end;
  602.   {$EXTERNALSYM _PSINJECTDATA}
  603.   PSINJECTDATA = _PSINJECTDATA;
  604.   {$EXTERNALSYM PSINJECTDATA}
  605.   TPsInjectData = _PSINJECTDATA;
  606. //
  607. // Constants for PSINJECTDATA.InjectionPoint field
  608. //
  609. const
  610.   PSINJECT_BEGINSTREAM = 1;
  611.   {$EXTERNALSYM PSINJECT_BEGINSTREAM}
  612.   PSINJECT_PSADOBE     = 2;
  613.   {$EXTERNALSYM PSINJECT_PSADOBE}
  614.   PSINJECT_PAGESATEND  = 3;
  615.   {$EXTERNALSYM PSINJECT_PAGESATEND}
  616.   PSINJECT_PAGES       = 4;
  617.   {$EXTERNALSYM PSINJECT_PAGES}
  618.   PSINJECT_DOCNEEDEDRES          = 5;
  619.   {$EXTERNALSYM PSINJECT_DOCNEEDEDRES}
  620.   PSINJECT_DOCSUPPLIEDRES        = 6;
  621.   {$EXTERNALSYM PSINJECT_DOCSUPPLIEDRES}
  622.   PSINJECT_PAGEORDER             = 7;
  623.   {$EXTERNALSYM PSINJECT_PAGEORDER}
  624.   PSINJECT_ORIENTATION           = 8;
  625.   {$EXTERNALSYM PSINJECT_ORIENTATION}
  626.   PSINJECT_BOUNDINGBOX           = 9;
  627.   {$EXTERNALSYM PSINJECT_BOUNDINGBOX}
  628.   PSINJECT_DOCUMENTPROCESSCOLORS = 10;
  629.   {$EXTERNALSYM PSINJECT_DOCUMENTPROCESSCOLORS}
  630.   PSINJECT_COMMENTS                   = 11;
  631.   {$EXTERNALSYM PSINJECT_COMMENTS}
  632.   PSINJECT_BEGINDEFAULTS              = 12;
  633.   {$EXTERNALSYM PSINJECT_BEGINDEFAULTS}
  634.   PSINJECT_ENDDEFAULTS                = 13;
  635.   {$EXTERNALSYM PSINJECT_ENDDEFAULTS}
  636.   PSINJECT_BEGINPROLOG                = 14;
  637.   {$EXTERNALSYM PSINJECT_BEGINPROLOG}
  638.   PSINJECT_ENDPROLOG                  = 15;
  639.   {$EXTERNALSYM PSINJECT_ENDPROLOG}
  640.   PSINJECT_BEGINSETUP                 = 16;
  641.   {$EXTERNALSYM PSINJECT_BEGINSETUP}
  642.   PSINJECT_ENDSETUP                   = 17;
  643.   {$EXTERNALSYM PSINJECT_ENDSETUP}
  644.   PSINJECT_TRAILER                    = 18;
  645.   {$EXTERNALSYM PSINJECT_TRAILER}
  646.   PSINJECT_EOF                        = 19;
  647.   {$EXTERNALSYM PSINJECT_EOF}
  648.   PSINJECT_ENDSTREAM                  = 20;
  649.   {$EXTERNALSYM PSINJECT_ENDSTREAM}
  650.   PSINJECT_DOCUMENTPROCESSCOLORSATEND = 21;
  651.   {$EXTERNALSYM PSINJECT_DOCUMENTPROCESSCOLORSATEND}
  652.   PSINJECT_PAGENUMBER     = 100;
  653.   {$EXTERNALSYM PSINJECT_PAGENUMBER}
  654.   PSINJECT_BEGINPAGESETUP = 101;
  655.   {$EXTERNALSYM PSINJECT_BEGINPAGESETUP}
  656.   PSINJECT_ENDPAGESETUP   = 102;
  657.   {$EXTERNALSYM PSINJECT_ENDPAGESETUP}
  658.   PSINJECT_PAGETRAILER    = 103;
  659.   {$EXTERNALSYM PSINJECT_PAGETRAILER}
  660.   PSINJECT_PLATECOLOR     = 104;
  661.   {$EXTERNALSYM PSINJECT_PLATECOLOR}
  662.   PSINJECT_SHOWPAGE        = 105;
  663.   {$EXTERNALSYM PSINJECT_SHOWPAGE}
  664.   PSINJECT_PAGEBBOX        = 106;
  665.   {$EXTERNALSYM PSINJECT_PAGEBBOX}
  666.   PSINJECT_ENDPAGECOMMENTS = 107;
  667.   {$EXTERNALSYM PSINJECT_ENDPAGECOMMENTS}
  668.   PSINJECT_VMSAVE    = 200;
  669.   {$EXTERNALSYM PSINJECT_VMSAVE}
  670.   PSINJECT_VMRESTORE = 201;
  671.   {$EXTERNALSYM PSINJECT_VMRESTORE}
  672. //
  673. // Parameter for GET_PS_FEATURESETTING escape
  674. //
  675.   FEATURESETTING_NUP       = 0;
  676.   {$EXTERNALSYM FEATURESETTING_NUP}
  677.   FEATURESETTING_OUTPUT    = 1;
  678.   {$EXTERNALSYM FEATURESETTING_OUTPUT}
  679.   FEATURESETTING_PSLEVEL   = 2;
  680.   {$EXTERNALSYM FEATURESETTING_PSLEVEL}
  681.   FEATURESETTING_CUSTPAPER = 3;
  682.   {$EXTERNALSYM FEATURESETTING_CUSTPAPER}
  683.   FEATURESETTING_MIRROR    = 4;
  684.   {$EXTERNALSYM FEATURESETTING_MIRROR}
  685.   FEATURESETTING_NEGATIVE  = 5;
  686.   {$EXTERNALSYM FEATURESETTING_NEGATIVE}
  687.   FEATURESETTING_PROTOCOL  = 6;
  688.   {$EXTERNALSYM FEATURESETTING_PROTOCOL}
  689. //
  690. // The range of selectors between FEATURESETTING_PRIVATE_BEGIN and
  691. // FEATURESETTING_PRIVATE_END is reserved by Microsoft for private use
  692. //
  693.   FEATURESETTING_PRIVATE_BEGIN = $1000;
  694.   {$EXTERNALSYM FEATURESETTING_PRIVATE_BEGIN}
  695.   FEATURESETTING_PRIVATE_END   = $1FFF;
  696.   {$EXTERNALSYM FEATURESETTING_PRIVATE_END}
  697. //
  698. // Information about output options
  699. //
  700. type
  701.   PPsFeatureOutput = ^TPsFeatureOutput;
  702.   _PSFEATURE_OUTPUT = record
  703.     bPageIndependent: BOOL;
  704.     bSetPageDevice: BOOL;
  705.   end;
  706.   {$EXTERNALSYM _PSFEATURE_OUTPUT}
  707.   PSFEATURE_OUTPUT = _PSFEATURE_OUTPUT;
  708.   {$EXTERNALSYM PSFEATURE_OUTPUT}
  709.   PPSFEATURE_OUTPUT = ^PSFEATURE_OUTPUT;
  710.   {$EXTERNALSYM PPSFEATURE_OUTPUT}
  711.   TPsFeatureOutput = _PSFEATURE_OUTPUT;
  712. //
  713. // Information about custom paper size
  714. //
  715.   PPsFeatureCustPaper = ^TPsFeatureCustPaper;
  716.   _PSFEATURE_CUSTPAPER = record
  717.     lOrientation: LONG;
  718.     lWidth: LONG;
  719.     lHeight: LONG;
  720.     lWidthOffset: LONG;
  721.     lHeightOffset: LONG;
  722.   end;
  723.   {$EXTERNALSYM _PSFEATURE_CUSTPAPER}
  724.   PSFEATURE_CUSTPAPER = _PSFEATURE_CUSTPAPER;
  725.   {$EXTERNALSYM PSFEATURE_CUSTPAPER}
  726.   PPSFEATURE_CUSTPAPER = ^PSFEATURE_CUSTPAPER;
  727.   {$EXTERNALSYM PPSFEATURE_CUSTPAPER}
  728.   TPsFeatureCustPaper = _PSFEATURE_CUSTPAPER;
  729. // Value returned for FEATURESETTING_PROTOCOL
  730. const
  731.   PSPROTOCOL_ASCII  = 0;
  732.   {$EXTERNALSYM PSPROTOCOL_ASCII}
  733.   PSPROTOCOL_BCP    = 1;
  734.   {$EXTERNALSYM PSPROTOCOL_BCP}
  735.   PSPROTOCOL_TBCP   = 2;
  736.   {$EXTERNALSYM PSPROTOCOL_TBCP}
  737.   PSPROTOCOL_BINARY = 3;
  738.   {$EXTERNALSYM PSPROTOCOL_BINARY}
  739. // Flag returned from QUERYDIBSUPPORT
  740.   QDI_SETDIBITS   = 1;
  741.   {$EXTERNALSYM QDI_SETDIBITS}
  742.   QDI_GETDIBITS   = 2;
  743.   {$EXTERNALSYM QDI_GETDIBITS}
  744.   QDI_DIBTOSCREEN = 4;
  745.   {$EXTERNALSYM QDI_DIBTOSCREEN}
  746.   QDI_STRETCHDIB  = 8;
  747.   {$EXTERNALSYM QDI_STRETCHDIB}
  748. // Spooler Error Codes
  749.   SP_NOTREPORTED = $4000;
  750.   {$EXTERNALSYM SP_NOTREPORTED}
  751.   SP_ERROR       = DWORD(-1);
  752.   {$EXTERNALSYM SP_ERROR}
  753.   SP_APPABORT    = DWORD(-2);
  754.   {$EXTERNALSYM SP_APPABORT}
  755.   SP_USERABORT   = DWORD(-3);
  756.   {$EXTERNALSYM SP_USERABORT}
  757.   SP_OUTOFDISK   = DWORD(-4);
  758.   {$EXTERNALSYM SP_OUTOFDISK}
  759.   SP_OUTOFMEMORY = DWORD(-5);
  760.   {$EXTERNALSYM SP_OUTOFMEMORY}
  761.   PR_JOBSTATUS = $0000;
  762.   {$EXTERNALSYM PR_JOBSTATUS}
  763. // Object Definitions for EnumObjects()
  764.   OBJ_PEN         = 1;
  765.   {$EXTERNALSYM OBJ_PEN}
  766.   OBJ_BRUSH       = 2;
  767.   {$EXTERNALSYM OBJ_BRUSH}
  768.   OBJ_DC          = 3;
  769.   {$EXTERNALSYM OBJ_DC}
  770.   OBJ_METADC      = 4;
  771.   {$EXTERNALSYM OBJ_METADC}
  772.   OBJ_PAL         = 5;
  773.   {$EXTERNALSYM OBJ_PAL}
  774.   OBJ_FONT        = 6;
  775.   {$EXTERNALSYM OBJ_FONT}
  776.   OBJ_BITMAP      = 7;
  777.   {$EXTERNALSYM OBJ_BITMAP}
  778.   OBJ_REGION      = 8;
  779.   {$EXTERNALSYM OBJ_REGION}
  780.   OBJ_METAFILE    = 9;
  781.   {$EXTERNALSYM OBJ_METAFILE}
  782.   OBJ_MEMDC       = 10;
  783.   {$EXTERNALSYM OBJ_MEMDC}
  784.   OBJ_EXTPEN      = 11;
  785.   {$EXTERNALSYM OBJ_EXTPEN}
  786.   OBJ_ENHMETADC   = 12;
  787.   {$EXTERNALSYM OBJ_ENHMETADC}
  788.   OBJ_ENHMETAFILE = 13;
  789.   {$EXTERNALSYM OBJ_ENHMETAFILE}
  790.   OBJ_COLORSPACE  = 14;
  791.   {$EXTERNALSYM OBJ_COLORSPACE}
  792. // xform stuff
  793.   MWT_IDENTITY      = 1;
  794.   {$EXTERNALSYM MWT_IDENTITY}
  795.   MWT_LEFTMULTIPLY  = 2;
  796.   {$EXTERNALSYM MWT_LEFTMULTIPLY}
  797.   MWT_RIGHTMULTIPLY = 3;
  798.   {$EXTERNALSYM MWT_RIGHTMULTIPLY}
  799.   MWT_MIN = MWT_IDENTITY;
  800.   {$EXTERNALSYM MWT_MIN}
  801.   MWT_MAX = MWT_RIGHTMULTIPLY;
  802.   {$EXTERNALSYM MWT_MAX}
  803. type
  804.   PXform = ^TXform;
  805.   tagXFORM = record
  806.     eM11: FLOAT;
  807.     eM12: FLOAT;
  808.     eM21: FLOAT;
  809.     eM22: FLOAT;
  810.     eDx: FLOAT;
  811.     eDy: FLOAT;
  812.   end;
  813.   {$EXTERNALSYM tagXFORM}
  814.   XFORM = tagXFORM;
  815.   {$EXTERNALSYM XFORM}
  816.   LPXFORM = ^XFORM;
  817.   {$EXTERNALSYM LPXFORM}
  818.   TXform = XFORM;
  819. // Bitmap Header Definition
  820.   PBitmap = ^TBitmap;
  821.   tagBITMAP = record
  822.     bmType: LONG;
  823.     bmWidth: LONG;
  824.     bmHeight: LONG;
  825.     bmWidthBytes: LONG;
  826.     bmPlanes: WORD;
  827.     bmBitsPixel: WORD;
  828.     bmBits: LPVOID;
  829.   end;
  830.   {$EXTERNALSYM tagBITMAP}
  831.   BITMAP = tagBITMAP;
  832.   {$EXTERNALSYM BITMAP}
  833.   LPBITMAP = ^BITMAP;
  834.   {$EXTERNALSYM LPBITMAP}
  835.   NPBITMAP = ^BITMAP;
  836.   {$EXTERNALSYM NPBITMAP}
  837.   TBitmap = BITMAP;
  838. // #include <pshpack1.h>
  839.   PRgbTriple = ^TRgbTriple;
  840.   tagRGBTRIPLE = packed record
  841.     rgbtBlue: BYTE;
  842.     rgbtGreen: BYTE;
  843.     rgbtRed: BYTE;
  844.   end;
  845.   {$EXTERNALSYM tagRGBTRIPLE}
  846.   RGBTRIPLE = tagRGBTRIPLE;
  847.   {$EXTERNALSYM RGBTRIPLE}
  848.   TRgbTriple = RGBTRIPLE;
  849. // #include <poppack.h>
  850.   PRgbQuad = ^TRgbQuad;
  851.   tagRGBQUAD = record
  852.     rgbBlue: BYTE;
  853.     rgbGreen: BYTE;
  854.     rgbRed: BYTE;
  855.     rgbReserved: BYTE;
  856.   end;
  857.   {$EXTERNALSYM tagRGBQUAD}
  858.   RGBQUAD = tagRGBQUAD;
  859.   {$EXTERNALSYM RGBQUAD}
  860.   LPRGBQUAD = ^RGBQUAD;
  861.   {$EXTERNALSYM LPRGBQUAD}
  862.   TRgbQuad = RGBQUAD;
  863. // Image Color Matching color definitions
  864. const
  865.   CS_ENABLE           = $00000001;
  866.   {$EXTERNALSYM CS_ENABLE}
  867.   CS_DISABLE          = $00000002;
  868.   {$EXTERNALSYM CS_DISABLE}
  869.   CS_DELETE_TRANSFORM = $00000003;
  870.   {$EXTERNALSYM CS_DELETE_TRANSFORM}
  871. // Logcolorspace signature
  872.   LCS_SIGNATURE = 'PSOC';
  873.   {$EXTERNALSYM LCS_SIGNATURE}
  874. // Logcolorspace lcsType values
  875.   LCS_sRGB                = 'sRGB';
  876.   {$EXTERNALSYM LCS_sRGB}
  877.   LCS_WINDOWS_COLOR_SPACE = 'Win '; // Windows default color space
  878.   {$EXTERNALSYM LCS_WINDOWS_COLOR_SPACE}
  879. type
  880.   LCSCSTYPE = LONG;
  881.   {$EXTERNALSYM LCSCSTYPE}
  882. const
  883.   LCS_CALIBRATED_RGB = $00000000;
  884.   {$EXTERNALSYM LCS_CALIBRATED_RGB}
  885. type
  886.   LCSGAMUTMATCH = LONG;
  887.   {$EXTERNALSYM LCSGAMUTMATCH }
  888. const
  889.   LCS_GM_BUSINESS         = $00000001;
  890.   {$EXTERNALSYM LCS_GM_BUSINESS}
  891.   LCS_GM_GRAPHICS         = $00000002;
  892.   {$EXTERNALSYM LCS_GM_GRAPHICS}
  893.   LCS_GM_IMAGES           = $00000004;
  894.   {$EXTERNALSYM LCS_GM_IMAGES}
  895.   LCS_GM_ABS_COLORIMETRIC = $00000008;
  896.   {$EXTERNALSYM LCS_GM_ABS_COLORIMETRIC}
  897. // ICM Defines for results from CheckColorInGamut()
  898.   CM_OUT_OF_GAMUT = 255;
  899.   {$EXTERNALSYM CM_OUT_OF_GAMUT}
  900.   CM_IN_GAMUT     = 0;
  901.   {$EXTERNALSYM CM_IN_GAMUT}
  902. // UpdateICMRegKey Constants
  903.   ICM_ADDPROFILE          = 1;
  904.   {$EXTERNALSYM ICM_ADDPROFILE}
  905.   ICM_DELETEPROFILE       = 2;
  906.   {$EXTERNALSYM ICM_DELETEPROFILE}
  907.   ICM_QUERYPROFILE        = 3;
  908.   {$EXTERNALSYM ICM_QUERYPROFILE}
  909.   ICM_SETDEFAULTPROFILE   = 4;
  910.   {$EXTERNALSYM ICM_SETDEFAULTPROFILE}
  911.   ICM_REGISTERICMATCHER   = 5;
  912.   {$EXTERNALSYM ICM_REGISTERICMATCHER}
  913.   ICM_UNREGISTERICMATCHER = 6;
  914.   {$EXTERNALSYM ICM_UNREGISTERICMATCHER}
  915.   ICM_QUERYMATCH          = 7;
  916.   {$EXTERNALSYM ICM_QUERYMATCH}
  917. // Macros to retrieve CMYK values from a COLORREF
  918. function GetKValue(cmyk: COLORREF): BYTE;
  919. {$EXTERNALSYM GetKValue}
  920. function GetYValue(cmyk: COLORREF): BYTE;
  921. {$EXTERNALSYM GetYValue}
  922. function GetMValue(cmyk: COLORREF): BYTE;
  923. {$EXTERNALSYM GetMValue}
  924. function GetCValue(cmyk: COLORREF): BYTE;
  925. {$EXTERNALSYM GetCValue}
  926. function CMYK(c, m, y, k: BYTE): COLORREF;
  927. {$EXTERNALSYM CMYK}
  928. type
  929.   FXPT16DOT16 = Longint;
  930.   {$EXTERNALSYM FXPT16DOT16}
  931.   LPFXPT16DOT16 = ^FXPT16DOT16;
  932.   {$EXTERNALSYM LPFXPT16DOT16}
  933.   FXPT2DOT30 = Longint;
  934.   {$EXTERNALSYM FXPT2DOT30}
  935.   LPFXPT2DOT30 = ^FXPT2DOT30;
  936.   {$EXTERNALSYM LPFXPT2DOT30}
  937. // ICM Color Definitions
  938. // The following two structures are used for defining RGB's in terms of CIEXYZ.
  939.   PCieXyz = ^TCieXyz;
  940.   tagCIEXYZ = record
  941.     ciexyzX: FXPT2DOT30;
  942.     ciexyzY: FXPT2DOT30;
  943.     ciexyzZ: FXPT2DOT30;
  944.   end;
  945.   {$EXTERNALSYM tagCIEXYZ}
  946.   CIEXYZ = tagCIEXYZ;
  947.   {$EXTERNALSYM CIEXYZ}
  948.   LPCIEXYZ = ^CIEXYZ;
  949.   {$EXTERNALSYM LPCIEXYZ}
  950.   TCieXyz = CIEXYZ;
  951.   PCieXyzTriple = ^TCieXyzTriple;
  952.   tagCIEXYZTRIPLE = record
  953.     ciexyzRed: CIEXYZ;
  954.     ciexyzGreen: CIEXYZ;
  955.     ciexyzBlue: CIEXYZ;
  956.   end;
  957.   {$EXTERNALSYM tagCIEXYZTRIPLE}
  958.   CIEXYZTRIPLE = tagCIEXYZTRIPLE;
  959.   {$EXTERNALSYM CIEXYZTRIPLE}
  960.   LPCIEXYZTRIPLE = ^CIEXYZTRIPLE;
  961.   {$EXTERNALSYM LPCIEXYZTRIPLE}
  962.   TCieXyzTriple = CIEXYZTRIPLE;
  963. // The next structures the logical color space. Unlike pens and brushes,
  964. // but like palettes, there is only one way to create a LogColorSpace.
  965. // A pointer to it must be passed, its elements can't be pushed as
  966. // arguments.
  967.   PLogColorSpaceA = ^TLogColorSpaceA;
  968.   tagLOGCOLORSPACEA = record
  969.     lcsSignature: DWORD;
  970.     lcsVersion: DWORD;
  971.     lcsSize: DWORD;
  972.     lcsCSType: LCSCSTYPE;
  973.     lcsIntent: LCSGAMUTMATCH;
  974.     lcsEndpoints: CIEXYZTRIPLE;
  975.     lcsGammaRed: DWORD;
  976.     lcsGammaGreen: DWORD;
  977.     lcsGammaBlue: DWORD;
  978.     lcsFilename: array [0..MAX_PATH - 1] of CHAR;
  979.   end;
  980.   {$EXTERNALSYM tagLOGCOLORSPACEA}
  981.   LOGCOLORSPACEA = tagLOGCOLORSPACEA;
  982.   {$EXTERNALSYM LOGCOLORSPACEA}
  983.   LPLOGCOLORSPACEA = ^LOGCOLORSPACEA;
  984.   {$EXTERNALSYM LPLOGCOLORSPACEA}
  985.   TLogColorSpaceA = LOGCOLORSPACEA;
  986.   PLogColorSpaceW = ^TLogColorSpaceW;
  987.   tagLOGCOLORSPACEW = record
  988.     lcsSignature: DWORD;
  989.     lcsVersion: DWORD;
  990.     lcsSize: DWORD;
  991.     lcsCSType: LCSCSTYPE;
  992.     lcsIntent: LCSGAMUTMATCH;
  993.     lcsEndpoints: CIEXYZTRIPLE;
  994.     lcsGammaRed: DWORD;
  995.     lcsGammaGreen: DWORD;
  996.     lcsGammaBlue: DWORD;
  997.     lcsFilename: array [0..MAX_PATH - 1] of WCHAR;
  998.   end;
  999.   {$EXTERNALSYM tagLOGCOLORSPACEW}
  1000.   LOGCOLORSPACEW = tagLOGCOLORSPACEW;
  1001.   {$EXTERNALSYM LOGCOLORSPACEW}
  1002.   LPLOGCOLORSPACEW = ^LOGCOLORSPACEW;
  1003.   {$EXTERNALSYM LPLOGCOLORSPACEW}
  1004.   TLogColorSpaceW = LOGCOLORSPACEW;
  1005. {$IFDEF UNICODE}
  1006.   LOGCOLORSPACE = LOGCOLORSPACEW;
  1007.   {$EXTERNALSYM LOGCOLORSPACE}
  1008.   LPLOGCOLORSPACE = LPLOGCOLORSPACEW;
  1009.   {$EXTERNALSYM LPLOGCOLORSPACE}
  1010.   TLogColorSpace = TLogColorSpaceW;
  1011.   PLogColorSpace = PLogColorSpaceW;
  1012. {$ELSE}
  1013.   LOGCOLORSPACE = LOGCOLORSPACEA;
  1014.   {$EXTERNALSYM LOGCOLORSPACE}
  1015.   LPLOGCOLORSPACE = LPLOGCOLORSPACEA;
  1016.   {$EXTERNALSYM LPLOGCOLORSPACE}
  1017.   TLogColorSpace = TLogColorSpaceA;
  1018.   PLogColorSpace = PLogColorSpaceA;
  1019. {$ENDIF}
  1020. // structures for defining DIBs
  1021.   PBitmapCoreHeader = ^TBitmapCoreHeader;
  1022.   tagBITMAPCOREHEADER = record
  1023.     bcSize: DWORD;
  1024.     bcWidth: WORD;
  1025.     bcHeight: WORD;
  1026.     bcPlanes: WORD;
  1027.     bcBitCount: WORD;
  1028.   end;
  1029.   {$EXTERNALSYM tagBITMAPCOREHEADER}
  1030.   BITMAPCOREHEADER = tagBITMAPCOREHEADER;
  1031.   {$EXTERNALSYM BITMAPCOREHEADER}
  1032.   LPBITMAPCOREHEADER = ^BITMAPCOREHEADER;
  1033.   {$EXTERNALSYM LPBITMAPCOREHEADER}
  1034.   TBitmapCoreHeader = BITMAPCOREHEADER;
  1035.   PBitmapInfoHeader = ^TBitmapInfoHeader;
  1036.   tagBITMAPINFOHEADER = record
  1037.     biSize: DWORD;
  1038.     biWidth: LONG;
  1039.     biHeight: LONG;
  1040.     biPlanes: WORD;
  1041.     biBitCount: WORD;
  1042.     biCompression: DWORD;
  1043.     biSizeImage: DWORD;
  1044.     biXPelsPerMeter: LONG;
  1045.     biYPelsPerMeter: LONG;
  1046.     biClrUsed: DWORD;
  1047.     biClrImportant: DWORD;
  1048.   end;
  1049.   {$EXTERNALSYM tagBITMAPINFOHEADER}
  1050.   BITMAPINFOHEADER = tagBITMAPINFOHEADER;
  1051.   {$EXTERNALSYM BITMAPINFOHEADER}
  1052.   LPBITMAPINFOHEADER = ^BITMAPINFOHEADER;
  1053.   {$EXTERNALSYM LPBITMAPINFOHEADER}
  1054.   TBitmapInfoHeader = BITMAPINFOHEADER;
  1055.   PBitmapV4Header = ^TBitmapV4Header;
  1056.   BITMAPV4HEADER = record
  1057.     bV4Size: DWORD;
  1058.     bV4Width: LONG;
  1059.     bV4Height: LONG;
  1060.     bV4Planes: WORD;
  1061.     bV4BitCount: WORD;
  1062.     bV4V4Compression: DWORD;
  1063.     bV4SizeImage: DWORD;
  1064.     bV4XPelsPerMeter: LONG;
  1065.     bV4YPelsPerMeter: LONG;
  1066.     bV4ClrUsed: DWORD;
  1067.     bV4ClrImportant: DWORD;
  1068.     bV4RedMask: DWORD;
  1069.     bV4GreenMask: DWORD;
  1070.     bV4BlueMask: DWORD;
  1071.     bV4AlphaMask: DWORD;
  1072.     bV4CSType: DWORD;
  1073.     bV4Endpoints: CIEXYZTRIPLE;
  1074.     bV4GammaRed: DWORD;
  1075.     bV4GammaGreen: DWORD;
  1076.     bV4GammaBlue: DWORD;
  1077.   end;
  1078.   {$EXTERNALSYM BITMAPV4HEADER}
  1079.   LPBITMAPV4HEADER = ^BITMAPV4HEADER;
  1080.   {$EXTERNALSYM LPBITMAPV4HEADER}
  1081.   TBitmapV4Header = BITMAPV4HEADER;
  1082.   PBitmapV5Header = ^TBitmapV5Header;
  1083.   BITMAPV5HEADER = record
  1084.     bV5Size: DWORD;
  1085.     bV5Width: LONG;
  1086.     bV5Height: LONG;
  1087.     bV5Planes: WORD;
  1088.     bV5BitCount: WORD;
  1089.     bV5Compression: DWORD;
  1090.     bV5SizeImage: DWORD;
  1091.     bV5XPelsPerMeter: LONG;
  1092.     bV5YPelsPerMeter: LONG;
  1093.     bV5ClrUsed: DWORD;
  1094.     bV5ClrImportant: DWORD;
  1095.     bV5RedMask: DWORD;
  1096.     bV5GreenMask: DWORD;
  1097.     bV5BlueMask: DWORD;
  1098.     bV5AlphaMask: DWORD;
  1099.     bV5CSType: DWORD;
  1100.     bV5Endpoints: CIEXYZTRIPLE;
  1101.     bV5GammaRed: DWORD;
  1102.     bV5GammaGreen: DWORD;
  1103.     bV5GammaBlue: DWORD;
  1104.     bV5Intent: DWORD;
  1105.     bV5ProfileData: DWORD;
  1106.     bV5ProfileSize: DWORD;
  1107.     bV5Reserved: DWORD;
  1108.   end;
  1109.   {$EXTERNALSYM BITMAPV5HEADER}
  1110.   LPBITMAPV5HEADER = ^BITMAPV5HEADER;
  1111.   {$EXTERNALSYM LPBITMAPV5HEADER}
  1112.   TBitmapV5Header = BITMAPV5HEADER;
  1113. // Values for bV5CSType
  1114. const
  1115.   PROFILE_LINKED   = 'LINK';
  1116.   {$EXTERNALSYM PROFILE_LINKED}
  1117.   PROFILE_EMBEDDED = 'MBED';
  1118.   {$EXTERNALSYM PROFILE_EMBEDDED}
  1119. // constants for the biCompression field
  1120.   BI_RGB       = 0;
  1121.   {$EXTERNALSYM BI_RGB}
  1122.   BI_RLE8      = 1;
  1123.   {$EXTERNALSYM BI_RLE8}
  1124.   BI_RLE4      = 2;
  1125.   {$EXTERNALSYM BI_RLE4}
  1126.   BI_BITFIELDS = 3;
  1127.   {$EXTERNALSYM BI_BITFIELDS}
  1128.   BI_JPEG      = 4;
  1129.   {$EXTERNALSYM BI_JPEG}
  1130.   BI_PNG       = 5;
  1131.   {$EXTERNALSYM BI_PNG}
  1132. type
  1133.   PBitmapInfo = ^TBitmapInfo;
  1134.   tagBITMAPINFO = record
  1135.     bmiHeader: BITMAPINFOHEADER;
  1136.     bmiColors: array [0..0] of RGBQUAD;
  1137.   end;
  1138.   {$EXTERNALSYM tagBITMAPINFO}
  1139.   BITMAPINFO = tagBITMAPINFO;
  1140.   {$EXTERNALSYM BITMAPINFO}
  1141.   LPBITMAPINFO = ^BITMAPINFO;
  1142.   {$EXTERNALSYM LPBITMAPINFO}
  1143.   TBitmapInfo = BITMAPINFO;
  1144.   PBitmapCoreInfo = ^TBitmapCoreInfo;
  1145.   tagBITMAPCOREINFO = record
  1146.     bmciHeader: BITMAPCOREHEADER;
  1147.     bmciColors: array [0..0] of RGBTRIPLE;
  1148.   end;
  1149.   {$EXTERNALSYM tagBITMAPCOREINFO}
  1150.   BITMAPCOREINFO = tagBITMAPCOREINFO;
  1151.   {$EXTERNALSYM BITMAPCOREINFO}
  1152.   LPBITMAPCOREINFO = ^BITMAPCOREINFO;
  1153.   {$EXTERNALSYM LPBITMAPCOREINFO}
  1154.   TBitmapCoreInfo = BITMAPCOREINFO;
  1155. // #include <pshpack2.h>
  1156.   PBitmapFileHeader = ^TBitmapFileHeader;
  1157.   tagBITMAPFILEHEADER = packed record
  1158.     bfType: WORD;
  1159.     bfSize: DWORD;
  1160.     bfReserved1: WORD;
  1161.     bfReserved2: WORD;
  1162.     bfOffBits: DWORD;
  1163.   end;
  1164.   {$EXTERNALSYM tagBITMAPFILEHEADER}
  1165.   BITMAPFILEHEADER = tagBITMAPFILEHEADER;
  1166.   {$EXTERNALSYM BITMAPFILEHEADER}
  1167.   LPBITMAPFILEHEADER = ^BITMAPFILEHEADER;
  1168.   {$EXTERNALSYM BITMAPFILEHEADER}
  1169.   TBitmapFileHeader = BITMAPFILEHEADER;
  1170. // #include <poppack.h>
  1171. function MAKEPOINTS(l: DWORD): POINTS;
  1172. {$EXTERNALSYM MAKEPOINTS}
  1173. type
  1174.   PFontSignature = ^TFontSignature;
  1175.   tagFONTSIGNATURE = record
  1176.     fsUsb: array [0..3] of DWORD;
  1177.     fsCsb: array [0..1] of DWORD;
  1178.   end;
  1179.   {$EXTERNALSYM tagFONTSIGNATURE}
  1180.   FONTSIGNATURE = tagFONTSIGNATURE;
  1181.   {$EXTERNALSYM FONTSIGNATURE}
  1182.   LPFONTSIGNATURE = ^FONTSIGNATURE;
  1183.   {$EXTERNALSYM LPFONTSIGNATURE}
  1184.   TFontSignature = FONTSIGNATURE;
  1185.   PCharSetInfo = ^TCharSetInfo;
  1186.   tagCHARSETINFO = record
  1187.     ciCharset: UINT;
  1188.     ciACP: UINT;
  1189.     fs: FONTSIGNATURE;
  1190.   end;
  1191.   {$EXTERNALSYM tagCHARSETINFO}
  1192.   CHARSETINFO = tagCHARSETINFO;
  1193.   {$EXTERNALSYM CHARSETINFO}
  1194.   LPCHARSETINFO = ^CHARSETINFO;
  1195.   {$EXTERNALSYM LPCHARSETINFO}
  1196.   NPCHARSETINFO = ^CHARSETINFO;
  1197.   {$EXTERNALSYM NPCHARSETINFO}
  1198.   TCharSetInfo = CHARSETINFO;
  1199. const
  1200.   TCI_SRCCHARSET  = 1;
  1201.   {$EXTERNALSYM TCI_SRCCHARSET}
  1202.   TCI_SRCCODEPAGE = 2;
  1203.   {$EXTERNALSYM TCI_SRCCODEPAGE}
  1204.   TCI_SRCFONTSIG  = 3;
  1205.   {$EXTERNALSYM TCI_SRCFONTSIG}
  1206. type
  1207.   PLocaleSignature = ^TLocaleSignature;
  1208.   tagLOCALESIGNATURE = record
  1209.     lsUsb: array [0..3] of DWORD;
  1210.     lsCsbDefault: array [0..1] of DWORD;
  1211.     lsCsbSupported: array [0..1] of DWORD;
  1212.   end;
  1213.   {$EXTERNALSYM tagLOCALESIGNATURE}
  1214.   LOCALESIGNATURE = tagLOCALESIGNATURE;
  1215.   {$EXTERNALSYM LOCALESIGNATURE}
  1216.   LPLOCALESIGNATURE = ^LOCALESIGNATURE;
  1217.   {$EXTERNALSYM LPLOCALESIGNATURE}
  1218.   TLocaleSignature = LOCALESIGNATURE;
  1219. // Clipboard Metafile Picture Structure
  1220.   PHandleTable = ^THandleTable;
  1221.   tagHANDLETABLE = record
  1222.     objectHandle: array [0..0] of HGDIOBJ;
  1223.   end;
  1224.   {$EXTERNALSYM tagHANDLETABLE}
  1225.   HANDLETABLE = tagHANDLETABLE;
  1226.   {$EXTERNALSYM HANDLETABLE}
  1227.   LPHANDLETABLE = ^HANDLETABLE;
  1228.   {$EXTERNALSYM LPHANDLETABLE}
  1229.   THandleTable = HANDLETABLE;
  1230.   PMetaRecord = ^TMetaRecord;
  1231.   tagMETARECORD = record
  1232.     rdSize: DWORD;
  1233.     rdFunction: WORD;
  1234.     rdParm: array [0..0] of WORD;
  1235.   end;
  1236.   {$EXTERNALSYM tagMETARECORD}
  1237.   METARECORD = tagMETARECORD;
  1238.   {$EXTERNALSYM METARECORD}
  1239.   LPMETARECORD = ^METARECORD;
  1240.   {$EXTERNALSYM LPMETARECORD}
  1241.   TMetaRecord = METARECORD;
  1242.   PMetaFilePict = ^TMetaFilePict;
  1243.   tagMETAFILEPICT = record
  1244.     mm: LONG;
  1245.     xExt: LONG;
  1246.     yExt: LONG;
  1247.     hMF: HMETAFILE;
  1248.   end;
  1249.   {$EXTERNALSYM tagMETAFILEPICT}
  1250.   METAFILEPICT = tagMETAFILEPICT;
  1251.   {$EXTERNALSYM METAFILEPICT}
  1252.   LPMETAFILEPICT = ^METAFILEPICT;
  1253.   {$EXTERNALSYM LPMETAFILEPICT}
  1254.   TMetaFilePict = METAFILEPICT;
  1255. // #include <pshpack2.h>
  1256.   PMetaHeader = ^TMetaHeader;
  1257.   tagMETAHEADER = packed record
  1258.     mtType: WORD;
  1259.     mtHeaderSize: WORD;
  1260.     mtVersion: WORD;
  1261.     mtSize: DWORD;
  1262.     mtNoObjects: WORD;
  1263.     mtMaxRecord: DWORD;
  1264.     mtNoParameters: WORD;
  1265.   end;
  1266.   {$EXTERNALSYM tagMETAHEADER}
  1267.   METAHEADER = tagMETAHEADER;
  1268.   {$EXTERNALSYM METAHEADER}
  1269.   LPMETAHEADER = ^METAHEADER;
  1270.   {$EXTERNALSYM LPMETAHEADER}
  1271.   TMetaHeader = METAHEADER;
  1272. // #include <poppack.h>
  1273. // Enhanced Metafile structures
  1274.   PEnhMetaRecord = ^TEnhMetaRecord;
  1275.   tagENHMETARECORD = record
  1276.     iType: DWORD; // Record type EMR_XXX
  1277.     nSize: DWORD; // Record size in bytes
  1278.     dParm: array [0..0] of DWORD; // Parameters
  1279.   end;
  1280.   {$EXTERNALSYM tagENHMETARECORD}
  1281.   ENHMETARECORD = tagENHMETARECORD;
  1282.   {$EXTERNALSYM ENHMETARECORD}
  1283.   LPENHMETARECORD = ^ENHMETARECORD;
  1284.   {$EXTERNALSYM LPENHMETARECORD}
  1285.   TEnhMetaRecord = ENHMETARECORD;
  1286.   PEnhMetaHeader = ^TEnhMetaHeader;
  1287.   tagENHMETAHEADER = record
  1288.     iType: DWORD;              // Record type EMR_HEADER
  1289.     nSize: DWORD;              // Record size in bytes.  This may be greater
  1290.                                // than the sizeof(ENHMETAHEADER).
  1291.     rclBounds: RECTL;          // Inclusive-inclusive bounds in device units
  1292.     rclFrame: RECTL;           // Inclusive-inclusive Picture Frame of metafile in .01 mm units
  1293.     dSignature: DWORD;         // Signature.  Must be ENHMETA_SIGNATURE.
  1294.     nVersion: DWORD;           // Version number
  1295.     nBytes: DWORD;             // Size of the metafile in bytes
  1296.     nRecords: DWORD;           // Number of records in the metafile
  1297.     nHandles: WORD;            // Number of handles in the handle table
  1298.                                // Handle index zero is reserved.
  1299.     sReserved: WORD;           // Reserved.  Must be zero.
  1300.     nDescription: DWORD;       // Number of chars in the unicode description string
  1301.                                // This is 0 if there is no description string
  1302.     offDescription: DWORD;     // Offset to the metafile description record.
  1303.                                // This is 0 if there is no description string
  1304.     nPalEntries: DWORD;        // Number of entries in the metafile palette.
  1305.     szlDevice: SIZEL;          // Size of the reference device in pels
  1306.     szlMillimeters: SIZEL;     // Size of the reference device in millimeters
  1307.     {$IFDEF WINVER_0400_GREATER}
  1308.     cbPixelFormat: DWORD;      // Size of PIXELFORMATDESCRIPTOR information
  1309.                                // This is 0 if no pixel format is set
  1310.     offPixelFormat: DWORD;     // Offset to PIXELFORMATDESCRIPTOR
  1311.                                // This is 0 if no pixel format is set
  1312.     bOpenGL: DWORD;            // TRUE if OpenGL commands are present in
  1313.                                // the metafile, otherwise FALSE
  1314.     {$ENDIF}
  1315.     {$IFDEF WINVER_0500_GREATER}
  1316.     szlMicrometers: SIZEL;     // Size of the reference device in micrometers
  1317.     {$ENDIF}
  1318.   end;
  1319.   {$EXTERNALSYM tagENHMETAHEADER}
  1320.   ENHMETAHEADER = tagENHMETAHEADER;
  1321.   {$EXTERNALSYM ENHMETAHEADER}
  1322.   LPENHMETAHEADER = ^ENHMETAHEADER;
  1323.   {$EXTERNALSYM LPENHMETAHEADER}
  1324.   TEnhMetaHeader = tagENHMETAHEADER;
  1325. // tmPitchAndFamily flags
  1326. const
  1327.   TMPF_FIXED_PITCH = $01;
  1328.   {$EXTERNALSYM TMPF_FIXED_PITCH}
  1329.   TMPF_VECTOR      = $02;
  1330.   {$EXTERNALSYM TMPF_VECTOR}
  1331.   TMPF_DEVICE      = $08;
  1332.   {$EXTERNALSYM TMPF_DEVICE}
  1333.   TMPF_TRUETYPE    = $04;
  1334.   {$EXTERNALSYM TMPF_TRUETYPE}
  1335. //
  1336. // BCHAR definition for APPs
  1337. //
  1338. type
  1339. {$IFDEF UNICODE}
  1340.   BCHAR = WCHAR;
  1341.   {$EXTERNALSYM BCHAR}
  1342. {$ELSE}
  1343.   BCHAR = BYTE;
  1344.   {$EXTERNALSYM BCHAR}
  1345. {$ENDIF}
  1346. type
  1347.   PTextMetricA = ^TTextMetricA;
  1348.   tagTEXTMETRICA = record
  1349.     tmHeight: LONG;
  1350.     tmAscent: LONG;
  1351.     tmDescent: LONG;
  1352.     tmInternalLeading: LONG;
  1353.     tmExternalLeading: LONG;
  1354.     tmAveCharWidth: LONG;
  1355.     tmMaxCharWidth: LONG;
  1356.     tmWeight: LONG;
  1357.     tmOverhang: LONG;
  1358.     tmDigitizedAspectX: LONG;
  1359.     tmDigitizedAspectY: LONG;
  1360.     tmFirstChar: BYTE;
  1361.     tmLastChar: BYTE;
  1362.     tmDefaultChar: BYTE;
  1363.     tmBreakChar: BYTE;
  1364.     tmItalic: BYTE;
  1365.     tmUnderlined: BYTE;
  1366.     tmStruckOut: BYTE;
  1367.     tmPitchAndFamily: BYTE;
  1368.     tmCharSet: BYTE;
  1369.   end;
  1370.   {$EXTERNALSYM tagTEXTMETRICA}
  1371.   TEXTMETRICA = tagTEXTMETRICA;
  1372.   {$EXTERNALSYM TEXTMETRICA}
  1373.   LPTEXTMETRICA = ^TEXTMETRICA;
  1374.   {$EXTERNALSYM LPTEXTMETRICA}
  1375.   NPTEXTMETRICA = ^TEXTMETRICA;
  1376.   {$EXTERNALSYM NPTEXTMETRICA}
  1377.   TTextMetricA = TEXTMETRICA;
  1378.   PTextMetricW = ^TTextMetricW;
  1379.   tagTEXTMETRICW = record
  1380.     tmHeight: LONG;
  1381.     tmAscent: LONG;
  1382.     tmDescent: LONG;
  1383.     tmInternalLeading: LONG;
  1384.     tmExternalLeading: LONG;
  1385.     tmAveCharWidth: LONG;
  1386.     tmMaxCharWidth: LONG;
  1387.     tmWeight: LONG;
  1388.     tmOverhang: LONG;
  1389.     tmDigitizedAspectX: LONG;
  1390.     tmDigitizedAspectY: LONG;
  1391.     tmFirstChar: WCHAR;
  1392.     tmLastChar: WCHAR;
  1393.     tmDefaultChar: WCHAR;
  1394.     tmBreakChar: WCHAR;
  1395.     tmItalic: BYTE;
  1396.     tmUnderlined: BYTE;
  1397.     tmStruckOut: BYTE;
  1398.     tmPitchAndFamily: BYTE;
  1399.     tmCharSet: BYTE;
  1400.   end;
  1401.   {$EXTERNALSYM tagTEXTMETRICW}
  1402.   TEXTMETRICW = tagTEXTMETRICW;
  1403.   {$EXTERNALSYM TEXTMETRICW}
  1404.   LPTEXTMETRICW = ^TEXTMETRICW;
  1405.   {$EXTERNALSYM LPTEXTMETRICW}
  1406.   NPTEXTMETRICW = ^TEXTMETRICW;
  1407.   {$EXTERNALSYM NPTEXTMETRICW}
  1408.   TTextMetricW = TEXTMETRICW;
  1409. {$IFDEF UNICODE}
  1410.   TEXTMETRIC = TEXTMETRICW;
  1411.   {$EXTERNALSYM TEXTMETRIC}
  1412.   PTEXTMETRIC = PTEXTMETRICW;
  1413.   {$EXTERNALSYM PTEXTMETRIC}
  1414.   NPTEXTMETRIC = NPTEXTMETRICW;
  1415.   {$EXTERNALSYM NPTEXTMETRIC}
  1416.   LPTEXTMETRIC = LPTEXTMETRICW;
  1417.   {$EXTERNALSYM LPTEXTMETRIC}
  1418.   TTextMetric = TTextMetricW;
  1419. {$ELSE}
  1420.   TEXTMETRIC = TEXTMETRICA;
  1421.   {$EXTERNALSYM TEXTMETRIC}
  1422.   NPTEXTMETRIC = NPTEXTMETRICA;
  1423.   {$EXTERNALSYM NPTEXTMETRIC}
  1424.   LPTEXTMETRIC = LPTEXTMETRICA;
  1425.   {$EXTERNALSYM LPTEXTMETRIC}
  1426.   TTextMetric = TTextMetricA;
  1427. {$ENDIF}
  1428. // ntmFlags field flags
  1429. const
  1430.   NTM_REGULAR = $00000040;
  1431.   {$EXTERNALSYM NTM_REGULAR}
  1432.   NTM_BOLD    = $00000020;
  1433.   {$EXTERNALSYM NTM_BOLD}
  1434.   NTM_ITALIC  = $00000001;
  1435.   {$EXTERNALSYM NTM_ITALIC}
  1436. // new in NT 5.0
  1437.   NTM_NONNEGATIVE_AC = $00010000;
  1438.   {$EXTERNALSYM NTM_NONNEGATIVE_AC}
  1439.   NTM_PS_OPENTYPE    = $00020000;
  1440.   {$EXTERNALSYM NTM_PS_OPENTYPE}
  1441.   NTM_TT_OPENTYPE    = $00040000;
  1442.   {$EXTERNALSYM NTM_TT_OPENTYPE}
  1443.   NTM_MULTIPLEMASTER = $00080000;
  1444.   {$EXTERNALSYM NTM_MULTIPLEMASTER}
  1445.   NTM_TYPE1          = $00100000;
  1446.   {$EXTERNALSYM NTM_TYPE1}
  1447.   NTM_DSIG           = $00200000;
  1448.   {$EXTERNALSYM NTM_DSIG}
  1449. // #include <pshpack4.h>
  1450. type
  1451.   PNewTextMetricA = ^TNewTextMetricA;
  1452.   tagNEWTEXTMETRICA = record
  1453.     tmHeight: LONG;
  1454.     tmAscent: LONG;
  1455.     tmDescent: LONG;
  1456.     tmInternalLeading: LONG;
  1457.     tmExternalLeading: LONG;
  1458.     tmAveCharWidth: LONG;
  1459.     tmMaxCharWidth: LONG;
  1460.     tmWeight: LONG;
  1461.     tmOverhang: LONG;
  1462.     tmDigitizedAspectX: LONG;
  1463.     tmDigitizedAspectY: LONG;
  1464.     tmFirstChar: BYTE;
  1465.     tmLastChar: BYTE;
  1466.     tmDefaultChar: BYTE;
  1467.     tmBreakChar: BYTE;
  1468.     tmItalic: BYTE;
  1469.     tmUnderlined: BYTE;
  1470.     tmStruckOut: BYTE;
  1471.     tmPitchAndFamily: BYTE;
  1472.     tmCharSet: BYTE;
  1473.     ntmFlags: DWORD;
  1474.     ntmSizeEM: UINT;
  1475.     ntmCellHeight: UINT;
  1476.     ntmAvgWidth: UINT;
  1477.   end;
  1478.   {$EXTERNALSYM tagNEWTEXTMETRICA}
  1479.   NEWTEXTMETRICA = tagNEWTEXTMETRICA;
  1480.   {$EXTERNALSYM NEWTEXTMETRICA}
  1481.   LPNEWTEXTMETRICA = ^NEWTEXTMETRICA;
  1482.   {$EXTERNALSYM LPNEWTEXTMETRICA}
  1483.   NPNEWTEXTMETRICA = ^NEWTEXTMETRICA;
  1484.   {$EXTERNALSYM NPNEWTEXTMETRICA}
  1485.   TNewTextMetricA = NEWTEXTMETRICA;
  1486.   PNewTextMetricW = ^TNewTextMetricW;
  1487.   tagNEWTEXTMETRICW = record
  1488.     tmHeight: LONG;
  1489.     tmAscent: LONG;
  1490.     tmDescent: LONG;
  1491.     tmInternalLeading: LONG;
  1492.     tmExternalLeading: LONG;
  1493.     tmAveCharWidth: LONG;
  1494.     tmMaxCharWidth: LONG;
  1495.     tmWeight: LONG;
  1496.     tmOverhang: LONG;
  1497.     tmDigitizedAspectX: LONG;
  1498.     tmDigitizedAspectY: LONG;
  1499.     tmFirstChar: WCHAR;
  1500.     tmLastChar: WCHAR;
  1501.     tmDefaultChar: WCHAR;
  1502.     tmBreakChar: WCHAR;
  1503.     tmItalic: BYTE;
  1504.     tmUnderlined: BYTE;
  1505.     tmStruckOut: BYTE;
  1506.     tmPitchAndFamily: BYTE;
  1507.     tmCharSet: BYTE;
  1508.     ntmFlags: DWORD;
  1509.     ntmSizeEM: UINT;
  1510.     ntmCellHeight: UINT;
  1511.     ntmAvgWidth: UINT;
  1512.   end;
  1513.   {$EXTERNALSYM tagNEWTEXTMETRICW}
  1514.   NEWTEXTMETRICW = tagNEWTEXTMETRICW;
  1515.   {$EXTERNALSYM NEWTEXTMETRICW}
  1516.   LPNEWTEXTMETRICW = ^NEWTEXTMETRICW;
  1517.   {$EXTERNALSYM LPNEWTEXTMETRICW}
  1518.   NPNEWTEXTMETRICW = ^NEWTEXTMETRICW;
  1519.   {$EXTERNALSYM NPNEWTEXTMETRICW}
  1520.   TNewTextMetricW = NEWTEXTMETRICW;
  1521. {$IFDEF UNICODE}
  1522.   NEWTEXTMETRIC = NEWTEXTMETRICW;
  1523.   {$EXTERNALSYM NEWTEXTMETRIC}
  1524.   PNEWTEXTMETRIC = PNEWTEXTMETRICW;
  1525.   {$EXTERNALSYM PNEWTEXTMETRIC}
  1526.   NPNEWTEXTMETRIC = NPNEWTEXTMETRICW;
  1527.   {$EXTERNALSYM NPNEWTEXTMETRIC}
  1528.   LPNEWTEXTMETRIC = LPNEWTEXTMETRICW;
  1529.   {$EXTERNALSYM LPNEWTEXTMETRIC}
  1530.   TNewTextMetric = TNewTextMetricW;
  1531. {$ELSE}
  1532.   NEWTEXTMETRIC = NEWTEXTMETRICW;
  1533.   {$EXTERNALSYM NEWTEXTMETRIC}
  1534.   PNEWTEXTMETRIC = PNEWTEXTMETRICW;
  1535.   {$EXTERNALSYM PNEWTEXTMETRIC}
  1536.   NPNEWTEXTMETRIC = NPNEWTEXTMETRICW;
  1537.   {$EXTERNALSYM NPNEWTEXTMETRIC}
  1538.   LPNEWTEXTMETRIC = LPNEWTEXTMETRICW;
  1539.   {$EXTERNALSYM LPNEWTEXTMETRIC}
  1540.   TNewTextMetric = TNewTextMetricW;
  1541. {$ENDIF}
  1542. // #include <poppack.h>
  1543.   PNewTextMetricExA = ^TNewTextMetricExA;
  1544.   tagNEWTEXTMETRICEXA = record
  1545.     ntmTm: NEWTEXTMETRICA;
  1546.     ntmFontSig: FONTSIGNATURE;
  1547.   end;
  1548.   {$EXTERNALSYM tagNEWTEXTMETRICEXA}
  1549.   NEWTEXTMETRICEXA = tagNEWTEXTMETRICEXA;
  1550.   {$EXTERNALSYM NEWTEXTMETRICEXA}
  1551.   TNewTextMetricExA = NEWTEXTMETRICEXA;
  1552.   PNewTextMetricExW = ^TNewTextMetricExW;
  1553.   tagNEWTEXTMETRICEXW = record
  1554.     ntmTm: NEWTEXTMETRICW;
  1555.     ntmFontSig: FONTSIGNATURE;
  1556.   end;
  1557.   {$EXTERNALSYM tagNEWTEXTMETRICEXW}
  1558.   NEWTEXTMETRICEXW = tagNEWTEXTMETRICEXW;
  1559.   {$EXTERNALSYM NEWTEXTMETRICEXW}
  1560.   TNewTextMetricExW = NEWTEXTMETRICEXW;
  1561. {$IFDEF UNICODE}
  1562.   NEWTEXTMETRICEX = NEWTEXTMETRICEXW;
  1563.   {$EXTERNALSYM NEWTEXTMETRICEX}
  1564.   TNewTextMetricEx = TNewTextMetricExW;
  1565.   PNewTextMetricEx = PNewTextMetricExW;
  1566. {$ELSE}
  1567.   NEWTEXTMETRICEX = NEWTEXTMETRICEXA;
  1568.   {$EXTERNALSYM NEWTEXTMETRICEX}
  1569.   TNewTextMetricEx = TNewTextMetricExA;
  1570.   PNewTextMetricEx = PNewTextMetricExA;
  1571. {$ENDIF}
  1572. // GDI Logical Objects:
  1573. // Pel Array
  1574.   PPelArray = ^TPelArray;
  1575.   tagPELARRAY = record
  1576.     paXCount: LONG;
  1577.     paYCount: LONG;
  1578.     paXExt: LONG;
  1579.     paYExt: LONG;
  1580.     paRGBs: BYTE;
  1581.   end;
  1582.   {$EXTERNALSYM tagPELARRAY}
  1583.   PELARRAY = tagPELARRAY;
  1584.   {$EXTERNALSYM PELARRAY}
  1585.   LPPELARRAY = ^PELARRAY;
  1586.   {$EXTERNALSYM LPPELARRAY}
  1587.   TPelArray = PELARRAY;
  1588. // Logical Brush (or Pattern)
  1589.   PLogBrush = ^TLogBrush;
  1590.   tagLOGBRUSH = record
  1591.     lbStyle: UINT;
  1592.     lbColor: COLORREF;
  1593.     lbHatch: ULONG_PTR; // Sundown: lbHatch could hold a HANDLE
  1594.   end;
  1595.   {$EXTERNALSYM tagLOGBRUSH}
  1596.   LOGBRUSH = tagLOGBRUSH;
  1597.   {$EXTERNALSYM LOGBRUSH}
  1598.   LPLOGBRUSH = ^LOGBRUSH;
  1599.   {$EXTERNALSYM LPLOGBRUSH}
  1600.   NPLOGBRUSH = ^LOGBRUSH;
  1601.   {$EXTERNALSYM NPLOGBRUSH}
  1602.   TLogBrush = LOGBRUSH;
  1603.   PLogBrush32 = ^TLogBrush32;
  1604.   tagLOGBRUSH32 = record
  1605.     lbStyle: UINT;
  1606.     lbColor: COLORREF;
  1607.     lbHatch: ULONG;
  1608.   end;
  1609.   {$EXTERNALSYM tagLOGBRUSH32}
  1610.   LOGBRUSH32 = tagLOGBRUSH32;
  1611.   {$EXTERNALSYM LOGBRUSH32}
  1612.   LPLOGBRUSH32 = ^LOGBRUSH32;
  1613.   {$EXTERNALSYM LPLOGBRUSH32}
  1614.   NPLOGBRUSH32 = ^LOGBRUSH32;
  1615.   {$EXTERNALSYM NPLOGBRUSH32}
  1616.   TLogBrush32 = LOGBRUSH32;
  1617.   PATTERN = LOGBRUSH;
  1618.   {$EXTERNALSYM PATTERN}
  1619.   PPATTERN = ^PATTERN;
  1620.   {$EXTERNALSYM PPATTERN}
  1621.   LPPATTERN = ^PATTERN;
  1622.   {$EXTERNALSYM LPPATTERN}
  1623.   NPPATTERN = ^PATTERN;
  1624.   {$EXTERNALSYM NPPATTERN}
  1625. // Logical Pen
  1626.   PLogPen = ^TLogPen;
  1627.   tagLOGPEN = record
  1628.     lopnStyle: UINT;
  1629.     lopnWidth: POINT;
  1630.     lopnColor: COLORREF;
  1631.   end;
  1632.   {$EXTERNALSYM tagLOGPEN}
  1633.   LOGPEN = tagLOGPEN;
  1634.   {$EXTERNALSYM LOGPEN}
  1635.   LPLOGPEN = ^LOGPEN;
  1636.   {$EXTERNALSYM LPLOGPEN}
  1637.   NPLOGPEN = ^LOGPEN;
  1638.   {$EXTERNALSYM NPLOGPEN}
  1639.   TLogPen = LOGPEN;
  1640.   PExtLogPen = ^TExtLogPen;
  1641.   tagEXTLOGPEN = record
  1642.     elpPenStyle: DWORD;
  1643.     elpWidth: DWORD;
  1644.     elpBrushStyle: UINT;
  1645.     elpColor: COLORREF;
  1646.     elpHatch: ULONG_PTR; // Sundown: elpHatch could take a HANDLE
  1647.     elpNumEntries: DWORD;
  1648.     elpStyleEntry: array [0..0] of DWORD;
  1649.   end;
  1650.   {$EXTERNALSYM tagEXTLOGPEN}
  1651.   EXTLOGPEN = tagEXTLOGPEN;
  1652.   {$EXTERNALSYM EXTLOGPEN}
  1653.   LPEXTLOGPEN = ^EXTLOGPEN;
  1654.   {$EXTERNALSYM LPEXTLOGPEN}
  1655.   NPEXTLOGPEN = ^EXTLOGPEN;
  1656.   {$EXTERNALSYM NPEXTLOGPEN}
  1657.   TExtLogPen = EXTLOGPEN;
  1658.   PPaletteEntry = ^TPaletteEntry;
  1659.   tagPALETTEENTRY = record
  1660.     peRed: BYTE;
  1661.     peGreen: BYTE;
  1662.     peBlue: BYTE;
  1663.     peFlags: BYTE;
  1664.   end;
  1665.   {$EXTERNALSYM tagPALETTEENTRY}
  1666.   PALETTEENTRY = tagPALETTEENTRY;
  1667.   {$EXTERNALSYM PALETTEENTRY}
  1668.   LPPALETTEENTRY = ^PALETTEENTRY;
  1669.   {$EXTERNALSYM LPPALETTEENTRY}
  1670.   TPaletteEntry = PALETTEENTRY;
  1671. // Logical Palette
  1672.   PLogPalette = ^TLogPalette;
  1673.   tagLOGPALETTE = record
  1674.     palVersion: WORD;
  1675.     palNumEntries: WORD;
  1676.     palPalEntry: array [0..0] of PALETTEENTRY;
  1677.   end;
  1678.   {$EXTERNALSYM tagLOGPALETTE}
  1679.   LOGPALETTE = tagLOGPALETTE;
  1680.   {$EXTERNALSYM LOGPALETTE}
  1681.   LPLOGPALETTE = ^LOGPALETTE;
  1682.   {$EXTERNALSYM LPLOGPALETTE}
  1683.   NPLOGPALETTE = ^LOGPALETTE;
  1684.   {$EXTERNALSYM NPLOGPALETTE}
  1685.   TLogPalette = LOGPALETTE;
  1686. // Logical Font
  1687. const
  1688.   LF_FACESIZE = 32;
  1689.   {$EXTERNALSYM LF_FACESIZE}
  1690. type
  1691.   PLogFontA = ^TLogFontA;
  1692.   tagLOGFONTA = record
  1693.     lfHeight: LONG;
  1694.     lfWidth: LONG;
  1695.     lfEscapement: LONG;
  1696.     lfOrientation: LONG;
  1697.     lfWeight: LONG;
  1698.     lfItalic: BYTE;
  1699.     lfUnderline: BYTE;
  1700.     lfStrikeOut: BYTE;
  1701.     lfCharSet: BYTE;
  1702.     lfOutPrecision: BYTE;
  1703.     lfClipPrecision: BYTE;
  1704.     lfQuality: BYTE;
  1705.     lfPitchAndFamily: BYTE;
  1706.     lfFaceName: array [0..LF_FACESIZE - 1] of CHAR;
  1707.   end;
  1708.   {$EXTERNALSYM tagLOGFONTA}
  1709.   LOGFONTA = tagLOGFONTA;
  1710.   {$EXTERNALSYM LOGFONTA}
  1711.   LPLOGFONTA = ^LOGFONTA;
  1712.   {$EXTERNALSYM LPLOGFONTA}
  1713.   NPLOGFONTA = ^LOGFONTA;
  1714.   {$EXTERNALSYM NPLOGFONTA}
  1715.   TLogFontA = LOGFONTA;
  1716.   PLogFontW = ^TLogFontW;
  1717.   tagLOGFONTW = record
  1718.     lfHeight: LONG;
  1719.     lfWidth: LONG;
  1720.     lfEscapement: LONG;
  1721.     lfOrientation: LONG;
  1722.     lfWeight: LONG;
  1723.     lfItalic: BYTE;
  1724.     lfUnderline: BYTE;
  1725.     lfStrikeOut: BYTE;
  1726.     lfCharSet: BYTE;
  1727.     lfOutPrecision: BYTE;
  1728.     lfClipPrecision: BYTE;
  1729.     lfQuality: BYTE;
  1730.     lfPitchAndFamily: BYTE;
  1731.     lfFaceName: array [0..LF_FACESIZE - 1] of WCHAR;
  1732.   end;
  1733.   {$EXTERNALSYM tagLOGFONTW}
  1734.   LOGFONTW = tagLOGFONTW;
  1735.   {$EXTERNALSYM LOGFONTW}
  1736.   LPLOGFONTW = ^LOGFONTW;
  1737.   {$EXTERNALSYM LPLOGFONTW}
  1738.   NPLOGFONTW = ^LOGFONTW;
  1739.   {$EXTERNALSYM NPLOGFONTW}
  1740.   TLogFontW = LOGFONTW;
  1741. {$IFDEF UNICODE}
  1742.   LOGFONT = LOGFONTW;
  1743.   {$EXTERNALSYM LOGFONT}
  1744.   PLOGFONT = PLOGFONTW;
  1745.   {$EXTERNALSYM PLOGFONT}
  1746.   NPLOGFONT = NPLOGFONTW;
  1747.   {$EXTERNALSYM NPLOGFONT}
  1748.   LPLOGFONT = LPLOGFONTW;
  1749.   {$EXTERNALSYM LPLOGFONT}
  1750.   TLogFont = TLogFontW;
  1751. {$ELSE}
  1752.   LOGFONT = LOGFONTA;
  1753.   {$EXTERNALSYM LOGFONT}
  1754.   PLOGFONT = PLOGFONTA;
  1755.   {$EXTERNALSYM PLOGFONT}
  1756.   NPLOGFONT = NPLOGFONTA;
  1757.   {$EXTERNALSYM NPLOGFONT}
  1758.   LPLOGFONT = LPLOGFONTA;
  1759.   {$EXTERNALSYM LPLOGFONT}
  1760.   TLogFont = TLogFontA;
  1761. {$ENDIF}
  1762. const
  1763.   LF_FULLFACESIZE = 64;
  1764.   {$EXTERNALSYM LF_FULLFACESIZE}
  1765. // Structure passed to FONTENUMPROC
  1766. type
  1767.   PEnumLogFontA = ^TEnumLogFontA;
  1768.   tagENUMLOGFONTA = record
  1769.     elfLogFont: LOGFONTA;
  1770.     elfFullName: array [ 0..LF_FULLFACESIZE - 1] of BYTE;
  1771.     elfStyle: array [0..LF_FACESIZE - 1] of BYTE;
  1772.   end;
  1773.   {$EXTERNALSYM tagENUMLOGFONTA}
  1774.   ENUMLOGFONTA = tagENUMLOGFONTA;
  1775.   {$EXTERNALSYM ENUMLOGFONTA}
  1776.   LPENUMLOGFONTA = ^ENUMLOGFONTA;
  1777.   {$EXTERNALSYM LPENUMLOGFONTA}
  1778.   TEnumLogFontA = ENUMLOGFONTA;
  1779. // Structure passed to FONTENUMPROC
  1780.   PEnumLogFontW = ^TEnumLogFontW;
  1781.   tagENUMLOGFONTW = record
  1782.     elfLogFont: LOGFONTW;
  1783.     elfFullName: array [0..LF_FULLFACESIZE - 1] of WCHAR;
  1784.     elfStyle: array [0..LF_FACESIZE - 1] of WCHAR;
  1785.   end;
  1786.   {$EXTERNALSYM tagENUMLOGFONTW}
  1787.   ENUMLOGFONTW = tagENUMLOGFONTW;
  1788.   {$EXTERNALSYM ENUMLOGFONTW}
  1789.   LPENUMLOGFONTW = ^ENUMLOGFONTW;
  1790.   {$EXTERNALSYM LPENUMLOGFONTW}
  1791.   TEnumLogFontW = ENUMLOGFONTW;
  1792. {$IFDEF UNICODE}
  1793.   ENUMLOGFONT = ENUMLOGFONTW;
  1794.   {$EXTERNALSYM ENUMLOGFONT}
  1795.   LPENUMLOGFONT = LPENUMLOGFONTW;
  1796.   {$EXTERNALSYM LPENUMLOGFONT}
  1797.   TEnumLogFont = TEnumLogFontW;
  1798.   PEnumLogFont = PEnumLogFontW;
  1799. {$ELSE}
  1800.   ENUMLOGFONT = ENUMLOGFONTA;
  1801.   {$EXTERNALSYM ENUMLOGFONT}
  1802.   LPENUMLOGFONT = LPENUMLOGFONTA;
  1803.   {$EXTERNALSYM LPENUMLOGFONT}
  1804.   TEnumLogFont = TEnumLogFontA;
  1805.   PEnumLogFont = PEnumLogFontA;
  1806. {$ENDIF}
  1807.   PEnumLogFontExA = ^TEnumLogFontExA;
  1808.   tagENUMLOGFONTEXA = record
  1809.     elfLogFont: LOGFONTA;
  1810.     elfFullName: array [0..LF_FULLFACESIZE - 1] of BYTE;
  1811.     elfStyle: array [0..LF_FACESIZE - 1] of BYTE;
  1812.     elfScript: array [0..LF_FACESIZE - 1] of BYTE;
  1813.   end;
  1814.   {$EXTERNALSYM tagENUMLOGFONTEXA}
  1815.   ENUMLOGFONTEXA = tagENUMLOGFONTEXA;
  1816.   {$EXTERNALSYM ENUMLOGFONTEXA}
  1817.   LPENUMLOGFONTEXA = ^ENUMLOGFONTEXA;
  1818.   {$EXTERNALSYM LPENUMLOGFONTEXA}
  1819.   TEnumLogFontExA = ENUMLOGFONTEXA;
  1820.   PEnumLogFontExW = ^TEnumLogFontExW;
  1821.   tagENUMLOGFONTEXW = record
  1822.     elfLogFont: LOGFONTW;
  1823.     elfFullName: array [0..LF_FULLFACESIZE - 1] of WCHAR;
  1824.     elfStyle: array [0..LF_FACESIZE - 1] of WCHAR;
  1825.     elfScript: array [0..LF_FACESIZE - 1] of WCHAR;
  1826.   end;
  1827.   {$EXTERNALSYM tagENUMLOGFONTEXW}
  1828.   ENUMLOGFONTEXW = tagENUMLOGFONTEXW;
  1829.   {$EXTERNALSYM ENUMLOGFONTEXW}
  1830.   LPENUMLOGFONTEXW = ^ENUMLOGFONTEXW;
  1831.   {$EXTERNALSYM LPENUMLOGFONTEXW}
  1832.   TEnumLogFontExW = ENUMLOGFONTEXW;
  1833. {$IFDEF UNICODE}
  1834.   ENUMLOGFONTEX = ENUMLOGFONTEXW;
  1835.   {$EXTERNALSYM ENUMLOGFONTEX}
  1836.   LPENUMLOGFONTEX = LPENUMLOGFONTEXW;
  1837.   {$EXTERNALSYM LPENUMLOGFONTEX}
  1838.   TEnumLogFontEx = TEnumLogFontExW;
  1839.   PEnumLogFontEx = PEnumLogFontExW;
  1840. {$ELSE}
  1841.   ENUMLOGFONTEX = ENUMLOGFONTEXA;
  1842.   {$EXTERNALSYM ENUMLOGFONTEX}
  1843.   LPENUMLOGFONTEX = LPENUMLOGFONTEXA;
  1844.   {$EXTERNALSYM LPENUMLOGFONTEX}
  1845.   TEnumLogFontEx = TEnumLogFontExA;
  1846.   PEnumLogFontEx = PEnumLogFontExA;
  1847. {$ENDIF}
  1848. const
  1849.   OUT_DEFAULT_PRECIS        = 0;
  1850.   {$EXTERNALSYM OUT_DEFAULT_PRECIS}
  1851.   OUT_STRING_PRECIS         = 1;
  1852.   {$EXTERNALSYM OUT_STRING_PRECIS}
  1853.   OUT_CHARACTER_PRECIS      = 2;
  1854.   {$EXTERNALSYM OUT_CHARACTER_PRECIS}
  1855.   OUT_STROKE_PRECIS         = 3;
  1856.   {$EXTERNALSYM OUT_STROKE_PRECIS}
  1857.   OUT_TT_PRECIS             = 4;
  1858.   {$EXTERNALSYM OUT_TT_PRECIS}
  1859.   OUT_DEVICE_PRECIS         = 5;
  1860.   {$EXTERNALSYM OUT_DEVICE_PRECIS}
  1861.   OUT_RASTER_PRECIS         = 6;
  1862.   {$EXTERNALSYM OUT_RASTER_PRECIS}
  1863.   OUT_TT_ONLY_PRECIS        = 7;
  1864.   {$EXTERNALSYM OUT_TT_ONLY_PRECIS}
  1865.   OUT_OUTLINE_PRECIS        = 8;
  1866.   {$EXTERNALSYM OUT_OUTLINE_PRECIS}
  1867.   OUT_SCREEN_OUTLINE_PRECIS = 9;
  1868.   {$EXTERNALSYM OUT_SCREEN_OUTLINE_PRECIS}
  1869.   OUT_PS_ONLY_PRECIS        = 10;
  1870.   {$EXTERNALSYM OUT_PS_ONLY_PRECIS}
  1871.   CLIP_DEFAULT_PRECIS   = 0;
  1872.   {$EXTERNALSYM CLIP_DEFAULT_PRECIS}
  1873.   CLIP_CHARACTER_PRECIS = 1;
  1874.   {$EXTERNALSYM CLIP_CHARACTER_PRECIS}
  1875.   CLIP_STROKE_PRECIS    = 2;
  1876.   {$EXTERNALSYM CLIP_STROKE_PRECIS}
  1877.   CLIP_MASK             = $f;
  1878.   {$EXTERNALSYM CLIP_MASK}
  1879.   CLIP_LH_ANGLES        = (1 shl 4);
  1880.   {$EXTERNALSYM CLIP_LH_ANGLES}
  1881.   CLIP_TT_ALWAYS        = (2 shl 4);
  1882.   {$EXTERNALSYM CLIP_TT_ALWAYS}
  1883.   CLIP_EMBEDDED         = (8 shl 4);
  1884.   {$EXTERNALSYM CLIP_EMBEDDED}
  1885.   DEFAULT_QUALITY        = 0;
  1886.   {$EXTERNALSYM DEFAULT_QUALITY}
  1887.   DRAFT_QUALITY          = 1;
  1888.   {$EXTERNALSYM DRAFT_QUALITY}
  1889.   PROOF_QUALITY          = 2;
  1890.   {$EXTERNALSYM PROOF_QUALITY}
  1891.   NONANTIALIASED_QUALITY = 3;
  1892.   {$EXTERNALSYM NONANTIALIASED_QUALITY}
  1893.   ANTIALIASED_QUALITY    = 4;
  1894.   {$EXTERNALSYM ANTIALIASED_QUALITY}
  1895.   CLEARTYPE_QUALITY      = 5;
  1896.   {$EXTERNALSYM CLEARTYPE_QUALITY}
  1897. //#if (_WIN32_WINNT >= 0x0501)
  1898.   CLEARTYPE_NATURAL_QUALITY = 6;
  1899.   {$EXTERNALSYM CLEARTYPE_NATURAL_QUALITY}
  1900. //#endif
  1901.   DEFAULT_PITCH  = 0;
  1902.   {$EXTERNALSYM DEFAULT_PITCH}
  1903.   FIXED_PITCH    = 1;
  1904.   {$EXTERNALSYM FIXED_PITCH}
  1905.   VARIABLE_PITCH = 2;
  1906.   {$EXTERNALSYM VARIABLE_PITCH}
  1907.   MONO_FONT      = 8;
  1908.   {$EXTERNALSYM MONO_FONT}
  1909.   ANSI_CHARSET        = 0;
  1910.   {$EXTERNALSYM ANSI_CHARSET}
  1911.   DEFAULT_CHARSET     = 1;
  1912.   {$EXTERNALSYM DEFAULT_CHARSET}
  1913.   SYMBOL_CHARSET      = 2;
  1914.   {$EXTERNALSYM SYMBOL_CHARSET}
  1915.   SHIFTJIS_CHARSET    = 128;
  1916.   {$EXTERNALSYM SHIFTJIS_CHARSET}
  1917.   HANGEUL_CHARSET     = 129;
  1918.   {$EXTERNALSYM HANGEUL_CHARSET}
  1919.   HANGUL_CHARSET      = 129;
  1920.   {$EXTERNALSYM HANGUL_CHARSET}
  1921.   GB2312_CHARSET      = 134;
  1922.   {$EXTERNALSYM GB2312_CHARSET}
  1923.   CHINESEBIG5_CHARSET = 136;
  1924.   {$EXTERNALSYM CHINESEBIG5_CHARSET}
  1925.   OEM_CHARSET         = 255;
  1926.   {$EXTERNALSYM OEM_CHARSET}
  1927.   JOHAB_CHARSET       = 130;
  1928.   {$EXTERNALSYM JOHAB_CHARSET}
  1929.   HEBREW_CHARSET      = 177;
  1930.   {$EXTERNALSYM HEBREW_CHARSET}
  1931.   ARABIC_CHARSET      = 178;
  1932.   {$EXTERNALSYM ARABIC_CHARSET}
  1933.   GREEK_CHARSET       = 161;
  1934.   {$EXTERNALSYM GREEK_CHARSET}
  1935.   TURKISH_CHARSET     = 162;
  1936.   {$EXTERNALSYM TURKISH_CHARSET}
  1937.   VIETNAMESE_CHARSET  = 163;
  1938.   {$EXTERNALSYM VIETNAMESE_CHARSET}
  1939.   THAI_CHARSET        = 222;
  1940.   {$EXTERNALSYM THAI_CHARSET}
  1941.   EASTEUROPE_CHARSET  = 238;
  1942.   {$EXTERNALSYM EASTEUROPE_CHARSET}
  1943.   RUSSIAN_CHARSET     = 204;
  1944.   {$EXTERNALSYM RUSSIAN_CHARSET}
  1945.   MAC_CHARSET    = 77;
  1946.   {$EXTERNALSYM MAC_CHARSET}
  1947.   BALTIC_CHARSET = 186;
  1948.   {$EXTERNALSYM BALTIC_CHARSET}
  1949.   FS_LATIN1      = $00000001;
  1950.   {$EXTERNALSYM FS_LATIN1}
  1951.   FS_LATIN2      = $00000002;
  1952.   {$EXTERNALSYM FS_LATIN2}
  1953.   FS_CYRILLIC    = $00000004;
  1954.   {$EXTERNALSYM FS_CYRILLIC}
  1955.   FS_GREEK       = $00000008;
  1956.   {$EXTERNALSYM FS_GREEK}
  1957.   FS_TURKISH     = $00000010;
  1958.   {$EXTERNALSYM FS_TURKISH}
  1959.   FS_HEBREW      = $00000020;
  1960.   {$EXTERNALSYM FS_HEBREW}
  1961.   FS_ARABIC      = $00000040;
  1962.   {$EXTERNALSYM FS_ARABIC}
  1963.   FS_BALTIC      = $00000080;
  1964.   {$EXTERNALSYM FS_BALTIC}
  1965.   FS_VIETNAMESE  = $00000100;
  1966.   {$EXTERNALSYM FS_VIETNAMESE}
  1967.   FS_THAI        = $00010000;
  1968.   {$EXTERNALSYM FS_THAI}
  1969.   FS_JISJAPAN    = $00020000;
  1970.   {$EXTERNALSYM FS_JISJAPAN}
  1971.   FS_CHINESESIMP = $00040000;
  1972.   {$EXTERNALSYM FS_CHINESESIMP}
  1973.   FS_WANSUNG     = $00080000;
  1974.   {$EXTERNALSYM FS_WANSUNG}
  1975.   FS_CHINESETRAD = $00100000;
  1976.   {$EXTERNALSYM FS_CHINESETRAD}
  1977.   FS_JOHAB       = $00200000;
  1978.   {$EXTERNALSYM FS_JOHAB}
  1979.   FS_SYMBOL      = $80000000;
  1980.   {$EXTERNALSYM FS_SYMBOL}
  1981. // Font Families
  1982.   FF_DONTCARE   = (0 shl 4); // Don't care or don't know.
  1983.   {$EXTERNALSYM FF_DONTCARE}
  1984.   FF_ROMAN      = (1 shl 4); // Variable stroke width, serifed.
  1985.   {$EXTERNALSYM FF_ROMAN}
  1986.                              // Times Roman, Century Schoolbook, etc.
  1987.   FF_SWISS      = (2 shl 4); // Variable stroke width, sans-serifed.
  1988.   {$EXTERNALSYM FF_SWISS}
  1989.                              // Helvetica, Swiss, etc.
  1990.   FF_MODERN     = (3 shl 4); // Constant stroke width, serifed or sans-serifed.
  1991.   {$EXTERNALSYM FF_MODERN}
  1992.                              // Pica, Elite, Courier, etc.
  1993.   FF_SCRIPT     = (4 shl 4); // Cursive, etc.
  1994.   {$EXTERNALSYM FF_SCRIPT}
  1995.   FF_DECORATIVE = (5 shl 4); // Old English, etc.
  1996.   {$EXTERNALSYM FF_DECORATIVE}
  1997. // Font Weights
  1998.   FW_DONTCARE   = 0;
  1999.   {$EXTERNALSYM FW_DONTCARE}
  2000.   FW_THIN       = 100;
  2001.   {$EXTERNALSYM FW_THIN}
  2002.   FW_EXTRALIGHT = 200;
  2003.   {$EXTERNALSYM FW_EXTRALIGHT}
  2004.   FW_LIGHT      = 300;
  2005.   {$EXTERNALSYM FW_LIGHT}
  2006.   FW_NORMAL     = 400;
  2007.   {$EXTERNALSYM FW_NORMAL}
  2008.   FW_MEDIUM     = 500;
  2009.   {$EXTERNALSYM FW_MEDIUM}
  2010.   FW_SEMIBOLD   = 600;
  2011.   {$EXTERNALSYM FW_SEMIBOLD}
  2012.   FW_BOLD       = 700;
  2013.   {$EXTERNALSYM FW_BOLD}
  2014.   FW_EXTRABOLD  = 800;
  2015.   {$EXTERNALSYM FW_EXTRABOLD}
  2016.   FW_HEAVY      = 900;
  2017.   {$EXTERNALSYM FW_HEAVY}
  2018.   FW_ULTRALIGHT = FW_EXTRALIGHT;
  2019.   {$EXTERNALSYM FW_ULTRALIGHT}
  2020.   FW_REGULAR    = FW_NORMAL;
  2021.   {$EXTERNALSYM FW_REGULAR}
  2022.   FW_DEMIBOLD   = FW_SEMIBOLD;
  2023.   {$EXTERNALSYM FW_DEMIBOLD}
  2024.   FW_ULTRABOLD  = FW_EXTRABOLD;
  2025.   {$EXTERNALSYM FW_ULTRABOLD}
  2026.   FW_BLACK      = FW_HEAVY;
  2027.   {$EXTERNALSYM FW_BLACK}
  2028.   PANOSE_COUNT              = 10;
  2029.   {$EXTERNALSYM PANOSE_COUNT}
  2030.   PAN_FAMILYTYPE_INDEX      = 0;
  2031.   {$EXTERNALSYM PAN_FAMILYTYPE_INDEX}
  2032.   PAN_SERIFSTYLE_INDEX      = 1;
  2033.   {$EXTERNALSYM PAN_SERIFSTYLE_INDEX}
  2034.   PAN_WEIGHT_INDEX          = 2;
  2035.   {$EXTERNALSYM PAN_WEIGHT_INDEX}
  2036.   PAN_PROPORTION_INDEX      = 3;
  2037.   {$EXTERNALSYM PAN_PROPORTION_INDEX}
  2038.   PAN_CONTRAST_INDEX        = 4;
  2039.   {$EXTERNALSYM PAN_CONTRAST_INDEX}
  2040.   PAN_STROKEVARIATION_INDEX = 5;
  2041.   {$EXTERNALSYM PAN_STROKEVARIATION_INDEX}
  2042.   PAN_ARMSTYLE_INDEX        = 6;
  2043.   {$EXTERNALSYM PAN_ARMSTYLE_INDEX}
  2044.   PAN_LETTERFORM_INDEX      = 7;
  2045.   {$EXTERNALSYM PAN_LETTERFORM_INDEX}
  2046.   PAN_MIDLINE_INDEX         = 8;
  2047.   {$EXTERNALSYM PAN_MIDLINE_INDEX}
  2048.   PAN_XHEIGHT_INDEX         = 9;
  2049.   {$EXTERNALSYM PAN_XHEIGHT_INDEX}
  2050.   PAN_CULTURE_LATIN = 0;
  2051.   {$EXTERNALSYM PAN_CULTURE_LATIN}
  2052. type
  2053.   PPanose = ^TPanose;
  2054.   tagPANOSE = record
  2055.     bFamilyType: BYTE;
  2056.     bSerifStyle: BYTE;
  2057.     bWeight: BYTE;
  2058.     bProportion: BYTE;
  2059.     bContrast: BYTE;
  2060.     bStrokeVariation: BYTE;
  2061.     bArmStyle: BYTE;
  2062.     bLetterform: BYTE;
  2063.     bMidline: BYTE;
  2064.     bXHeight: BYTE;
  2065.   end;
  2066.   {$EXTERNALSYM tagPANOSE}
  2067.   PANOSE = tagPANOSE;
  2068.   {$EXTERNALSYM PANOSE}
  2069.   LPPANOSE = ^PANOSE;
  2070.   {$EXTERNALSYM LPPANOSE}
  2071.   TPanose = PANOSE;
  2072. const
  2073.   PAN_ANY    = 0; // Any
  2074.   {$EXTERNALSYM PAN_ANY}
  2075.   PAN_NO_FIT = 1; // No Fit
  2076.   {$EXTERNALSYM PAN_NO_FIT}
  2077.   PAN_FAMILY_TEXT_DISPLAY = 2; // Text and Display
  2078.   {$EXTERNALSYM PAN_FAMILY_TEXT_DISPLAY}
  2079.   PAN_FAMILY_SCRIPT       = 3; // Script
  2080.   {$EXTERNALSYM PAN_FAMILY_SCRIPT}
  2081.   PAN_FAMILY_DECORATIVE   = 4; // Decorative
  2082.   {$EXTERNALSYM PAN_FAMILY_DECORATIVE}
  2083.   PAN_FAMILY_PICTORIAL    = 5; // Pictorial
  2084.   {$EXTERNALSYM PAN_FAMILY_PICTORIAL}
  2085.   PAN_SERIF_COVE               = 2; // Cove
  2086.   {$EXTERNALSYM PAN_SERIF_COVE}
  2087.   PAN_SERIF_OBTUSE_COVE        = 3; // Obtuse Cove
  2088.   {$EXTERNALSYM PAN_SERIF_OBTUSE_COVE}
  2089.   PAN_SERIF_SQUARE_COVE        = 4; // Square Cove
  2090.   {$EXTERNALSYM PAN_SERIF_SQUARE_COVE}
  2091.   PAN_SERIF_OBTUSE_SQUARE_COVE = 5; // Obtuse Square Cove
  2092.   {$EXTERNALSYM PAN_SERIF_OBTUSE_SQUARE_COVE}
  2093.   PAN_SERIF_SQUARE             = 6; // Square
  2094.   {$EXTERNALSYM PAN_SERIF_SQUARE}
  2095.   PAN_SERIF_THIN               = 7; // Thin
  2096.   {$EXTERNALSYM PAN_SERIF_THIN}
  2097.   PAN_SERIF_BONE               = 8; // Bone
  2098.   {$EXTERNALSYM PAN_SERIF_BONE}
  2099.   PAN_SERIF_EXAGGERATED        = 9; // Exaggerated
  2100.   {$EXTERNALSYM PAN_SERIF_EXAGGERATED}
  2101.   PAN_SERIF_TRIANGLE           = 10; // Triangle
  2102.   {$EXTERNALSYM PAN_SERIF_TRIANGLE}
  2103.   PAN_SERIF_NORMAL_SANS        = 11; // Normal Sans
  2104.   {$EXTERNALSYM PAN_SERIF_NORMAL_SANS}
  2105.   PAN_SERIF_OBTUSE_SANS        = 12; // Obtuse Sans
  2106.   {$EXTERNALSYM PAN_SERIF_OBTUSE_SANS}
  2107.   PAN_SERIF_PERP_SANS          = 13; // Prep Sans
  2108.   {$EXTERNALSYM PAN_SERIF_PERP_SANS}
  2109.   PAN_SERIF_FLARED             = 14; // Flared
  2110.   {$EXTERNALSYM PAN_SERIF_FLARED}
  2111.   PAN_SERIF_ROUNDED            = 15; // Rounded
  2112.   {$EXTERNALSYM PAN_SERIF_ROUNDED}
  2113.   PAN_WEIGHT_VERY_LIGHT = 2; // Very Light
  2114.   {$EXTERNALSYM PAN_WEIGHT_VERY_LIGHT}
  2115.   PAN_WEIGHT_LIGHT      = 3; // Light
  2116.   {$EXTERNALSYM PAN_WEIGHT_LIGHT}
  2117.   PAN_WEIGHT_THIN       = 4; // Thin
  2118.   {$EXTERNALSYM PAN_WEIGHT_THIN}
  2119.   PAN_WEIGHT_BOOK       = 5; // Book
  2120.   {$EXTERNALSYM PAN_WEIGHT_BOOK}
  2121.   PAN_WEIGHT_MEDIUM     = 6; // Medium
  2122.   {$EXTERNALSYM PAN_WEIGHT_MEDIUM}
  2123.   PAN_WEIGHT_DEMI       = 7; // Demi
  2124.   {$EXTERNALSYM PAN_WEIGHT_DEMI}
  2125.   PAN_WEIGHT_BOLD       = 8; // Bold
  2126.   {$EXTERNALSYM PAN_WEIGHT_BOLD}
  2127.   PAN_WEIGHT_HEAVY      = 9; // Heavy
  2128.   {$EXTERNALSYM PAN_WEIGHT_HEAVY}
  2129.   PAN_WEIGHT_BLACK      = 10; // Black
  2130.   {$EXTERNALSYM PAN_WEIGHT_BLACK}
  2131.   PAN_WEIGHT_NORD       = 11; // Nord
  2132.   {$EXTERNALSYM PAN_WEIGHT_NORD}
  2133.   PAN_PROP_OLD_STYLE      = 2; // Old Style
  2134.   {$EXTERNALSYM PAN_PROP_OLD_STYLE}
  2135.   PAN_PROP_MODERN         = 3; // Modern
  2136.   {$EXTERNALSYM PAN_PROP_MODERN}
  2137.   PAN_PROP_EVEN_WIDTH     = 4; // Even Width
  2138.   {$EXTERNALSYM PAN_PROP_EVEN_WIDTH}
  2139.   PAN_PROP_EXPANDED       = 5; // Expanded
  2140.   {$EXTERNALSYM PAN_PROP_EXPANDED}
  2141.   PAN_PROP_CONDENSED      = 6; // Condensed
  2142.   {$EXTERNALSYM PAN_PROP_CONDENSED}
  2143.   PAN_PROP_VERY_EXPANDED  = 7; // Very Expanded
  2144.   {$EXTERNALSYM PAN_PROP_VERY_EXPANDED}
  2145.   PAN_PROP_VERY_CONDENSED = 8; // Very Condensed
  2146.   {$EXTERNALSYM PAN_PROP_VERY_CONDENSED}
  2147.   PAN_PROP_MONOSPACED     = 9; // Monospaced
  2148.   {$EXTERNALSYM PAN_PROP_MONOSPACED}
  2149.   PAN_CONTRAST_NONE        = 2; // None
  2150.   {$EXTERNALSYM PAN_CONTRAST_NONE}
  2151.   PAN_CONTRAST_VERY_LOW    = 3; // Very Low
  2152.   {$EXTERNALSYM PAN_CONTRAST_VERY_LOW}
  2153.   PAN_CONTRAST_LOW         = 4; // Low
  2154.   {$EXTERNALSYM PAN_CONTRAST_LOW}
  2155.   PAN_CONTRAST_MEDIUM_LOW  = 5; // Medium Low
  2156.   {$EXTERNALSYM PAN_CONTRAST_MEDIUM_LOW}
  2157.   PAN_CONTRAST_MEDIUM      = 6; // Medium
  2158.   {$EXTERNALSYM PAN_CONTRAST_MEDIUM}
  2159.   PAN_CONTRAST_MEDIUM_HIGH = 7; // Mediim High
  2160.   {$EXTERNALSYM PAN_CONTRAST_MEDIUM_HIGH}
  2161.   PAN_CONTRAST_HIGH        = 8; // High
  2162.   {$EXTERNALSYM PAN_CONTRAST_HIGH}
  2163.   PAN_CONTRAST_VERY_HIGH   = 9; // Very High
  2164.   {$EXTERNALSYM PAN_CONTRAST_VERY_HIGH}
  2165.   PAN_STROKE_GRADUAL_DIAG = 2; // Gradual/Diagonal
  2166.   {$EXTERNALSYM PAN_STROKE_GRADUAL_DIAG}
  2167.   PAN_STROKE_GRADUAL_TRAN = 3; // Gradual/Transitional
  2168.   {$EXTERNALSYM PAN_STROKE_GRADUAL_TRAN}
  2169.   PAN_STROKE_GRADUAL_VERT = 4; // Gradual/Vertical
  2170.   {$EXTERNALSYM PAN_STROKE_GRADUAL_VERT}
  2171.   PAN_STROKE_GRADUAL_HORZ = 5; // Gradual/Horizontal
  2172.   {$EXTERNALSYM PAN_STROKE_GRADUAL_HORZ}
  2173.   PAN_STROKE_RAPID_VERT   = 6; // Rapid/Vertical
  2174.   {$EXTERNALSYM PAN_STROKE_RAPID_VERT}
  2175.   PAN_STROKE_RAPID_HORZ   = 7; // Rapid/Horizontal
  2176.   {$EXTERNALSYM PAN_STROKE_RAPID_HORZ}
  2177.   PAN_STROKE_INSTANT_VERT = 8; // Instant/Vertical
  2178.   {$EXTERNALSYM PAN_STROKE_INSTANT_VERT}
  2179.   PAN_STRAIGHT_ARMS_HORZ         = 2; // Straight Arms/Horizontal
  2180.   {$EXTERNALSYM PAN_STRAIGHT_ARMS_HORZ}
  2181.   PAN_STRAIGHT_ARMS_WEDGE        = 3; // Straight Arms/Wedge
  2182.   {$EXTERNALSYM PAN_STRAIGHT_ARMS_WEDGE}
  2183.   PAN_STRAIGHT_ARMS_VERT         = 4; // Straight Arms/Vertical
  2184.   {$EXTERNALSYM PAN_STRAIGHT_ARMS_VERT}
  2185.   PAN_STRAIGHT_ARMS_SINGLE_SERIF = 5; // Straight Arms/Single-Serif
  2186.   {$EXTERNALSYM PAN_STRAIGHT_ARMS_SINGLE_SERIF}
  2187.   PAN_STRAIGHT_ARMS_DOUBLE_SERIF = 6; // Straight Arms/Double-Serif
  2188.   {$EXTERNALSYM PAN_STRAIGHT_ARMS_DOUBLE_SERIF}
  2189.   PAN_BENT_ARMS_HORZ             = 7; // Non-Straight Arms/Horizontal
  2190.   {$EXTERNALSYM PAN_BENT_ARMS_HORZ}
  2191.   PAN_BENT_ARMS_WEDGE            = 8; // Non-Straight Arms/Wedge
  2192.   {$EXTERNALSYM PAN_BENT_ARMS_WEDGE}
  2193.   PAN_BENT_ARMS_VERT             = 9; // Non-Straight Arms/Vertical
  2194.   {$EXTERNALSYM PAN_BENT_ARMS_VERT}
  2195.   PAN_BENT_ARMS_SINGLE_SERIF     = 10; // Non-Straight Arms/Single-Serif
  2196.   {$EXTERNALSYM PAN_BENT_ARMS_SINGLE_SERIF}
  2197.   PAN_BENT_ARMS_DOUBLE_SERIF     = 11; // Non-Straight Arms/Double-Serif
  2198.   {$EXTERNALSYM PAN_BENT_ARMS_DOUBLE_SERIF}
  2199.   PAN_LETT_NORMAL_CONTACT     = 2; // Normal/Contact
  2200.   {$EXTERNALSYM PAN_LETT_NORMAL_CONTACT}
  2201.   PAN_LETT_NORMAL_WEIGHTED    = 3; // Normal/Weighted
  2202.   {$EXTERNALSYM PAN_LETT_NORMAL_WEIGHTED}
  2203.   PAN_LETT_NORMAL_BOXED       = 4; // Normal/Boxed
  2204.   {$EXTERNALSYM PAN_LETT_NORMAL_BOXED}
  2205.   PAN_LETT_NORMAL_FLATTENED   = 5; // Normal/Flattened
  2206.   {$EXTERNALSYM PAN_LETT_NORMAL_FLATTENED}
  2207.   PAN_LETT_NORMAL_ROUNDED     = 6; // Normal/Rounded
  2208.   {$EXTERNALSYM PAN_LETT_NORMAL_ROUNDED}
  2209.   PAN_LETT_NORMAL_OFF_CENTER  = 7; // Normal/Off Center
  2210.   {$EXTERNALSYM PAN_LETT_NORMAL_OFF_CENTER}
  2211.   PAN_LETT_NORMAL_SQUARE      = 8; // Normal/Square
  2212.   {$EXTERNALSYM PAN_LETT_NORMAL_SQUARE}
  2213.   PAN_LETT_OBLIQUE_CONTACT    = 9; // Oblique/Contact
  2214.   {$EXTERNALSYM PAN_LETT_OBLIQUE_CONTACT}
  2215.   PAN_LETT_OBLIQUE_WEIGHTED   = 10; // Oblique/Weighted
  2216.   {$EXTERNALSYM PAN_LETT_OBLIQUE_WEIGHTED}
  2217.   PAN_LETT_OBLIQUE_BOXED      = 11; // Oblique/Boxed
  2218.   {$EXTERNALSYM PAN_LETT_OBLIQUE_BOXED}
  2219.   PAN_LETT_OBLIQUE_FLATTENED  = 12; // Oblique/Flattened
  2220.   {$EXTERNALSYM PAN_LETT_OBLIQUE_FLATTENED}
  2221.   PAN_LETT_OBLIQUE_ROUNDED    = 13; // Oblique/Rounded
  2222.   {$EXTERNALSYM PAN_LETT_OBLIQUE_ROUNDED}
  2223.   PAN_LETT_OBLIQUE_OFF_CENTER = 14; // Oblique/Off Center
  2224.   {$EXTERNALSYM PAN_LETT_OBLIQUE_OFF_CENTER}
  2225.   PAN_LETT_OBLIQUE_SQUARE     = 15; // Oblique/Square
  2226.   {$EXTERNALSYM PAN_LETT_OBLIQUE_SQUARE}
  2227.   PAN_MIDLINE_STANDARD_TRIMMED = 2; // Standard/Trimmed
  2228.   {$EXTERNALSYM PAN_MIDLINE_STANDARD_TRIMMED}
  2229.   PAN_MIDLINE_STANDARD_POINTED = 3; // Standard/Pointed
  2230.   {$EXTERNALSYM PAN_MIDLINE_STANDARD_POINTED}
  2231.   PAN_MIDLINE_STANDARD_SERIFED = 4; // Standard/Serifed
  2232.   {$EXTERNALSYM PAN_MIDLINE_STANDARD_SERIFED}
  2233.   PAN_MIDLINE_HIGH_TRIMMED     = 5; // High/Trimmed
  2234.   {$EXTERNALSYM PAN_MIDLINE_HIGH_TRIMMED}
  2235.   PAN_MIDLINE_HIGH_POINTED     = 6; // High/Pointed
  2236.   {$EXTERNALSYM PAN_MIDLINE_HIGH_POINTED}
  2237.   PAN_MIDLINE_HIGH_SERIFED     = 7; // High/Serifed
  2238.   {$EXTERNALSYM PAN_MIDLINE_HIGH_SERIFED}
  2239.   PAN_MIDLINE_CONSTANT_TRIMMED = 8; // Constant/Trimmed
  2240.   {$EXTERNALSYM PAN_MIDLINE_CONSTANT_TRIMMED}
  2241.   PAN_MIDLINE_CONSTANT_POINTED = 9; // Constant/Pointed
  2242.   {$EXTERNALSYM PAN_MIDLINE_CONSTANT_POINTED}
  2243.   PAN_MIDLINE_CONSTANT_SERIFED = 10; // Constant/Serifed
  2244.   {$EXTERNALSYM PAN_MIDLINE_CONSTANT_SERIFED}
  2245.   PAN_MIDLINE_LOW_TRIMMED      = 11; // Low/Trimmed
  2246.   {$EXTERNALSYM PAN_MIDLINE_LOW_TRIMMED}
  2247.   PAN_MIDLINE_LOW_POINTED      = 12; // Low/Pointed
  2248.   {$EXTERNALSYM PAN_MIDLINE_LOW_POINTED}
  2249.   PAN_MIDLINE_LOW_SERIFED      = 13; // Low/Serifed
  2250.   {$EXTERNALSYM PAN_MIDLINE_LOW_SERIFED}
  2251.   PAN_XHEIGHT_CONSTANT_SMALL = 2; // Constant/Small
  2252.   {$EXTERNALSYM PAN_XHEIGHT_CONSTANT_SMALL}
  2253.   PAN_XHEIGHT_CONSTANT_STD   = 3; // Constant/Standard
  2254.   {$EXTERNALSYM PAN_XHEIGHT_CONSTANT_STD}
  2255.   PAN_XHEIGHT_CONSTANT_LARGE = 4; // Constant/Large
  2256.   {$EXTERNALSYM PAN_XHEIGHT_CONSTANT_LARGE}
  2257.   PAN_XHEIGHT_DUCKING_SMALL  = 5; // Ducking/Small
  2258.   {$EXTERNALSYM PAN_XHEIGHT_DUCKING_SMALL}
  2259.   PAN_XHEIGHT_DUCKING_STD    = 6; // Ducking/Standard
  2260.   {$EXTERNALSYM PAN_XHEIGHT_DUCKING_STD}
  2261.   PAN_XHEIGHT_DUCKING_LARGE  = 7; // Ducking/Large
  2262.   {$EXTERNALSYM PAN_XHEIGHT_DUCKING_LARGE}
  2263.   ELF_VENDOR_SIZE = 4;
  2264.   {$EXTERNALSYM ELF_VENDOR_SIZE}
  2265. // The extended logical font
  2266. // An extension of the ENUMLOGFONT
  2267. type
  2268.   PExtLogFontA = ^TExtLogFontA;
  2269.   tagEXTLOGFONTA = record
  2270.     elfLogFont: LOGFONTA;
  2271.     elfFullName: array [0..LF_FULLFACESIZE - 1] of BYTE;
  2272.     elfStyle: array [0..LF_FACESIZE - 1] of BYTE;
  2273.     elfVersion: DWORD;
  2274.     elfStyleSize: DWORD;
  2275.     elfMatch: DWORD;
  2276.     elfReserved: DWORD;
  2277.     elfVendorId: array [0..ELF_VENDOR_SIZE - 1] of BYTE;
  2278.     elfCulture: DWORD;
  2279.     elfPanose: PANOSE;
  2280.   end;
  2281.   {$EXTERNALSYM tagEXTLOGFONTA}
  2282.   EXTLOGFONTA = tagEXTLOGFONTA;
  2283.   {$EXTERNALSYM EXTLOGFONTA}
  2284.   LPEXTLOGFONTA = ^EXTLOGFONTA;
  2285.   {$EXTERNALSYM LPEXTLOGFONTA}
  2286.   NPEXTLOGFONTA = ^EXTLOGFONTA;
  2287.   {$EXTERNALSYM NPEXTLOGFONTA}
  2288.   TExtLogFontA = EXTLOGFONTA;
  2289.   PExtLogFontW = ^TExtLogFontW;
  2290.   tagEXTLOGFONTW = record
  2291.     elfLogFont: LOGFONTW;
  2292.     elfFullName: array [0..LF_FULLFACESIZE - 1] of WCHAR;
  2293.     elfStyle: array [0..LF_FACESIZE - 1] of WCHAR;
  2294.     elfVersion: DWORD;
  2295.     elfStyleSize: DWORD;
  2296.     elfMatch: DWORD;
  2297.     elfReserved: DWORD;
  2298.     elfVendorId: array [0..ELF_VENDOR_SIZE - 1] of BYTE;
  2299.     elfCulture: DWORD;
  2300.     elfPanose: PANOSE;
  2301.   end;
  2302.   {$EXTERNALSYM tagEXTLOGFONTW}
  2303.   EXTLOGFONTW = tagEXTLOGFONTW;
  2304.   {$EXTERNALSYM EXTLOGFONTW}
  2305.   LPEXTLOGFONTW = ^EXTLOGFONTW;
  2306.   {$EXTERNALSYM LPEXTLOGFONTW}
  2307.   NPEXTLOGFONTW = ^EXTLOGFONTW;
  2308.   {$EXTERNALSYM NPEXTLOGFONTW}
  2309.   TExtLogFontW = EXTLOGFONTW;
  2310. {$IFDEF UNICODE}
  2311.   EXTLOGFONT = EXTLOGFONTW;
  2312.   {$EXTERNALSYM EXTLOGFONT}
  2313.   PEXTLOGFONT = PEXTLOGFONTW;
  2314.   {$EXTERNALSYM PEXTLOGFONT}
  2315.   NPEXTLOGFONT = NPEXTLOGFONTW;
  2316.   {$EXTERNALSYM NPEXTLOGFONT}
  2317.   LPEXTLOGFONT = LPEXTLOGFONTW;
  2318.   {$EXTERNALSYM LPEXTLOGFONT}
  2319.   TExtLogFont = TExtLogFontW;
  2320. {$ELSE}
  2321.   EXTLOGFONT = EXTLOGFONTA;
  2322.   {$EXTERNALSYM EXTLOGFONT}
  2323.   PEXTLOGFONT = PEXTLOGFONTA;
  2324.   {$EXTERNALSYM PEXTLOGFONT}
  2325.   NPEXTLOGFONT = NPEXTLOGFONTA;
  2326.   {$EXTERNALSYM NPEXTLOGFONT}
  2327.   LPEXTLOGFONT = LPEXTLOGFONTA;
  2328.   {$EXTERNALSYM LPEXTLOGFONT}
  2329.   TExtLogFont = TExtLogFontA;
  2330. {$ENDIF}
  2331. const
  2332.   ELF_VERSION       = 0;
  2333.   {$EXTERNALSYM ELF_VERSION}
  2334.   ELF_CULTURE_LATIN = 0;
  2335.   {$EXTERNALSYM ELF_CULTURE_LATIN}
  2336. // EnumFonts Masks
  2337.   RASTER_FONTTYPE   = $0001;
  2338.   {$EXTERNALSYM RASTER_FONTTYPE}
  2339.   DEVICE_FONTTYPE   = $002;
  2340.   {$EXTERNALSYM DEVICE_FONTTYPE}
  2341.   TRUETYPE_FONTTYPE = $004;
  2342.   {$EXTERNALSYM TRUETYPE_FONTTYPE}
  2343. function RGB(r, g, b: BYTE): COLORREF;
  2344. {$EXTERNALSYM RGB}
  2345. function PALETTERGB(r, g, b: BYTE): COLORREF;
  2346. {$EXTERNALSYM PALETTERGB}
  2347. function PALETTEINDEX(i: WORD): COLORREF;
  2348. {$EXTERNALSYM PALETTEINDEX}
  2349. // palette entry flags
  2350. const
  2351.   PC_RESERVED   = $01; // palette index used for animation
  2352.   {$EXTERNALSYM PC_RESERVED}
  2353.   PC_EXPLICIT   = $02; // palette index is explicit to device
  2354.   {$EXTERNALSYM PC_EXPLICIT}
  2355.   PC_NOCOLLAPSE = $04; // do not match color to system palette
  2356.   {$EXTERNALSYM PC_NOCOLLAPSE}
  2357. function GetRValue(rgb: COLORREF): BYTE;
  2358. {$EXTERNALSYM GetRValue}
  2359. function GetGValue(rgb: COLORREF): BYTE;
  2360. {$EXTERNALSYM GetGValue}
  2361. function GetBValue(rgb: COLORREF): BYTE;
  2362. {$EXTERNALSYM GetBValue}
  2363. // Background Modes
  2364. const
  2365.   TRANSPARENT = 1;
  2366.   {$EXTERNALSYM TRANSPARENT}
  2367.   OPAQUE      = 2;
  2368.   {$EXTERNALSYM OPAQUE}
  2369.   BKMODE_LAST = 2;
  2370.   {$EXTERNALSYM BKMODE_LAST}
  2371. // Graphics Modes
  2372.   GM_COMPATIBLE = 1;
  2373.   {$EXTERNALSYM GM_COMPATIBLE}
  2374.   GM_ADVANCED   = 2;
  2375.   {$EXTERNALSYM GM_ADVANCED}
  2376.   GM_LAST       = 2;
  2377.   {$EXTERNALSYM GM_LAST}
  2378. // PolyDraw and GetPath point types
  2379.   PT_CLOSEFIGURE = $01;
  2380.   {$EXTERNALSYM PT_CLOSEFIGURE}
  2381.   PT_LINETO      = $02;
  2382.   {$EXTERNALSYM PT_LINETO}
  2383.   PT_BEZIERTO    = $04;
  2384.   {$EXTERNALSYM PT_BEZIERTO}
  2385.   PT_MOVETO      = $06;
  2386.   {$EXTERNALSYM PT_MOVETO}
  2387. // Mapping Modes
  2388.   MM_TEXT        = 1;
  2389.   {$EXTERNALSYM MM_TEXT}
  2390.   MM_LOMETRIC    = 2;
  2391.   {$EXTERNALSYM MM_LOMETRIC}
  2392.   MM_HIMETRIC    = 3;
  2393.   {$EXTERNALSYM MM_HIMETRIC}
  2394.   MM_LOENGLISH   = 4;
  2395.   {$EXTERNALSYM MM_LOENGLISH}
  2396.   MM_HIENGLISH   = 5;
  2397.   {$EXTERNALSYM MM_HIENGLISH}
  2398.   MM_TWIPS       = 6;
  2399.   {$EXTERNALSYM MM_TWIPS}
  2400.   MM_ISOTROPIC   = 7;
  2401.   {$EXTERNALSYM MM_ISOTROPIC}
  2402.   MM_ANISOTROPIC = 8;
  2403.   {$EXTERNALSYM MM_ANISOTROPIC}
  2404. // Min and Max Mapping Mode values
  2405.   MM_MIN            = MM_TEXT;
  2406.   {$EXTERNALSYM MM_MIN}
  2407.   MM_MAX            = MM_ANISOTROPIC;
  2408.   {$EXTERNALSYM MM_MAX}
  2409.   MM_MAX_FIXEDSCALE = MM_TWIPS;
  2410.   {$EXTERNALSYM MM_MAX_FIXEDSCALE}
  2411. // Coordinate Modes
  2412.   ABSOLUTE = 1;
  2413.   {$EXTERNALSYM ABSOLUTE}
  2414.   RELATIVE = 2;
  2415.   {$EXTERNALSYM RELATIVE}
  2416. // Stock Logical Objects
  2417.   WHITE_BRUSH         = 0;
  2418.   {$EXTERNALSYM WHITE_BRUSH}
  2419.   LTGRAY_BRUSH        = 1;
  2420.   {$EXTERNALSYM LTGRAY_BRUSH}
  2421.   GRAY_BRUSH          = 2;
  2422.   {$EXTERNALSYM GRAY_BRUSH}
  2423.   DKGRAY_BRUSH        = 3;
  2424.   {$EXTERNALSYM DKGRAY_BRUSH}
  2425.   BLACK_BRUSH         = 4;
  2426.   {$EXTERNALSYM BLACK_BRUSH}
  2427.   NULL_BRUSH          = 5;
  2428.   {$EXTERNALSYM NULL_BRUSH}
  2429.   HOLLOW_BRUSH        = NULL_BRUSH;
  2430.   {$EXTERNALSYM HOLLOW_BRUSH}
  2431.   WHITE_PEN           = 6;
  2432.   {$EXTERNALSYM WHITE_PEN}
  2433.   BLACK_PEN           = 7;
  2434.   {$EXTERNALSYM BLACK_PEN}
  2435.   NULL_PEN            = 8;
  2436.   {$EXTERNALSYM NULL_PEN}
  2437.   OEM_FIXED_FONT      = 10;
  2438.   {$EXTERNALSYM OEM_FIXED_FONT}
  2439.   ANSI_FIXED_FONT     = 11;
  2440.   {$EXTERNALSYM ANSI_FIXED_FONT}
  2441.   ANSI_VAR_FONT       = 12;
  2442.   {$EXTERNALSYM ANSI_VAR_FONT}
  2443.   SYSTEM_FONT         = 13;
  2444.   {$EXTERNALSYM SYSTEM_FONT}
  2445.   DEVICE_DEFAULT_FONT = 14;
  2446.   {$EXTERNALSYM DEVICE_DEFAULT_FONT}
  2447.   DEFAULT_PALETTE     = 15;
  2448.   {$EXTERNALSYM DEFAULT_PALETTE}
  2449.   SYSTEM_FIXED_FONT   = 16;
  2450.   {$EXTERNALSYM SYSTEM_FIXED_FONT}
  2451.   DEFAULT_GUI_FONT = 17;
  2452.   {$EXTERNALSYM DEFAULT_GUI_FONT}
  2453.   DC_BRUSH = 18;
  2454.   {$EXTERNALSYM DC_BRUSH}
  2455.   DC_PEN   = 19;
  2456.   {$EXTERNALSYM DC_PEN}
  2457. {$IFDEF WIN32_WINNT_0500_GREATER}
  2458.   STOCK_LAST = 19;
  2459.   {$EXTERNALSYM STOCK_LAST}
  2460. {$ELSE}
  2461. {$IFDEF WINVER_0400_GREATER}
  2462.   STOCK_LAST = 17;
  2463.   {$EXTERNALSYM STOCK_LAST}
  2464. {$ELSE}
  2465.   STOCK_LAST = 16;
  2466.   {$EXTERNALSYM STOCK_LAST}
  2467. {$ENDIF}
  2468. {$ENDIF}
  2469.   CLR_INVALID = DWORD($FFFFFFFF);
  2470.   {$EXTERNALSYM CLR_INVALID}
  2471. // Brush Styles
  2472.   BS_SOLID         = 0;
  2473.   {$EXTERNALSYM BS_SOLID}
  2474.   BS_NULL          = 1;
  2475.   {$EXTERNALSYM BS_NULL}
  2476.   BS_HOLLOW        = BS_NULL;
  2477.   {$EXTERNALSYM BS_HOLLOW}
  2478.   BS_HATCHED       = 2;
  2479.   {$EXTERNALSYM BS_HATCHED}
  2480.   BS_PATTERN       = 3;
  2481.   {$EXTERNALSYM BS_PATTERN}
  2482.   BS_INDEXED       = 4;
  2483.   {$EXTERNALSYM BS_INDEXED}
  2484.   BS_DIBPATTERN    = 5;
  2485.   {$EXTERNALSYM BS_DIBPATTERN}
  2486.   BS_DIBPATTERNPT  = 6;
  2487.   {$EXTERNALSYM BS_DIBPATTERNPT}
  2488.   BS_PATTERN8X8    = 7;
  2489.   {$EXTERNALSYM BS_PATTERN8X8}
  2490.   BS_DIBPATTERN8X8 = 8;
  2491.   {$EXTERNALSYM BS_DIBPATTERN8X8}
  2492.   BS_MONOPATTERN   = 9;
  2493.   {$EXTERNALSYM BS_MONOPATTERN}
  2494. // Hatch Styles
  2495.   HS_HORIZONTAL = 0; // -----
  2496.   {$EXTERNALSYM HS_HORIZONTAL}
  2497.   HS_VERTICAL   = 1; // |||||
  2498.   {$EXTERNALSYM HS_VERTICAL}
  2499.   HS_FDIAGONAL  = 2; // \\
  2500.   {$EXTERNALSYM HS_FDIAGONAL}
  2501.   HS_BDIAGONAL  = 3; // /////
  2502.   {$EXTERNALSYM HS_BDIAGONAL}
  2503.   HS_CROSS      = 4; // +++++
  2504.   {$EXTERNALSYM HS_CROSS}
  2505.   HS_DIAGCROSS  = 5; // xxxxx
  2506.   {$EXTERNALSYM HS_DIAGCROSS}
  2507. // Pen Styles
  2508.   PS_SOLID       = 0;
  2509.   {$EXTERNALSYM PS_SOLID}
  2510.   PS_DASH        = 1; // -------
  2511.   {$EXTERNALSYM PS_DASH}
  2512.   PS_DOT         = 2; // .......
  2513.   {$EXTERNALSYM PS_DOT}
  2514.   PS_DASHDOT     = 3; // _._._._
  2515.   {$EXTERNALSYM PS_DASHDOT}
  2516.   PS_DASHDOTDOT  = 4; // _.._.._
  2517.   {$EXTERNALSYM PS_DASHDOTDOT}
  2518.   PS_NULL        = 5;
  2519.   {$EXTERNALSYM PS_NULL}
  2520.   PS_INSIDEFRAME = 6;
  2521.   {$EXTERNALSYM PS_INSIDEFRAME}
  2522.   PS_USERSTYLE   = 7;
  2523.   {$EXTERNALSYM PS_USERSTYLE}
  2524.   PS_ALTERNATE   = 8;
  2525.   {$EXTERNALSYM PS_ALTERNATE}
  2526.   PS_STYLE_MASK  = $0000000F;
  2527.   {$EXTERNALSYM PS_STYLE_MASK}
  2528.   PS_ENDCAP_ROUND  = $00000000;
  2529.   {$EXTERNALSYM PS_ENDCAP_ROUND}
  2530.   PS_ENDCAP_SQUARE = $00000100;
  2531.   {$EXTERNALSYM PS_ENDCAP_SQUARE}
  2532.   PS_ENDCAP_FLAT   = $00000200;
  2533.   {$EXTERNALSYM PS_ENDCAP_FLAT}
  2534.   PS_ENDCAP_MASK   = $00000F00;
  2535.   {$EXTERNALSYM PS_ENDCAP_MASK}
  2536.   PS_JOIN_ROUND = $00000000;
  2537.   {$EXTERNALSYM PS_JOIN_ROUND}
  2538.   PS_JOIN_BEVEL = $00001000;
  2539.   {$EXTERNALSYM PS_JOIN_BEVEL}
  2540.   PS_JOIN_MITER = $00002000;
  2541.   {$EXTERNALSYM PS_JOIN_MITER}
  2542.   PS_JOIN_MASK  = $0000F000;
  2543.   {$EXTERNALSYM PS_JOIN_MASK}
  2544.   PS_COSMETIC  = $00000000;
  2545.   {$EXTERNALSYM PS_COSMETIC}
  2546.   PS_GEOMETRIC = $00010000;
  2547.   {$EXTERNALSYM PS_GEOMETRIC}
  2548.   PS_TYPE_MASK = $000F0000;
  2549.   {$EXTERNALSYM PS_TYPE_MASK}
  2550.   AD_COUNTERCLOCKWISE = 1;
  2551.   {$EXTERNALSYM AD_COUNTERCLOCKWISE}
  2552.   AD_CLOCKWISE        = 2;
  2553.   {$EXTERNALSYM AD_CLOCKWISE}
  2554. // Device Parameters for GetDeviceCaps()
  2555.   DRIVERVERSION = 0; // Device driver version
  2556.   {$EXTERNALSYM DRIVERVERSION}
  2557.   TECHNOLOGY    = 2; // Device classification
  2558.   {$EXTERNALSYM TECHNOLOGY}
  2559.   HORZSIZE      = 4; // Horizontal size in millimeters
  2560.   {$EXTERNALSYM HORZSIZE}
  2561.   VERTSIZE      = 6; // Vertical size in millimeters
  2562.   {$EXTERNALSYM VERTSIZE}
  2563.   HORZRES       = 8; // Horizontal width in pixels
  2564.   {$EXTERNALSYM HORZRES}
  2565.   VERTRES       = 10; // Vertical height in pixels
  2566.   {$EXTERNALSYM VERTRES}
  2567.   BITSPIXEL     = 12; // Number of bits per pixel
  2568.   {$EXTERNALSYM BITSPIXEL}
  2569.   PLANES        = 14; // Number of planes
  2570.   {$EXTERNALSYM PLANES}
  2571.   NUMBRUSHES    = 16; // Number of brushes the device has
  2572.   {$EXTERNALSYM NUMBRUSHES}
  2573.   NUMPENS       = 18; // Number of pens the device has
  2574.   {$EXTERNALSYM NUMPENS}
  2575.   NUMMARKERS    = 20; // Number of markers the device has
  2576.   {$EXTERNALSYM NUMMARKERS}
  2577.   NUMFONTS      = 22; // Number of fonts the device has
  2578.   {$EXTERNALSYM NUMFONTS}
  2579.   NUMCOLORS     = 24; // Number of colors the device supports
  2580.   {$EXTERNALSYM NUMCOLORS}
  2581.   PDEVICESIZE   = 26; // Size required for device descriptor
  2582.   {$EXTERNALSYM PDEVICESIZE}
  2583.   CURVECAPS     = 28; // Curve capabilities
  2584.   {$EXTERNALSYM CURVECAPS}
  2585.   LINECAPS      = 30; // Line capabilities
  2586.   {$EXTERNALSYM LINECAPS}
  2587.   POLYGONALCAPS = 32; // Polygonal capabilities
  2588.   {$EXTERNALSYM POLYGONALCAPS}
  2589.   TEXTCAPS      = 34; // Text capabilities
  2590.   {$EXTERNALSYM TEXTCAPS}
  2591.   CLIPCAPS      = 36; // Clipping capabilities
  2592.   {$EXTERNALSYM CLIPCAPS}
  2593.   RASTERCAPS    = 38; // Bitblt capabilities
  2594.   {$EXTERNALSYM RASTERCAPS}
  2595.   ASPECTX       = 40; // Length of the X leg
  2596.   {$EXTERNALSYM ASPECTX}
  2597.   ASPECTY       = 42; // Length of the Y leg
  2598.   {$EXTERNALSYM ASPECTY}
  2599.   ASPECTXY      = 44; // Length of the hypotenuse
  2600.   {$EXTERNALSYM ASPECTXY}
  2601.   LOGPIXELSX = 88; // Logical pixels/inch in X
  2602.   {$EXTERNALSYM LOGPIXELSX}
  2603.   LOGPIXELSY = 90; // Logical pixels/inch in Y
  2604.   {$EXTERNALSYM LOGPIXELSY}
  2605.   SIZEPALETTE = 104; // Number of entries in physical palette
  2606.   {$EXTERNALSYM SIZEPALETTE}
  2607.   NUMRESERVED = 106; // Number of reserved entries in palette
  2608.   {$EXTERNALSYM NUMRESERVED}
  2609.   COLORRES    = 108; // Actual color resolution
  2610.   {$EXTERNALSYM COLORRES}
  2611. // Printing related DeviceCaps. These replace the appropriate Escapes
  2612.   PHYSICALWIDTH   = 110; // Physical Width in device units
  2613.   {$EXTERNALSYM PHYSICALWIDTH}
  2614.   PHYSICALHEIGHT  = 111; // Physical Height in device units
  2615.   {$EXTERNALSYM PHYSICALHEIGHT}
  2616.   PHYSICALOFFSETX = 112; // Physical Printable Area x margin
  2617.   {$EXTERNALSYM PHYSICALOFFSETX}
  2618.   PHYSICALOFFSETY = 113; // Physical Printable Area y margin
  2619.   {$EXTERNALSYM PHYSICALOFFSETY}
  2620.   SCALINGFACTORX  = 114; // Scaling factor x
  2621.   {$EXTERNALSYM SCALINGFACTORX}
  2622.   SCALINGFACTORY  = 115; // Scaling factor y
  2623.   {$EXTERNALSYM SCALINGFACTORY}
  2624. // Display driver specific
  2625.   VREFRESH = 116;       // Current vertical refresh rate of the
  2626.   {$EXTERNALSYM VREFRESH}
  2627.                         // display device (for displays only) in Hz
  2628.   DESKTOPVERTRES = 117; // Horizontal width of entire desktop in
  2629.   {$EXTERNALSYM DESKTOPVERTRES}
  2630.                         // pixels
  2631.   DESKTOPHORZRES = 118; // Vertical height of entire desktop in
  2632.   {$EXTERNALSYM DESKTOPHORZRES}
  2633.                         // pixels
  2634.   BLTALIGNMENT = 119;   // Preferred blt alignment
  2635.   {$EXTERNALSYM BLTALIGNMENT}
  2636.   SHADEBLENDCAPS = 120; // Shading and blending caps
  2637.   {$EXTERNALSYM SHADEBLENDCAPS}
  2638.   COLORMGMTCAPS  = 121; // Color Management caps
  2639.   {$EXTERNALSYM COLORMGMTCAPS}
  2640. // Device Capability Masks:
  2641. // Device Technologies
  2642.   DT_PLOTTER    = 0; // Vector plotter
  2643.   {$EXTERNALSYM DT_PLOTTER}
  2644.   DT_RASDISPLAY = 1; // Raster display
  2645.   {$EXTERNALSYM DT_RASDISPLAY}
  2646.   DT_RASPRINTER = 2; // Raster printer
  2647.   {$EXTERNALSYM DT_RASPRINTER}
  2648.   DT_RASCAMERA  = 3; // Raster camera
  2649.   {$EXTERNALSYM DT_RASCAMERA}
  2650.   DT_CHARSTREAM = 4; // Character-stream, PLP
  2651.   {$EXTERNALSYM DT_CHARSTREAM}
  2652.   DT_METAFILE   = 5; // Metafile, VDM
  2653.   {$EXTERNALSYM DT_METAFILE}
  2654.   DT_DISPFILE   = 6; // Display-file
  2655.   {$EXTERNALSYM DT_DISPFILE}
  2656. // Curve Capabilities
  2657.   CC_NONE       = 0; // Curves not supported
  2658.   {$EXTERNALSYM CC_NONE}
  2659.   CC_CIRCLES    = 1; // Can do circles
  2660.   {$EXTERNALSYM CC_CIRCLES}
  2661.   CC_PIE        = 2; // Can do pie wedges
  2662.   {$EXTERNALSYM CC_PIE}
  2663.   CC_CHORD      = 4; // Can do chord arcs
  2664.   {$EXTERNALSYM CC_CHORD}
  2665.   CC_ELLIPSES   = 8; // Can do ellipese
  2666.   {$EXTERNALSYM CC_ELLIPSES}
  2667.   CC_WIDE       = 16; // Can do wide lines
  2668.   {$EXTERNALSYM CC_WIDE}
  2669.   CC_STYLED     = 32; // Can do styled lines
  2670.   {$EXTERNALSYM CC_STYLED}
  2671.   CC_WIDESTYLED = 64; // Can do wide styled lines
  2672.   {$EXTERNALSYM CC_WIDESTYLED}
  2673.   CC_INTERIORS  = 128; // Can do interiors
  2674.   {$EXTERNALSYM CC_INTERIORS}
  2675.   CC_ROUNDRECT  = 256;
  2676.   {$EXTERNALSYM CC_ROUNDRECT}
  2677. // Line Capabilities
  2678.   LC_NONE       = 0; // Lines not supported
  2679.   {$EXTERNALSYM LC_NONE}
  2680.   LC_POLYLINE   = 2; // Can do polylines
  2681.   {$EXTERNALSYM LC_POLYLINE}
  2682.   LC_MARKER     = 4; // Can do markers
  2683.   {$EXTERNALSYM LC_MARKER}
  2684.   LC_POLYMARKER = 8; // Can do polymarkers
  2685.   {$EXTERNALSYM LC_POLYMARKER}
  2686.   LC_WIDE       = 16; // Can do wide lines
  2687.   {$EXTERNALSYM LC_WIDE}
  2688.   LC_STYLED     = 32; // Can do styled lines
  2689.   {$EXTERNALSYM LC_STYLED}
  2690.   LC_WIDESTYLED = 64; // Can do wide styled lines
  2691.   {$EXTERNALSYM LC_WIDESTYLED}
  2692.   LC_INTERIORS  = 128; // Can do interiors
  2693.   {$EXTERNALSYM LC_INTERIORS}
  2694. // Polygonal Capabilities
  2695.   PC_NONE        = 0; // Polygonals not supported
  2696.   {$EXTERNALSYM PC_NONE}
  2697.   PC_POLYGON     = 1; // Can do polygons
  2698.   {$EXTERNALSYM PC_POLYGON}
  2699.   PC_RECTANGLE   = 2; // Can do rectangles
  2700.   {$EXTERNALSYM PC_RECTANGLE}
  2701.   PC_WINDPOLYGON = 4; // Can do winding polygons
  2702.   {$EXTERNALSYM PC_WINDPOLYGON}
  2703.   PC_TRAPEZOID   = 4; // Can do trapezoids
  2704.   {$EXTERNALSYM PC_TRAPEZOID}
  2705.   PC_SCANLINE    = 8; // Can do scanlines
  2706.   {$EXTERNALSYM PC_SCANLINE}
  2707.   PC_WIDE        = 16; // Can do wide borders
  2708.   {$EXTERNALSYM PC_WIDE}
  2709.   PC_STYLED      = 32; // Can do styled borders
  2710.   {$EXTERNALSYM PC_STYLED}
  2711.   PC_WIDESTYLED  = 64; // Can do wide styled borders
  2712.   {$EXTERNALSYM PC_WIDESTYLED}
  2713.   PC_INTERIORS   = 128; // Can do interiors
  2714.   {$EXTERNALSYM PC_INTERIORS}
  2715.   PC_POLYPOLYGON = 256; // Can do polypolygons
  2716.   {$EXTERNALSYM PC_POLYPOLYGON}
  2717.   PC_PATHS       = 512; // Can do paths
  2718.   {$EXTERNALSYM PC_PATHS}
  2719. // Clipping Capabilities
  2720.   CP_NONE      = 0; // No clipping of output
  2721.   {$EXTERNALSYM CP_NONE}
  2722.   CP_RECTANGLE = 1; // Output clipped to rects
  2723.   {$EXTERNALSYM CP_RECTANGLE}
  2724.   CP_REGION    = 2; // obsolete
  2725.   {$EXTERNALSYM CP_REGION}
  2726. // Text Capabilities
  2727.   TC_OP_CHARACTER = $00000001; // Can do OutputPrecision   CHARACTER
  2728.   {$EXTERNALSYM TC_OP_CHARACTER}
  2729.   TC_OP_STROKE    = $00000002; // Can do OutputPrecision   STROKE
  2730.   {$EXTERNALSYM TC_OP_STROKE}
  2731.   TC_CP_STROKE    = $00000004; // Can do ClipPrecision     STROKE
  2732.   {$EXTERNALSYM TC_CP_STROKE}
  2733.   TC_CR_90        = $00000008; // Can do CharRotAbility    90
  2734.   {$EXTERNALSYM TC_CR_90}
  2735.   TC_CR_ANY       = $00000010; // Can do CharRotAbility    ANY
  2736.   {$EXTERNALSYM TC_CR_ANY}
  2737.   TC_SF_X_YINDEP  = $00000020; // Can do ScaleFreedom      X_YINDEPENDENT
  2738.   {$EXTERNALSYM TC_SF_X_YINDEP}
  2739.   TC_SA_DOUBLE    = $00000040; // Can do ScaleAbility      DOUBLE
  2740.   {$EXTERNALSYM TC_SA_DOUBLE}
  2741.   TC_SA_INTEGER   = $00000080; // Can do ScaleAbility      INTEGER
  2742.   {$EXTERNALSYM TC_SA_INTEGER}
  2743.   TC_SA_CONTIN    = $00000100; // Can do ScaleAbility      CONTINUOUS
  2744.   {$EXTERNALSYM TC_SA_CONTIN}
  2745.   TC_EA_DOUBLE    = $00000200; // Can do EmboldenAbility   DOUBLE
  2746.   {$EXTERNALSYM TC_EA_DOUBLE}
  2747.   TC_IA_ABLE      = $00000400; // Can do ItalisizeAbility  ABLE
  2748.   {$EXTERNALSYM TC_IA_ABLE}
  2749.   TC_UA_ABLE      = $00000800; // Can do UnderlineAbility  ABLE
  2750.   {$EXTERNALSYM TC_UA_ABLE}
  2751.   TC_SO_ABLE      = $00001000; // Can do StrikeOutAbility  ABLE
  2752.   {$EXTERNALSYM TC_SO_ABLE}
  2753.   TC_RA_ABLE      = $00002000; // Can do RasterFontAble    ABLE
  2754.   {$EXTERNALSYM TC_RA_ABLE}
  2755.   TC_VA_ABLE      = $00004000; // Can do VectorFontAble    ABLE
  2756.   {$EXTERNALSYM TC_VA_ABLE}
  2757.   TC_RESERVED     = $00008000;
  2758.   {$EXTERNALSYM TC_RESERVED}
  2759.   TC_SCROLLBLT    = $00010000; // Don't do text scroll with blt
  2760.   {$EXTERNALSYM TC_SCROLLBLT}
  2761. // Raster Capabilities
  2762.   RC_BITBLT       = 1; // Can do standard BLT.
  2763.   {$EXTERNALSYM RC_BITBLT}
  2764.   RC_BANDING      = 2; // Device requires banding support
  2765.   {$EXTERNALSYM RC_BANDING}
  2766.   RC_SCALING      = 4; // Device requires scaling support
  2767.   {$EXTERNALSYM RC_SCALING}
  2768.   RC_BITMAP64     = 8; // Device can support >64K bitmap
  2769.   {$EXTERNALSYM RC_BITMAP64}
  2770.   RC_GDI20_OUTPUT = $0010; // has 2.0 output calls
  2771.   {$EXTERNALSYM RC_GDI20_OUTPUT}
  2772.   RC_GDI20_STATE  = $0020;
  2773.   {$EXTERNALSYM RC_GDI20_STATE}
  2774.   RC_SAVEBITMAP   = $0040;
  2775.   {$EXTERNALSYM RC_SAVEBITMAP}
  2776.   RC_DI_BITMAP    = $0080; // supports DIB to memory
  2777.   {$EXTERNALSYM RC_DI_BITMAP}
  2778.   RC_PALETTE      = $0100; // supports a palette
  2779.   {$EXTERNALSYM RC_PALETTE}
  2780.   RC_DIBTODEV     = $0200; // supports DIBitsToDevice
  2781.   {$EXTERNALSYM RC_DIBTODEV}
  2782.   RC_BIGFONT      = $0400; // supports >64K fonts
  2783.   {$EXTERNALSYM RC_BIGFONT}
  2784.   RC_STRETCHBLT   = $0800; // supports StretchBlt
  2785.   {$EXTERNALSYM RC_STRETCHBLT}
  2786.   RC_FLOODFILL    = $1000; // supports FloodFill
  2787.   {$EXTERNALSYM RC_FLOODFILL}
  2788.   RC_STRETCHDIB   = $2000; // supports StretchDIBits
  2789.   {$EXTERNALSYM RC_STRETCHDIB}
  2790.   RC_OP_DX_OUTPUT = $4000;
  2791.   {$EXTERNALSYM RC_OP_DX_OUTPUT}
  2792.   RC_DEVBITS      = $8000;
  2793.   {$EXTERNALSYM RC_DEVBITS}
  2794. // Shading and blending caps
  2795.   SB_NONE          = $00000000;
  2796.   {$EXTERNALSYM SB_NONE}
  2797.   SB_CONST_ALPHA   = $00000001;
  2798.   {$EXTERNALSYM SB_CONST_ALPHA}
  2799.   SB_PIXEL_ALPHA   = $00000002;
  2800.   {$EXTERNALSYM SB_PIXEL_ALPHA}
  2801.   SB_PREMULT_ALPHA = $00000004;
  2802.   {$EXTERNALSYM SB_PREMULT_ALPHA}
  2803.   SB_GRAD_RECT = $00000010;
  2804.   {$EXTERNALSYM SB_GRAD_RECT}
  2805.   SB_GRAD_TRI  = $00000020;
  2806.   {$EXTERNALSYM SB_GRAD_TRI}
  2807. // Color Management caps
  2808.   CM_NONE       = $00000000;
  2809.   {$EXTERNALSYM CM_NONE}
  2810.   CM_DEVICE_ICM = $00000001;
  2811.   {$EXTERNALSYM CM_DEVICE_ICM}
  2812.   CM_GAMMA_RAMP = $00000002;
  2813.   {$EXTERNALSYM CM_GAMMA_RAMP}
  2814.   CM_CMYK_COLOR = $00000004;
  2815.   {$EXTERNALSYM CM_CMYK_COLOR}
  2816. // DIB color table identifiers
  2817.   DIB_RGB_COLORS = 0; // color table in RGBs
  2818.   {$EXTERNALSYM DIB_RGB_COLORS}
  2819.   DIB_PAL_COLORS = 1; // color table in palette indices
  2820.   {$EXTERNALSYM DIB_PAL_COLORS}
  2821. // constants for Get/SetSystemPaletteUse()
  2822.   SYSPAL_ERROR       = 0;
  2823.   {$EXTERNALSYM SYSPAL_ERROR}
  2824.   SYSPAL_STATIC      = 1;
  2825.   {$EXTERNALSYM SYSPAL_STATIC}
  2826.   SYSPAL_NOSTATIC    = 2;
  2827.   {$EXTERNALSYM SYSPAL_NOSTATIC}
  2828.   SYSPAL_NOSTATIC256 = 3;
  2829.   {$EXTERNALSYM SYSPAL_NOSTATIC256}
  2830. // constants for CreateDIBitmap
  2831.   CBM_INIT = $04; // initialize bitmap
  2832.   {$EXTERNALSYM CBM_INIT}
  2833. // ExtFloodFill style flags
  2834.   FLOODFILLBORDER  = 0;
  2835.   {$EXTERNALSYM FLOODFILLBORDER}
  2836.   FLOODFILLSURFACE = 1;
  2837.   {$EXTERNALSYM FLOODFILLSURFACE}
  2838. // size of a device name string
  2839.   CCHDEVICENAME = 32;
  2840.   {$EXTERNALSYM CCHDEVICENAME}
  2841. // size of a form name string
  2842.   CCHFORMNAME = 32;
  2843.   {$EXTERNALSYM CCHFORMNAME}
  2844. {$IFDEF WINVER_0500_GREATER}
  2845. {$IFDEF WIN32_WINNT_0400_GREATER}
  2846. {$DEFINE WINVER_0500_OR_WIN32_WINNT_0400}
  2847. {$ENDIF}
  2848. {$ENDIF}
  2849. type
  2850.   TDmDisplayFlagsUnion = record
  2851.     case Integer of
  2852.       0: (
  2853.         dmDisplayFlags: DWORD);
  2854.       1: (
  2855.         dmNup: DWORD);
  2856.   end;
  2857.   _devicemodeA = record
  2858.     dmDeviceName: array [0..CCHDEVICENAME - 1] of BYTE;
  2859.     dmSpecVersion: WORD;
  2860.     dmDriverVersion: WORD;
  2861.     dmSize: WORD;
  2862.     dmDriverExtra: WORD;
  2863.     dmFields: DWORD;
  2864.     union1: record
  2865.     case Integer of
  2866.       // printer only fields
  2867.       0: (
  2868.         dmOrientation: Smallint;
  2869.         dmPaperSize: Smallint;
  2870.         dmPaperLength: Smallint;
  2871.         dmPaperWidth: Smallint;
  2872.         dmScale: Smallint;
  2873.         dmCopies: Smallint;
  2874.         dmDefaultSource: Smallint;
  2875.         dmPrintQuality: Smallint);
  2876.       // display only fields
  2877.       1: (
  2878.         dmPosition: POINTL;
  2879.         dmDisplayOrientation: DWORD;
  2880.         dmDisplayFixedOutput: DWORD);
  2881.     end;
  2882.     dmColor: Shortint;
  2883.     dmDuplex: Shortint;
  2884.     dmYResolution: Shortint;
  2885.     dmTTOption: Shortint;
  2886.     dmCollate: Shortint;
  2887.     dmFormName: array [0..CCHFORMNAME - 1] of BYTE;
  2888.     dmLogPixels: WORD;
  2889.     dmBitsPerPel: DWORD;
  2890.     dmPelsWidth: DWORD;
  2891.     dmPelsHeight: DWORD;
  2892.     dmDisplayFlags: TDmDisplayFlagsUnion;
  2893.     dmDisplayFrequency: DWORD;
  2894.     {$IFDEF WINVER_0400_GREATER}
  2895.     dmICMMethod: DWORD;
  2896.     dmICMIntent: DWORD;
  2897.     dmMediaType: DWORD;
  2898.     dmDitherType: DWORD;
  2899.     dmReserved1: DWORD;
  2900.     dmReserved2: DWORD;
  2901.     {$IFDEF WINVER_0500_OR_WIN32_WINNT_0400}
  2902.     dmPanningWidth: DWORD;
  2903.     dmPanningHeight: DWORD;
  2904.     {$ENDIF}
  2905.     {$ENDIF}
  2906.   end;
  2907.   {$EXTERNALSYM _devicemodeA}
  2908.   DEVMODEA = _devicemodeA;
  2909.   {$EXTERNALSYM DEVMODEA}
  2910.   PDEVMODEA = ^DEVMODEA;
  2911.   {$EXTERNALSYM PDEVMODEA}
  2912.   LPDEVMODEA = ^DEVMODEA;
  2913.   {$EXTERNALSYM LPDEVMODEA}
  2914.   NPDEVMODEA = ^DEVMODEA;
  2915.   {$EXTERNALSYM NPDEVMODEA}
  2916.   TDevModeA = _devicemodeA;
  2917.   _devicemodeW = record
  2918.     dmDeviceName: array [0..CCHDEVICENAME - 1] of WCHAR;
  2919.     dmSpecVersion: WORD;
  2920.     dmDriverVersion: WORD;
  2921.     dmSize: WORD;
  2922.     dmDriverExtra: WORD;
  2923.     dmFields: DWORD;
  2924.     union1: record
  2925.     case Integer of
  2926.       // printer only fields
  2927.       0: (
  2928.         dmOrientation: Smallint;
  2929.         dmPaperSize: Smallint;
  2930.         dmPaperLength: Smallint;
  2931.         dmPaperWidth: Smallint;
  2932.         dmScale: Smallint;
  2933.         dmCopies: Smallint;
  2934.         dmDefaultSource: Smallint;
  2935.         dmPrintQuality: Smallint);
  2936.       // display only fields
  2937.       1: (
  2938.         dmPosition: POINTL;
  2939.         dmDisplayOrientation: DWORD;
  2940.         dmDisplayFixedOutput: DWORD);
  2941.     end;
  2942.     dmColor: Shortint;
  2943.     dmDuplex: Shortint;
  2944.     dmYResolution: Shortint;
  2945.     dmTTOption: Shortint;
  2946.     dmCollate: Shortint;
  2947.     dmFormName: array [0..CCHFORMNAME - 1] of WCHAR;
  2948.     dmLogPixels: WORD;
  2949.     dmBitsPerPel: DWORD;
  2950.     dmPelsWidth: DWORD;
  2951.     dmPelsHeight: DWORD;
  2952.     dmDiusplayFlags: TDmDisplayFlagsUnion;
  2953.     dmDisplayFrequency: DWORD;
  2954.     {$IFDEF WINVER_0400_GREATER}
  2955.     dmICMMethod: DWORD;
  2956.     dmICMIntent: DWORD;
  2957.     dmMediaType: DWORD;
  2958.     dmDitherType: DWORD;
  2959.     dmReserved1: DWORD;
  2960.     dmReserved2: DWORD;
  2961.     {$IFDEF WINVER_0500_OR_WIN32_WINNT_0400}
  2962.     dmPanningWidth: DWORD;
  2963.     dmPanningHeight: DWORD;
  2964.     {$ENDIF}
  2965.     {$ENDIF}
  2966.   end;
  2967.   {$EXTERNALSYM _devicemodeW}
  2968.   DEVMODEW = _devicemodeW;
  2969.   {$EXTERNALSYM DEVMODEW}
  2970.   PDEVMODEW = ^DEVMODEW;
  2971.   {$EXTERNALSYM PDEVMODEW}
  2972.   LPDEVMODEW = ^DEVMODEW;
  2973.   {$EXTERNALSYM LPDEVMODEW}
  2974.   NPDEVMODEW = ^DEVMODEW;
  2975.   {$EXTERNALSYM NPDEVMODEW}
  2976.   TDevModeW = _devicemodeW;
  2977. {$IFDEF UNICODE}
  2978.   DEVMODE = DEVMODEW;
  2979.   {$EXTERNALSYM DEVMODE}
  2980.   PDEVMODE = PDEVMODEW;
  2981.   {$EXTERNALSYM PDEVMODE}
  2982.   NPDEVMODE = NPDEVMODEW;
  2983.   {$EXTERNALSYM NPDEVMODE}
  2984.   LPDEVMODE = LPDEVMODEW;
  2985.   {$EXTERNALSYM LPDEVMODE}
  2986.   TDevMode = TDevModeW;
  2987. {$ELSE}
  2988.   DEVMODE = DEVMODEA;
  2989.   {$EXTERNALSYM DEVMODE}
  2990.   PDEVMODE = PDEVMODEA;
  2991.   {$EXTERNALSYM PDEVMODE}
  2992.   NPDEVMODE = NPDEVMODEA;
  2993.   {$EXTERNALSYM NPDEVMODE}
  2994.   LPDEVMODE = LPDEVMODEA;
  2995.   {$EXTERNALSYM LPDEVMODE}
  2996.   TDevMode = TDevModeA;
  2997. {$ENDIF}
  2998. // current version of specification
  2999. const
  3000. {$IFDEF WINVER_0500_OR_WIN32_WINNT_0400}
  3001.   DM_SPECVERSION = $0401;
  3002.   {$EXTERNALSYM DM_SPECVERSION}
  3003. {$ELSE}
  3004. {$IFDEF WINVER_0400_GREATER}
  3005.   DM_SPECVERSION = $0400;
  3006.   {$EXTERNALSYM DM_SPECVERSION}
  3007. {$ELSE}
  3008.   DM_SPECVERSION = $0320;
  3009.   {$EXTERNALSYM DM_SPECVERSION}
  3010. {$ENDIF}
  3011. {$ENDIF}
  3012. {$UNDEF WINVER_0500_OR_WIN32_WINNT_0400}
  3013. // field selection bits
  3014. const
  3015.   DM_ORIENTATION      = $00000001;
  3016.   {$EXTERNALSYM DM_ORIENTATION}
  3017.   DM_PAPERSIZE        = $00000002;
  3018.   {$EXTERNALSYM DM_PAPERSIZE}
  3019.   DM_PAPERLENGTH      = $00000004;
  3020.   {$EXTERNALSYM DM_PAPERLENGTH}
  3021.   DM_PAPERWIDTH       = $00000008;
  3022.   {$EXTERNALSYM DM_PAPERWIDTH}
  3023.   DM_SCALE            = $00000010;
  3024.   {$EXTERNALSYM DM_SCALE}
  3025.   DM_POSITION         = $00000020;
  3026.   {$EXTERNALSYM DM_POSITION}
  3027.   DM_NUP              = $00000040;
  3028.   {$EXTERNALSYM DM_NUP}
  3029. //#if(WINVER >= 0x0501)
  3030.   DM_DISPLAYORIENTATION = $00000080;
  3031.   {$EXTERNALSYM DM_DISPLAYORIENTATION}
  3032. //#endif /* WINVER >= 0x0501 */
  3033.   DM_COPIES           = $00000100;
  3034.   {$EXTERNALSYM DM_COPIES}
  3035.   DM_DEFAULTSOURCE    = $00000200;
  3036.   {$EXTERNALSYM DM_DEFAULTSOURCE}
  3037.   DM_PRINTQUALITY     = $00000400;
  3038.   {$EXTERNALSYM DM_PRINTQUALITY}
  3039.   DM_COLOR            = $00000800;
  3040.   {$EXTERNALSYM DM_COLOR}
  3041.   DM_DUPLEX           = $00001000;
  3042.   {$EXTERNALSYM DM_DUPLEX}
  3043.   DM_YRESOLUTION      = $00002000;
  3044.   {$EXTERNALSYM DM_YRESOLUTION}
  3045.   DM_TTOPTION         = $00004000;
  3046.   {$EXTERNALSYM DM_TTOPTION}
  3047.   DM_COLLATE          = $00008000;
  3048.   {$EXTERNALSYM DM_COLLATE}
  3049.   DM_FORMNAME         = $00010000;
  3050.   {$EXTERNALSYM DM_FORMNAME}
  3051.   DM_LOGPIXELS        = $00020000;
  3052.   {$EXTERNALSYM DM_LOGPIXELS}
  3053.   DM_BITSPERPEL       = $00040000;
  3054.   {$EXTERNALSYM DM_BITSPERPEL}
  3055.   DM_PELSWIDTH        = $00080000;
  3056.   {$EXTERNALSYM DM_PELSWIDTH}
  3057.   DM_PELSHEIGHT       = $00100000;
  3058.   {$EXTERNALSYM DM_PELSHEIGHT}
  3059.   DM_DISPLAYFLAGS     = $00200000;
  3060.   {$EXTERNALSYM DM_DISPLAYFLAGS}
  3061.   DM_DISPLAYFREQUENCY = $00400000;
  3062.   {$EXTERNALSYM DM_DISPLAYFREQUENCY}
  3063.   DM_ICMMETHOD        = $00800000;
  3064.   {$EXTERNALSYM DM_ICMMETHOD}
  3065.   DM_ICMINTENT        = $01000000;
  3066.   {$EXTERNALSYM DM_ICMINTENT}
  3067.   DM_MEDIATYPE        = $02000000;
  3068.   {$EXTERNALSYM DM_MEDIATYPE}
  3069.   DM_DITHERTYPE       = $04000000;
  3070.   {$EXTERNALSYM DM_DITHERTYPE}
  3071.   DM_PANNINGWIDTH     = $08000000;
  3072.   {$EXTERNALSYM DM_PANNINGWIDTH}
  3073.   DM_PANNINGHEIGHT    = $10000000;
  3074.   {$EXTERNALSYM DM_PANNINGHEIGHT}
  3075. //#if(WINVER >= 0x0501)
  3076.   DM_DISPLAYFIXEDOUTPUT = $20000000;
  3077.   {$EXTERNALSYM DM_DISPLAYFIXEDOUTPUT}
  3078. //#endif /* WINVER >= 0x0501 */
  3079. // orientation selections
  3080.   DMORIENT_PORTRAIT  = 1;
  3081.   {$EXTERNALSYM DMORIENT_PORTRAIT}
  3082.   DMORIENT_LANDSCAPE = 2;
  3083.   {$EXTERNALSYM DMORIENT_LANDSCAPE}
  3084. // paper selections
  3085.   DMPAPER_LETTER                  = 1; // Letter 8 1/2 x 11 in
  3086.   {$EXTERNALSYM DMPAPER_LETTER}
  3087.   DMPAPER_FIRST                   = DMPAPER_LETTER;
  3088.   {$EXTERNALSYM DMPAPER_FIRST}
  3089.   DMPAPER_LETTERSMALL             = 2; // Letter Small 8 1/2 x 11 in
  3090.   {$EXTERNALSYM DMPAPER_LETTERSMALL}
  3091.   DMPAPER_TABLOID                 = 3; // Tabloid 11 x 17 in
  3092.   {$EXTERNALSYM DMPAPER_TABLOID}
  3093.   DMPAPER_LEDGER                  = 4; // Ledger 17 x 11 in
  3094.   {$EXTERNALSYM DMPAPER_LEDGER}
  3095.   DMPAPER_LEGAL                   = 5; // Legal 8 1/2 x 14 in
  3096.   {$EXTERNALSYM DMPAPER_LEGAL}
  3097.   DMPAPER_STATEMENT               = 6; // Statement 5 1/2 x 8 1/2 in
  3098.   {$EXTERNALSYM DMPAPER_STATEMENT}
  3099.   DMPAPER_EXECUTIVE               = 7; // Executive 7 1/4 x 10 1/2 in
  3100.   {$EXTERNALSYM DMPAPER_EXECUTIVE}
  3101.   DMPAPER_A3                      = 8; // A3 297 x 420 mm
  3102.   {$EXTERNALSYM DMPAPER_A3}
  3103.   DMPAPER_A4                      = 9; // A4 210 x 297 mm
  3104.   {$EXTERNALSYM DMPAPER_A4}
  3105.   DMPAPER_A4SMALL                 = 10; // A4 Small 210 x 297 mm
  3106.   {$EXTERNALSYM DMPAPER_A4SMALL}
  3107.   DMPAPER_A5                      = 11; // A5 148 x 210 mm
  3108.   {$EXTERNALSYM DMPAPER_A5}
  3109.   DMPAPER_B4                      = 12; // B4 (JIS) 250 x 354
  3110.   {$EXTERNALSYM DMPAPER_B4}
  3111.   DMPAPER_B5                      = 13; // B5 (JIS) 182 x 257 mm
  3112.   {$EXTERNALSYM DMPAPER_B5}
  3113.   DMPAPER_FOLIO                   = 14; // Folio 8 1/2 x 13 in
  3114.   {$EXTERNALSYM DMPAPER_FOLIO}
  3115.   DMPAPER_QUARTO                  = 15; // Quarto 215 x 275 mm
  3116.   {$EXTERNALSYM DMPAPER_QUARTO}
  3117.   DMPAPER_10X14                   = 16; // 10x14 in
  3118.   {$EXTERNALSYM DMPAPER_10X14}
  3119.   DMPAPER_11X17                   = 17; // 11x17 in
  3120.   {$EXTERNALSYM DMPAPER_11X17}
  3121.   DMPAPER_NOTE                    = 18; // Note 8 1/2 x 11 in
  3122.   {$EXTERNALSYM DMPAPER_NOTE}
  3123.   DMPAPER_ENV_9                   = 19; // Envelope #9 3 7/8 x 8 7/8
  3124.   {$EXTERNALSYM DMPAPER_ENV_9}
  3125.   DMPAPER_ENV_10                  = 20; // Envelope #10 4 1/8 x 9 1/2
  3126.   {$EXTERNALSYM DMPAPER_ENV_10}
  3127.   DMPAPER_ENV_11                  = 21; // Envelope #11 4 1/2 x 10 3/8
  3128.   {$EXTERNALSYM DMPAPER_ENV_11}
  3129.   DMPAPER_ENV_12                  = 22; // Envelope #12 4 276 x 11
  3130.   {$EXTERNALSYM DMPAPER_ENV_12}
  3131.   DMPAPER_ENV_14                  = 23; // Envelope #14 5 x 11 1/2
  3132.   {$EXTERNALSYM DMPAPER_ENV_14}
  3133.   DMPAPER_CSHEET                  = 24; // C size sheet
  3134.   {$EXTERNALSYM DMPAPER_CSHEET}
  3135.   DMPAPER_DSHEET                  = 25; // D size sheet
  3136.   {$EXTERNALSYM DMPAPER_DSHEET}
  3137.   DMPAPER_ESHEET                  = 26; // E size sheet
  3138.   {$EXTERNALSYM DMPAPER_ESHEET}
  3139.   DMPAPER_ENV_DL                  = 27; // Envelope DL 110 x 220mm
  3140.   {$EXTERNALSYM DMPAPER_ENV_DL}
  3141.   DMPAPER_ENV_C5                  = 28; // Envelope C5 162 x 229 mm
  3142.   {$EXTERNALSYM DMPAPER_ENV_C5}
  3143.   DMPAPER_ENV_C3                  = 29; // Envelope C3  324 x 458 mm
  3144.   {$EXTERNALSYM DMPAPER_ENV_C3}
  3145.   DMPAPER_ENV_C4                  = 30; // Envelope C4  229 x 324 mm
  3146.   {$EXTERNALSYM DMPAPER_ENV_C4}
  3147.   DMPAPER_ENV_C6                  = 31; // Envelope C6  114 x 162 mm
  3148.   {$EXTERNALSYM DMPAPER_ENV_C6}
  3149.   DMPAPER_ENV_C65                 = 32; // Envelope C65 114 x 229 mm
  3150.   {$EXTERNALSYM DMPAPER_ENV_C65}
  3151.   DMPAPER_ENV_B4                  = 33; // Envelope B4  250 x 353 mm
  3152.   {$EXTERNALSYM DMPAPER_ENV_B4}
  3153.   DMPAPER_ENV_B5                  = 34; // Envelope B5  176 x 250 mm
  3154.   {$EXTERNALSYM DMPAPER_ENV_B5}
  3155.   DMPAPER_ENV_B6                  = 35; // Envelope B6  176 x 125 mm
  3156.   {$EXTERNALSYM DMPAPER_ENV_B6}
  3157.   DMPAPER_ENV_ITALY               = 36; // Envelope 110 x 230 mm
  3158.   {$EXTERNALSYM DMPAPER_ENV_ITALY}
  3159.   DMPAPER_ENV_MONARCH             = 37; // Envelope Monarch 3.875 x 7.5 in
  3160.   {$EXTERNALSYM DMPAPER_ENV_MONARCH}
  3161.   DMPAPER_ENV_PERSONAL            = 38; // 6 3/4 Envelope 3 5/8 x 6 1/2 in
  3162.   {$EXTERNALSYM DMPAPER_ENV_PERSONAL}
  3163.   DMPAPER_FANFOLD_US              = 39; // US Std Fanfold 14 7/8 x 11 in
  3164.   {$EXTERNALSYM DMPAPER_FANFOLD_US}
  3165.   DMPAPER_FANFOLD_STD_GERMAN      = 40; // German Std Fanfold 8 1/2 x 12 in
  3166.   {$EXTERNALSYM DMPAPER_FANFOLD_STD_GERMAN}
  3167.   DMPAPER_FANFOLD_LGL_GERMAN      = 41; // German Legal Fanfold 8 1/2 x 13 in
  3168.   {$EXTERNALSYM DMPAPER_FANFOLD_LGL_GERMAN}
  3169.   DMPAPER_ISO_B4                  = 42; // B4 (ISO) 250 x 353 mm
  3170.   {$EXTERNALSYM DMPAPER_ISO_B4}
  3171.   DMPAPER_JAPANESE_POSTCARD       = 43; // Japanese Postcard 100 x 148 mm
  3172.   {$EXTERNALSYM DMPAPER_JAPANESE_POSTCARD}
  3173.   DMPAPER_9X11                    = 44; // 9 x 11 in
  3174.   {$EXTERNALSYM DMPAPER_9X11}
  3175.   DMPAPER_10X11                   = 45; // 10 x 11 in
  3176.   {$EXTERNALSYM DMPAPER_10X11}
  3177.   DMPAPER_15X11                   = 46; // 15 x 11 in
  3178.   {$EXTERNALSYM DMPAPER_15X11}
  3179.   DMPAPER_ENV_INVITE              = 47; // Envelope Invite 220 x 220 mm
  3180.   {$EXTERNALSYM DMPAPER_ENV_INVITE}
  3181.   DMPAPER_RESERVED_48             = 48; // RESERVED--DO NOT USE
  3182.   {$EXTERNALSYM DMPAPER_RESERVED_48}
  3183.   DMPAPER_RESERVED_49             = 49; // RESERVED--DO NOT USE
  3184.   {$EXTERNALSYM DMPAPER_RESERVED_49}
  3185.   DMPAPER_LETTER_EXTRA            = 50; // Letter Extra 9 275 x 12 in
  3186.   {$EXTERNALSYM DMPAPER_LETTER_EXTRA}
  3187.   DMPAPER_LEGAL_EXTRA             = 51; // Legal Extra 9 275 x 15 in
  3188.   {$EXTERNALSYM DMPAPER_LEGAL_EXTRA}
  3189.   DMPAPER_TABLOID_EXTRA           = 52; // Tabloid Extra 11.69 x 18 in
  3190.   {$EXTERNALSYM DMPAPER_TABLOID_EXTRA}
  3191.   DMPAPER_A4_EXTRA                = 53; // A4 Extra 9.27 x 12.69 in
  3192.   {$EXTERNALSYM DMPAPER_A4_EXTRA}
  3193.   DMPAPER_LETTER_TRANSVERSE       = 54; // Letter Transverse 8 275 x 11 in
  3194.   {$EXTERNALSYM DMPAPER_LETTER_TRANSVERSE}
  3195.   DMPAPER_A4_TRANSVERSE           = 55; // A4 Transverse 210 x 297 mm
  3196.   {$EXTERNALSYM DMPAPER_A4_TRANSVERSE}
  3197.   DMPAPER_LETTER_EXTRA_TRANSVERSE = 56; // Letter Extra Transverse 9275 x 12 in
  3198.   {$EXTERNALSYM DMPAPER_LETTER_EXTRA_TRANSVERSE}
  3199.   DMPAPER_A_PLUS                  = 57; // SuperA/SuperA/A4 227 x 356 mm
  3200.   {$EXTERNALSYM DMPAPER_A_PLUS}
  3201.   DMPAPER_B_PLUS                  = 58; // SuperB/SuperB/A3 305 x 487 mm
  3202.   {$EXTERNALSYM DMPAPER_B_PLUS}
  3203.   DMPAPER_LETTER_PLUS             = 59; // Letter Plus 8.5 x 12.69 in
  3204.   {$EXTERNALSYM DMPAPER_LETTER_PLUS}
  3205.   DMPAPER_A4_PLUS                 = 60; // A4 Plus 210 x 330 mm
  3206.   {$EXTERNALSYM DMPAPER_A4_PLUS}
  3207.   DMPAPER_A5_TRANSVERSE           = 61; // A5 Transverse 148 x 210 mm
  3208.   {$EXTERNALSYM DMPAPER_A5_TRANSVERSE}
  3209.   DMPAPER_B5_TRANSVERSE           = 62; // B5 (JIS) Transverse 182 x 257 mm
  3210.   {$EXTERNALSYM DMPAPER_B5_TRANSVERSE}
  3211.   DMPAPER_A3_EXTRA                = 63; // A3 Extra 322 x 445 mm
  3212.   {$EXTERNALSYM DMPAPER_A3_EXTRA}
  3213.   DMPAPER_A5_EXTRA                = 64; // A5 Extra 174 x 235 mm
  3214.   {$EXTERNALSYM DMPAPER_A5_EXTRA}
  3215.   DMPAPER_B5_EXTRA                = 65; // B5 (ISO) Extra 201 x 276 mm
  3216.   {$EXTERNALSYM DMPAPER_B5_EXTRA}
  3217.   DMPAPER_A2                      = 66; // A2 420 x 594 mm
  3218.   {$EXTERNALSYM DMPAPER_A2}
  3219.   DMPAPER_A3_TRANSVERSE           = 67; // A3 Transverse 297 x 420 mm
  3220.   {$EXTERNALSYM DMPAPER_A3_TRANSVERSE}
  3221.   DMPAPER_A3_EXTRA_TRANSVERSE     = 68; // A3 Extra Transverse 322 x 445 mm
  3222.   {$EXTERNALSYM DMPAPER_A3_EXTRA_TRANSVERSE}
  3223.   DMPAPER_DBL_JAPANESE_POSTCARD         = 69; // Japanese Double Postcard 200 x 148 mm
  3224.   {$EXTERNALSYM DMPAPER_DBL_JAPANESE_POSTCARD}
  3225.   DMPAPER_A6                            = 70; // A6 105 x 148 mm
  3226.   {$EXTERNALSYM DMPAPER_A6}
  3227.   DMPAPER_JENV_KAKU2                    = 71; // Japanese Envelope Kaku #2
  3228.   {$EXTERNALSYM DMPAPER_JENV_KAKU2}
  3229.   DMPAPER_JENV_KAKU3                    = 72; // Japanese Envelope Kaku #3
  3230.   {$EXTERNALSYM DMPAPER_JENV_KAKU3}
  3231.   DMPAPER_JENV_CHOU3                    = 73; // Japanese Envelope Chou #3
  3232.   {$EXTERNALSYM DMPAPER_JENV_CHOU3}
  3233.   DMPAPER_JENV_CHOU4                    = 74; // Japanese Envelope Chou #4
  3234.   {$EXTERNALSYM DMPAPER_JENV_CHOU4}
  3235.   DMPAPER_LETTER_ROTATED                = 75; // Letter Rotated 11 x 8 1/2 11 in
  3236.   {$EXTERNALSYM DMPAPER_LETTER_ROTATED}
  3237.   DMPAPER_A3_ROTATED                    = 76; // A3 Rotated 420 x 297 mm
  3238.   {$EXTERNALSYM DMPAPER_A3_ROTATED}
  3239.   DMPAPER_A4_ROTATED                    = 77; // A4 Rotated 297 x 210 mm
  3240.   {$EXTERNALSYM DMPAPER_A4_ROTATED}
  3241.   DMPAPER_A5_ROTATED                    = 78; // A5 Rotated 210 x 148 mm
  3242.   {$EXTERNALSYM DMPAPER_A5_ROTATED}
  3243.   DMPAPER_B4_JIS_ROTATED                = 79; // B4 (JIS) Rotated 364 x 257 mm
  3244.   {$EXTERNALSYM DMPAPER_B4_JIS_ROTATED}
  3245.   DMPAPER_B5_JIS_ROTATED                = 80; // B5 (JIS) Rotated 257 x 182 mm
  3246.   {$EXTERNALSYM DMPAPER_B5_JIS_ROTATED}
  3247.   DMPAPER_JAPANESE_POSTCARD_ROTATED     = 81; // Japanese Postcard Rotated 148 x 100 mm
  3248.   {$EXTERNALSYM DMPAPER_JAPANESE_POSTCARD_ROTATED}
  3249.   DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED = 82; // Double Japanese Postcard Rotated 148 x 200 mm
  3250.   {$EXTERNALSYM DMPAPER_DBL_JAPANESE_POSTCARD_ROTATED}
  3251.   DMPAPER_A6_ROTATED                    = 83; // A6 Rotated 148 x 105 mm
  3252.   {$EXTERNALSYM DMPAPER_A6_ROTATED}
  3253.   DMPAPER_JENV_KAKU2_ROTATED            = 84; // Japanese Envelope Kaku #2 Rotated
  3254.   {$EXTERNALSYM DMPAPER_JENV_KAKU2_ROTATED}
  3255.   DMPAPER_JENV_KAKU3_ROTATED            = 85; // Japanese Envelope Kaku #3 Rotated
  3256.   {$EXTERNALSYM DMPAPER_JENV_KAKU3_ROTATED}
  3257.   DMPAPER_JENV_CHOU3_ROTATED            = 86; // Japanese Envelope Chou #3 Rotated
  3258.   {$EXTERNALSYM DMPAPER_JENV_CHOU3_ROTATED}
  3259.   DMPAPER_JENV_CHOU4_ROTATED            = 87; // Japanese Envelope Chou #4 Rotated
  3260.   {$EXTERNALSYM DMPAPER_JENV_CHOU4_ROTATED}
  3261.   DMPAPER_B6_JIS                        = 88; // B6 (JIS) 128 x 182 mm
  3262.   {$EXTERNALSYM DMPAPER_B6_JIS}
  3263.   DMPAPER_B6_JIS_ROTATED                = 89; // B6 (JIS) Rotated 182 x 128 mm
  3264.   {$EXTERNALSYM DMPAPER_B6_JIS_ROTATED}
  3265.   DMPAPER_12X11                         = 90; // 12 x 11 in
  3266.   {$EXTERNALSYM DMPAPER_12X11}
  3267.   DMPAPER_JENV_YOU4                     = 91; // Japanese Envelope You #4
  3268.   {$EXTERNALSYM DMPAPER_JENV_YOU4}
  3269.   DMPAPER_JENV_YOU4_ROTATED             = 92; // Japanese Envelope You #4 Rotated
  3270.   {$EXTERNALSYM DMPAPER_JENV_YOU4_ROTATED}
  3271.   DMPAPER_P16K                          = 93; // PRC 16K 146 x 215 mm
  3272.   {$EXTERNALSYM DMPAPER_P16K}
  3273.   DMPAPER_P32K                          = 94; // PRC 32K 97 x 151 mm
  3274.   {$EXTERNALSYM DMPAPER_P32K}
  3275.   DMPAPER_P32KBIG                       = 95; // PRC 32K(Big) 97 x 151 mm
  3276.   {$EXTERNALSYM DMPAPER_P32KBIG}
  3277.   DMPAPER_PENV_1                        = 96; // PRC Envelope #1 102 x 165 mm
  3278.   {$EXTERNALSYM DMPAPER_PENV_1}
  3279.   DMPAPER_PENV_2                        = 97; // PRC Envelope #2 102 x 176 mm
  3280.   {$EXTERNALSYM DMPAPER_PENV_2}
  3281.   DMPAPER_PENV_3                        = 98; // PRC Envelope #3 125 x 176 mm
  3282.   {$EXTERNALSYM DMPAPER_PENV_3}
  3283.   DMPAPER_PENV_4                        = 99; // PRC Envelope #4 110 x 208 mm
  3284.   {$EXTERNALSYM DMPAPER_PENV_4}
  3285.   DMPAPER_PENV_5                        = 100; // PRC Envelope #5 110 x 220 mm
  3286.   {$EXTERNALSYM DMPAPER_PENV_5}
  3287.   DMPAPER_PENV_6                        = 101; // PRC Envelope #6 120 x 230 mm
  3288.   {$EXTERNALSYM DMPAPER_PENV_6}
  3289.   DMPAPER_PENV_7                        = 102; // PRC Envelope #7 160 x 230 mm
  3290.   {$EXTERNALSYM DMPAPER_PENV_7}
  3291.   DMPAPER_PENV_8                        = 103; // PRC Envelope #8 120 x 309 mm
  3292.   {$EXTERNALSYM DMPAPER_PENV_8}
  3293.   DMPAPER_PENV_9                        = 104; // PRC Envelope #9 229 x 324 mm
  3294.   {$EXTERNALSYM DMPAPER_PENV_9}
  3295.   DMPAPER_PENV_10                       = 105; // PRC Envelope #10 324 x 458 mm
  3296.   {$EXTERNALSYM DMPAPER_PENV_10}
  3297.   DMPAPER_P16K_ROTATED                  = 106; // PRC 16K Rotated
  3298.   {$EXTERNALSYM DMPAPER_P16K_ROTATED}
  3299.   DMPAPER_P32K_ROTATED                  = 107; // PRC 32K Rotated
  3300.   {$EXTERNALSYM DMPAPER_P32K_ROTATED}
  3301.   DMPAPER_P32KBIG_ROTATED               = 108; // PRC 32K(Big) Rotated
  3302.   {$EXTERNALSYM DMPAPER_P32KBIG_ROTATED}
  3303.   DMPAPER_PENV_1_ROTATED                = 109; // PRC Envelope #1 Rotated 165 x 102 mm
  3304.   {$EXTERNALSYM DMPAPER_PENV_1_ROTATED}
  3305.   DMPAPER_PENV_2_ROTATED                = 110; // PRC Envelope #2 Rotated 176 x 102 mm
  3306.   {$EXTERNALSYM DMPAPER_PENV_2_ROTATED}
  3307.   DMPAPER_PENV_3_ROTATED                = 111; // PRC Envelope #3 Rotated 176 x 125 mm
  3308.   {$EXTERNALSYM DMPAPER_PENV_3_ROTATED}
  3309.   DMPAPER_PENV_4_ROTATED                = 112; // PRC Envelope #4 Rotated 208 x 110 mm
  3310.   {$EXTERNALSYM DMPAPER_PENV_4_ROTATED}
  3311.   DMPAPER_PENV_5_ROTATED                = 113; // PRC Envelope #5 Rotated 220 x 110 mm
  3312.   {$EXTERNALSYM DMPAPER_PENV_5_ROTATED}
  3313.   DMPAPER_PENV_6_ROTATED                = 114; // PRC Envelope #6 Rotated 230 x 120 mm
  3314.   {$EXTERNALSYM DMPAPER_PENV_6_ROTATED}
  3315.   DMPAPER_PENV_7_ROTATED                = 115; // PRC Envelope #7 Rotated 230 x 160 mm
  3316.   {$EXTERNALSYM DMPAPER_PENV_7_ROTATED}
  3317.   DMPAPER_PENV_8_ROTATED                = 116; // PRC Envelope #8 Rotated 309 x 120 mm
  3318.   {$EXTERNALSYM DMPAPER_PENV_8_ROTATED}
  3319.   DMPAPER_PENV_9_ROTATED                = 117; // PRC Envelope #9 Rotated 324 x 229 mm
  3320.   {$EXTERNALSYM DMPAPER_PENV_9_ROTATED}
  3321.   DMPAPER_PENV_10_ROTATED               = 118; // PRC Envelope #10 Rotated 458 x 324 mm
  3322.   {$EXTERNALSYM DMPAPER_PENV_10_ROTATED}
  3323. {$IFDEF WINVER_0500_GREATER}
  3324.   DMPAPER_LAST = DMPAPER_PENV_10_ROTATED;
  3325.   {$EXTERNALSYM DMPAPER_LAST}
  3326. {$ELSE}
  3327. {$IFDEF WINVER_0400_GREATER}
  3328.   DMPAPER_LAST = DMPAPER_A3_EXTRA_TRANSVERSE;
  3329.   {$EXTERNALSYM DMPAPER_LAST}
  3330. {$ELSE}
  3331.   DMPAPER_LAST = DMPAPER_FANFOLD_LGL_GERMAN;
  3332.   {$EXTERNALSYM DMPAPER_LAST}
  3333. {$ENDIF}
  3334. {$ENDIF}
  3335.   DMPAPER_USER = 256;
  3336.   {$EXTERNALSYM DMPAPER_USER}
  3337. // bin selections
  3338.   DMBIN_UPPER         = 1;
  3339.   {$EXTERNALSYM DMBIN_UPPER}
  3340.   DMBIN_FIRST         = DMBIN_UPPER;
  3341.   {$EXTERNALSYM DMBIN_FIRST}
  3342.   DMBIN_ONLYONE       = 1;
  3343.   {$EXTERNALSYM DMBIN_ONLYONE}
  3344.   DMBIN_LOWER         = 2;
  3345.   {$EXTERNALSYM DMBIN_LOWER}
  3346.   DMBIN_MIDDLE        = 3;
  3347.   {$EXTERNALSYM DMBIN_MIDDLE}
  3348.   DMBIN_MANUAL        = 4;
  3349.   {$EXTERNALSYM DMBIN_MANUAL}
  3350.   DMBIN_ENVELOPE      = 5;
  3351.   {$EXTERNALSYM DMBIN_ENVELOPE}
  3352.   DMBIN_ENVMANUAL     = 6;
  3353.   {$EXTERNALSYM DMBIN_ENVMANUAL}
  3354.   DMBIN_AUTO          = 7;
  3355.   {$EXTERNALSYM DMBIN_AUTO}
  3356.   DMBIN_TRACTOR       = 8;
  3357.   {$EXTERNALSYM DMBIN_TRACTOR}
  3358.   DMBIN_SMALLFMT      = 9;
  3359.   {$EXTERNALSYM DMBIN_SMALLFMT}
  3360.   DMBIN_LARGEFMT      = 10;
  3361.   {$EXTERNALSYM DMBIN_LARGEFMT}
  3362.   DMBIN_LARGECAPACITY = 11;
  3363.   {$EXTERNALSYM DMBIN_LARGECAPACITY}
  3364.   DMBIN_CASSETTE      = 14;
  3365.   {$EXTERNALSYM DMBIN_CASSETTE}
  3366.   DMBIN_FORMSOURCE    = 15;
  3367.   {$EXTERNALSYM DMBIN_FORMSOURCE}
  3368.   DMBIN_LAST          = DMBIN_FORMSOURCE;
  3369.   {$EXTERNALSYM DMBIN_LAST}
  3370.   DMBIN_USER = 256; // device specific bins start here
  3371.   {$EXTERNALSYM DMBIN_USER}
  3372. // print qualities
  3373.   DMRES_DRAFT  = DWORD(-1);
  3374.   {$EXTERNALSYM DMRES_DRAFT}
  3375.   DMRES_LOW    = DWORD(-2);
  3376.   {$EXTERNALSYM DMRES_LOW}
  3377.   DMRES_MEDIUM = DWORD(-3);
  3378.   {$EXTERNALSYM DMRES_MEDIUM}
  3379.   DMRES_HIGH   = DWORD(-4);
  3380.   {$EXTERNALSYM DMRES_HIGH}
  3381. // color enable/disable for color printers
  3382.   DMCOLOR_MONOCHROME = 1;
  3383.   {$EXTERNALSYM DMCOLOR_MONOCHROME}
  3384.   DMCOLOR_COLOR      = 2;
  3385.   {$EXTERNALSYM DMCOLOR_COLOR}
  3386. // duplex enable
  3387.   DMDUP_SIMPLEX    = 1;
  3388.   {$EXTERNALSYM DMDUP_SIMPLEX}
  3389.   DMDUP_VERTICAL   = 2;
  3390.   {$EXTERNALSYM DMDUP_VERTICAL}
  3391.   DMDUP_HORIZONTAL = 3;
  3392.   {$EXTERNALSYM DMDUP_HORIZONTAL}
  3393. // TrueType options
  3394.   DMTT_BITMAP           = 1; // print TT fonts as graphics
  3395.   {$EXTERNALSYM DMTT_BITMAP}
  3396.   DMTT_DOWNLOAD         = 2; // download TT fonts as soft fonts
  3397.   {$EXTERNALSYM DMTT_DOWNLOAD}
  3398.   DMTT_SUBDEV           = 3; // substitute device fonts for TT fonts
  3399.   {$EXTERNALSYM DMTT_SUBDEV}
  3400.   DMTT_DOWNLOAD_OUTLINE = 4; // download TT fonts as outline soft fonts
  3401.   {$EXTERNALSYM DMTT_DOWNLOAD_OUTLINE}
  3402. // Collation selections
  3403.   DMCOLLATE_FALSE = 0;
  3404.   {$EXTERNALSYM DMCOLLATE_FALSE}
  3405.   DMCOLLATE_TRUE  = 1;
  3406.   {$EXTERNALSYM DMCOLLATE_TRUE}
  3407. //#if(WINVER >= 0x0501)
  3408. // DEVMODE dmDisplayOrientation specifiations
  3409.   DMDO_DEFAULT   = 0;
  3410.   {$EXTERNALSYM DMDO_DEFAULT}
  3411.   DMDO_90        = 1;
  3412.   {$EXTERNALSYM DMDO_90}
  3413.   DMDO_180       = 2;
  3414.   {$EXTERNALSYM DMDO_180}
  3415.   DMDO_270       = 3;
  3416.   {$EXTERNALSYM DMDO_270}
  3417. // DEVMODE dmDisplayFixedOutput specifiations
  3418.   DMDFO_DEFAULT  = 0;
  3419.   {$EXTERNALSYM DMDFO_DEFAULT}
  3420.   DMDFO_STRETCH  = 1;
  3421.   {$EXTERNALSYM DMDFO_STRETCH}
  3422.   DMDFO_CENTER   = 2;
  3423.   {$EXTERNALSYM DMDFO_CENTER}
  3424. //#endif /* WINVER >= 0x0501 */
  3425. // DEVMODE dmDisplayFlags flags
  3426. // #define DM_GRAYSCALE            0x00000001 /* This flag is no longer valid */
  3427. // #define DM_INTERLACED           0x00000002 /* This flag is no longer valid */
  3428.   DMDISPLAYFLAGS_TEXTMODE = $00000004;
  3429.   {$EXTERNALSYM DMDISPLAYFLAGS_TEXTMODE}
  3430. // dmNup , multiple logical page per physical page options
  3431.   DMNUP_SYSTEM = 1;
  3432.   {$EXTERNALSYM DMNUP_SYSTEM}
  3433.   DMNUP_ONEUP  = 2;
  3434.   {$EXTERNALSYM DMNUP_ONEUP}
  3435. // ICM methods
  3436.   DMICMMETHOD_NONE   = 1; // ICM disabled
  3437.   {$EXTERNALSYM DMICMMETHOD_NONE}
  3438.   DMICMMETHOD_SYSTEM = 2; // ICM handled by system
  3439.   {$EXTERNALSYM DMICMMETHOD_SYSTEM}
  3440.   DMICMMETHOD_DRIVER = 3; // ICM handled by driver
  3441.   {$EXTERNALSYM DMICMMETHOD_DRIVER}
  3442.   DMICMMETHOD_DEVICE = 4; // ICM handled by device
  3443.   {$EXTERNALSYM DMICMMETHOD_DEVICE}
  3444.   DMICMMETHOD_USER = 256; // Device-specific methods start here
  3445.   {$EXTERNALSYM DMICMMETHOD_USER}
  3446. // ICM Intents
  3447.   DMICM_SATURATE         = 1; // Maximize color saturation
  3448.   {$EXTERNALSYM DMICM_SATURATE}
  3449.   DMICM_CONTRAST         = 2; // Maximize color contrast
  3450.   {$EXTERNALSYM DMICM_CONTRAST}
  3451.   DMICM_COLORIMETRIC     = 3; // Use specific color metric
  3452.   {$EXTERNALSYM DMICM_COLORIMETRIC}
  3453.   DMICM_ABS_COLORIMETRIC = 4; // Use specific color metric
  3454.   {$EXTERNALSYM DMICM_ABS_COLORIMETRIC}
  3455.   DMICM_USER = 256; // Device-specific intents start here
  3456.   {$EXTERNALSYM DMICM_USER}
  3457. // Media types
  3458.   DMMEDIA_STANDARD     = 1; // Standard paper
  3459.   {$EXTERNALSYM DMMEDIA_STANDARD}
  3460.   DMMEDIA_TRANSPARENCY = 2; // Transparency
  3461.   {$EXTERNALSYM DMMEDIA_TRANSPARENCY}
  3462.   DMMEDIA_GLOSSY       = 3; // Glossy paper
  3463.   {$EXTERNALSYM DMMEDIA_GLOSSY}
  3464.   DMMEDIA_USER = 256; // Device-specific media start here
  3465.   {$EXTERNALSYM DMMEDIA_USER}
  3466. // Dither types
  3467.   DMDITHER_NONE           = 1; // No dithering
  3468.   {$EXTERNALSYM DMDITHER_NONE}
  3469.   DMDITHER_COARSE         = 2; // Dither with a coarse brush
  3470.   {$EXTERNALSYM DMDITHER_COARSE}
  3471.   DMDITHER_FINE           = 3; // Dither with a fine brush
  3472.   {$EXTERNALSYM DMDITHER_FINE}
  3473.   DMDITHER_LINEART        = 4; // LineArt dithering
  3474.   {$EXTERNALSYM DMDITHER_LINEART}
  3475.   DMDITHER_ERRORDIFFUSION = 5; // LineArt dithering
  3476.   {$EXTERNALSYM DMDITHER_ERRORDIFFUSION}
  3477.   DMDITHER_RESERVED6      = 6; // LineArt dithering
  3478.   {$EXTERNALSYM DMDITHER_RESERVED6}
  3479.   DMDITHER_RESERVED7      = 7; // LineArt dithering
  3480.   {$EXTERNALSYM DMDITHER_RESERVED7}
  3481.   DMDITHER_RESERVED8      = 8; // LineArt dithering
  3482.   {$EXTERNALSYM DMDITHER_RESERVED8}
  3483.   DMDITHER_RESERVED9      = 9; // LineArt dithering
  3484.   {$EXTERNALSYM DMDITHER_RESERVED9}
  3485.   DMDITHER_GRAYSCALE      = 10; // Device does grayscaling
  3486.   {$EXTERNALSYM DMDITHER_GRAYSCALE}
  3487.   DMDITHER_USER = 256; // Device-specific dithers start here
  3488.   {$EXTERNALSYM DMDITHER_USER}
  3489. type
  3490.   PDisplayDeviceA = ^TDisplayDeviceA;
  3491.   _DISPLAY_DEVICEA = record
  3492.     cb: DWORD;
  3493.     DeviceName: array [0..32 - 1] of CHAR;
  3494.     DeviceString: array [0..128 - 1] of CHAR;
  3495.     StateFlags: DWORD;
  3496.     DeviceID: array [0..128 - 1] of CHAR;
  3497.     DeviceKey: array [0..128 - 1] of CHAR;
  3498.   end;
  3499.   {$EXTERNALSYM _DISPLAY_DEVICEA}
  3500.   DISPLAY_DEVICEA = _DISPLAY_DEVICEA;
  3501.   {$EXTERNALSYM DISPLAY_DEVICEA}
  3502.   LPDISPLAY_DEVICEA = ^DISPLAY_DEVICEA;
  3503.   {$EXTERNALSYM LPDISPLAY_DEVICEA}
  3504.   PDISPLAY_DEVICEA = ^DISPLAY_DEVICEA;
  3505.   {$EXTERNALSYM PDISPLAY_DEVICEA}
  3506.   TDisplayDeviceA = _DISPLAY_DEVICEA;
  3507.   PDisplayDeviceW = ^TDisplayDeviceW;
  3508.   _DISPLAY_DEVICEW = record
  3509.     cb: DWORD;
  3510.     DeviceName: array [0..32 - 1] of WCHAR;
  3511.     DeviceString: array [0..128 - 1] of WCHAR;
  3512.     StateFlags: DWORD;
  3513.     DeviceID: array [0..128 - 1] of WCHAR;
  3514.     DeviceKey: array [0..128 - 1] of WCHAR;
  3515.   end;
  3516.   {$EXTERNALSYM _DISPLAY_DEVICEW}
  3517.   DISPLAY_DEVICEW = _DISPLAY_DEVICEW;
  3518.   {$EXTERNALSYM DISPLAY_DEVICEW}
  3519.   LPDISPLAY_DEVICEW = ^DISPLAY_DEVICEW;
  3520.   {$EXTERNALSYM LPDISPLAY_DEVICEW}
  3521.   PDISPLAY_DEVICEW = ^DISPLAY_DEVICEW;
  3522.   {$EXTERNALSYM PDISPLAY_DEVICEW}
  3523.   TDisplayDeviceW = _DISPLAY_DEVICEW;
  3524. {$IFDEF UNICODE}
  3525.   DISPLAY_DEVICE = DISPLAY_DEVICEW;
  3526.   {$EXTERNALSYM DISPLAY_DEVICE}
  3527.   PDISPLAY_DEVICE = PDISPLAY_DEVICEW;
  3528.   {$EXTERNALSYM PDISPLAY_DEVICE}
  3529.   LPDISPLAY_DEVICE = LPDISPLAY_DEVICEW;
  3530.   {$EXTERNALSYM LPDISPLAY_DEVICE}
  3531.   TDisplayDevice = TDisplayDeviceW;
  3532.   PDisplayDevice = PDisplayDeviceW;
  3533. {$ELSE}
  3534.   DISPLAY_DEVICE = DISPLAY_DEVICEA;
  3535.   {$EXTERNALSYM DISPLAY_DEVICE}
  3536.   PDISPLAY_DEVICE = PDISPLAY_DEVICEA;
  3537.   {$EXTERNALSYM PDISPLAY_DEVICE}
  3538.   LPDISPLAY_DEVICE = LPDISPLAY_DEVICEA;
  3539.   {$EXTERNALSYM LPDISPLAY_DEVICE}
  3540.   TDisplayDevice = TDisplayDeviceA;
  3541.   PDisplayDevice = PDisplayDeviceA;
  3542. {$ENDIF}
  3543. const
  3544.   DISPLAY_DEVICE_ATTACHED_TO_DESKTOP = $00000001;
  3545.   {$EXTERNALSYM DISPLAY_DEVICE_ATTACHED_TO_DESKTOP}
  3546.   DISPLAY_DEVICE_MULTI_DRIVER        = $00000002;
  3547.   {$EXTERNALSYM DISPLAY_DEVICE_MULTI_DRIVER}
  3548.   DISPLAY_DEVICE_PRIMARY_DEVICE      = $00000004;
  3549.   {$EXTERNALSYM DISPLAY_DEVICE_PRIMARY_DEVICE}
  3550.   DISPLAY_DEVICE_MIRRORING_DRIVER    = $00000008;
  3551.   {$EXTERNALSYM DISPLAY_DEVICE_MIRRORING_DRIVER}
  3552.   DISPLAY_DEVICE_VGA_COMPATIBLE      = $00000010;
  3553.   {$EXTERNALSYM DISPLAY_DEVICE_VGA_COMPATIBLE}
  3554.   DISPLAY_DEVICE_REMOVABLE           = $00000020;
  3555.   {$EXTERNALSYM DISPLAY_DEVICE_REMOVABLE}
  3556.   DISPLAY_DEVICE_MODESPRUNED         = $08000000;
  3557.   {$EXTERNALSYM DISPLAY_DEVICE_MODESPRUNED}
  3558.   DISPLAY_DEVICE_REMOTE              = $04000000;
  3559.   {$EXTERNALSYM DISPLAY_DEVICE_REMOTE}
  3560.   DISPLAY_DEVICE_DISCONNECT          = $02000000;
  3561.   {$EXTERNALSYM DISPLAY_DEVICE_DISCONNECT}
  3562. // Child device state
  3563.   DISPLAY_DEVICE_ACTIVE              = $00000001;
  3564.   {$EXTERNALSYM DISPLAY_DEVICE_ACTIVE}
  3565.   DISPLAY_DEVICE_ATTACHED            = $00000002;
  3566.   {$EXTERNALSYM DISPLAY_DEVICE_ATTACHED}
  3567. // GetRegionData/ExtCreateRegion
  3568.   RDH_RECTANGLES = 1;
  3569.   {$EXTERNALSYM RDH_RECTANGLES}
  3570. type
  3571.   PRgnDataHeader = ^TRgnDataHeader;
  3572.   _RGNDATAHEADER = record
  3573.     dwSize: DWORD;
  3574.     iType: DWORD;
  3575.     nCount: DWORD;
  3576.     nRgnSize: DWORD;
  3577.     rcBound: RECT;
  3578.   end;
  3579.   {$EXTERNALSYM _RGNDATAHEADER}
  3580.   RGNDATAHEADER = _RGNDATAHEADER;
  3581.   {$EXTERNALSYM RGNDATAHEADER}
  3582.   TRgnDataHeader = _RGNDATAHEADER;
  3583.   PRgnData = ^TRgnData;
  3584.   _RGNDATA = record
  3585.     rdh: RGNDATAHEADER;
  3586.     Buffer: array [0..0] of Char;
  3587.   end;
  3588.   {$EXTERNALSYM _RGNDATA}
  3589.   RGNDATA = _RGNDATA;
  3590.   {$EXTERNALSYM RGNDATA}
  3591.   LPRGNDATA = ^RGNDATA;
  3592.   {$EXTERNALSYM LPRGNDATA}
  3593.   NPRGNDATA = ^RGNDATA;
  3594.   {$EXTERNALSYM NPRGNDATA}
  3595.   TRgnData = _RGNDATA;
  3596. // for GetRandomRgn
  3597. const
  3598.   SYSRGN = 4;
  3599.   {$EXTERNALSYM SYSRGN}
  3600. type
  3601.   PAbc = ^TAbc;
  3602.   _ABC = record
  3603.     abcA: Integer;
  3604.     abcB: UINT;
  3605.     abcC: Integer;
  3606.   end;
  3607.   {$EXTERNALSYM _ABC}
  3608.   ABC = _ABC;
  3609.   {$EXTERNALSYM ABC}
  3610.   LPABC = ^ABC;
  3611.   {$EXTERNALSYM LPABC}
  3612.   NPABC = ^ABC;
  3613.   {$EXTERNALSYM NPABC}
  3614.   TAbc = _ABC;
  3615.   PAbcFloat = ^TAbcFloat;
  3616.   _ABCFLOAT = record
  3617.     abcfA: FLOAT;
  3618.     abcfB: FLOAT;
  3619.     abcfC: FLOAT;
  3620.   end;
  3621.   {$EXTERNALSYM _ABCFLOAT}
  3622.   ABCFLOAT = _ABCFLOAT;
  3623.   {$EXTERNALSYM ABCFLOAT}
  3624.   LPABCFLOAT = ^ABCFLOAT;
  3625.   {$EXTERNALSYM LPABCFLOAT}
  3626.   NPABCFLOAT = ^ABCFLOAT;
  3627.   {$EXTERNALSYM NPABCFLOAT}
  3628.   TAbcFloat = _ABCFLOAT;
  3629.   POutlineTextMetricA = ^TOutlineTextMetricA;
  3630.   _OUTLINETEXTMETRICA = record
  3631.     otmSize: UINT;
  3632.     otmTextMetrics: TEXTMETRICA;
  3633.     otmFiller: BYTE;
  3634.     otmPanoseNumber: PANOSE;
  3635.     otmfsSelection: UINT;
  3636.     otmfsType: UINT;
  3637.     otmsCharSlopeRise: Integer;
  3638.     otmsCharSlopeRun: Integer;
  3639.     otmItalicAngle: Integer;
  3640.     otmEMSquare: UINT;
  3641.     otmAscent: Integer;
  3642.     otmDescent: Integer;
  3643.     otmLineGap: UINT;
  3644.     otmsCapEmHeight: UINT;
  3645.     otmsXHeight: UINT;
  3646.     otmrcFontBox: RECT;
  3647.     otmMacAscent: Integer;
  3648.     otmMacDescent: Integer;
  3649.     otmMacLineGap: UINT;
  3650.     otmusMinimumPPEM: UINT;
  3651.     otmptSubscriptSize: POINT;
  3652.     otmptSubscriptOffset: POINT;
  3653.     otmptSuperscriptSize: POINT;
  3654.     otmptSuperscriptOffset: POINT;
  3655.     otmsStrikeoutSize: UINT;
  3656.     otmsStrikeoutPosition: Integer;
  3657.     otmsUnderscoreSize: Integer;
  3658.     otmsUnderscorePosition: Integer;
  3659.     otmpFamilyName: PSTR;
  3660.     otmpFaceName: PSTR;
  3661.     otmpStyleName: PSTR;
  3662.     otmpFullName: PSTR;
  3663.   end;
  3664.   {$EXTERNALSYM _OUTLINETEXTMETRICA}
  3665.   OUTLINETEXTMETRICA = _OUTLINETEXTMETRICA;
  3666.   {$EXTERNALSYM OUTLINETEXTMETRICA}
  3667.   LPOUTLINETEXTMETRICA = ^OUTLINETEXTMETRICA;
  3668.   {$EXTERNALSYM LPOUTLINETEXTMETRICA}
  3669.   NPOUTLINETEXTMETRICA = ^OUTLINETEXTMETRICA;
  3670.   {$EXTERNALSYM NPOUTLINETEXTMETRICA}