# $Id: gdi.spec,v 1.3 1993/07/04 04:04:21 root Exp root $
#
name	gdi
id	3
length	490

1   pascal SetBkColor(word long) SetBkColor
2   pascal16 SetBkMode(word word) SetBkMode
3   pascal16 SetMapMode(word word) SetMapMode
4   pascal16 SetROP2(word word) SetROP2
5   pascal16 SetRelAbs(word word) SetRelAbs
6   pascal16 SetPolyFillMode(word word) SetPolyFillMode
7   pascal16 SetStretchBltMode(word word) SetStretchBltMode
8   pascal16 SetTextCharacterExtra(word s_word) SetTextCharacterExtra
9   pascal SetTextColor(word long) SetTextColor
10  pascal16 SetTextJustification(word s_word s_word) SetTextJustification
11  pascal SetWindowOrg(word s_word s_word) SetWindowOrg
12  pascal SetWindowExt(word s_word s_word) SetWindowExt
13  pascal SetViewportOrg(word s_word s_word) SetViewportOrg
14  pascal SetViewportExt(word s_word s_word) SetViewportExt
15  pascal OffsetWindowOrg(word s_word s_word) OffsetWindowOrg
16  pascal ScaleWindowExt(word s_word s_word s_word s_word) ScaleWindowExt
17  pascal OffsetViewportOrg(word s_word s_word) OffsetViewportOrg
18  pascal ScaleViewportExt(word s_word s_word s_word s_word) ScaleViewportExt
19  pascal16 LineTo(word s_word s_word) LineTo
20  pascal MoveTo(word s_word s_word) MoveTo
21  pascal16 ExcludeClipRect(word s_word s_word s_word s_word) ExcludeClipRect
22  pascal16 IntersectClipRect(word s_word s_word s_word s_word)
             IntersectClipRect
23  pascal16 Arc(word s_word s_word s_word s_word s_word s_word s_word s_word)
             Arc
24  pascal16 Ellipse(word s_word s_word s_word s_word) Ellipse
25  pascal16 FloodFill(word s_word s_word long) FloodFill
26  pascal16 Pie(word s_word s_word s_word s_word s_word s_word s_word s_word)
             Pie
27  pascal16 Rectangle(word s_word s_word s_word s_word) Rectangle
28  pascal16 RoundRect(word s_word s_word s_word s_word s_word s_word)
             RoundRect
29  pascal16 PatBlt(word s_word s_word s_word s_word long) PatBlt
30  pascal16 SaveDC(word) SaveDC
31  pascal SetPixel(word s_word s_word long) SetPixel
32  pascal16 OffsetClipRgn(word s_word s_word) OffsetClipRgn
33  pascal16 TextOut(word s_word s_word ptr word) TextOut
34  pascal16 BitBlt( word s_word s_word s_word s_word word s_word s_word long)
             BitBlt
35  pascal16 StretchBlt(word s_word s_word s_word s_word word s_word s_word
                        s_word s_word long) StretchBlt
36  pascal16 Polygon (word ptr word) Polygon 
37  pascal16 Polyline (word ptr word) Polyline 
38  pascal Escape(word word word ptr ptr) Escape
39  pascal16 RestoreDC(word s_word) RestoreDC
40  pascal16 FillRgn(word word word) FillRgn
#41  pascal FrameRgn
42  pascal16 InvertRgn(word word) InvertRgn
43  pascal16 PaintRgn(word word) PaintRgn
44  pascal16 SelectClipRgn(word word) SelectClipRgn
45  pascal16 SelectObject(word word) SelectObject
#46  pascal __GP?
47  pascal16 CombineRgn(word word word word) CombineRgn
48  pascal16 CreateBitmap(word word word word ptr) CreateBitmap
49  pascal16 CreateBitmapIndirect(ptr) CreateBitmapIndirect
50  pascal16 CreateBrushIndirect(ptr) CreateBrushIndirect
51  pascal16 CreateCompatibleBitmap(word word word) CreateCompatibleBitmap
52  pascal16 CreateCompatibleDC(word) CreateCompatibleDC
53  pascal16 CreateDC(ptr ptr ptr ptr) CreateDC
54  pascal16 CreateEllipticRgn(s_word s_word s_word s_word) CreateEllipticRgn
55  pascal16 CreateEllipticRgnIndirect(ptr) CreateEllipticRgnIndirect
56  pascal16 CreateFont(s_word s_word s_word s_word s_word word word word
                        word word word word word ptr) CreateFont
57  pascal16 CreateFontIndirect(ptr) CreateFontIndirect
58  pascal16 CreateHatchBrush(word long) CreateHatchBrush
60  pascal16 CreatePatternBrush(word) CreatePatternBrush
61  pascal16 CreatePen(s_word s_word long) CreatePen
62  pascal16 CreatePenIndirect(ptr) CreatePenIndirect
63  pascal16 CreatePolygonRgn(ptr word word) CreatePolygonRgn
64  pascal16 CreateRectRgn(s_word s_word s_word s_word) CreateRectRgn
65  pascal16 CreateRectRgnIndirect(ptr) CreateRectRgnIndirect
66  pascal16 CreateSolidBrush(long) CreateSolidBrush
67  pascal16 DPtoLP(word ptr s_word) DPtoLP
68  pascal16 DeleteDC(word) DeleteDC
69  pascal16 DeleteObject(word) DeleteObject
70  pascal16 EnumFonts(word ptr segptr long) EnumFonts
71  pascal16 EnumObjects(word word ptr long) EnumObjects
72  pascal16 EqualRgn(word word) EqualRgn
73  pascal16 ExcludeVisRect(word s_word s_word s_word s_word) ExcludeVisRect
74  pascal GetBitmapBits(word long ptr) GetBitmapBits
75  pascal GetBkColor(word) GetBkColor
76  pascal16 GetBkMode(word) GetBkMode
77  pascal16 GetClipBox(word ptr) GetClipBox
78  pascal GetCurrentPosition(word) GetCurrentPosition
79  pascal GetDCOrg(word) GetDCOrg
80  pascal16 GetDeviceCaps(word s_word) GetDeviceCaps
81  pascal16 GetMapMode(word) GetMapMode
82  pascal16 GetObject(word word ptr) GetObject
83  pascal GetPixel(word s_word s_word) GetPixel
84  pascal16 GetPolyFillMode(word) GetPolyFillMode
85  pascal16 GetROP2(word) GetROP2
86  pascal16 GetRelAbs(word) GetRelAbs
87  pascal16 GetStockObject(word) GetStockObject
88  pascal16 GetStretchBltMode(word) GetStretchBltMode
89  pascal16 GetTextCharacterExtra(word) GetTextCharacterExtra
90  pascal GetTextColor(word) GetTextColor
91  pascal GetTextExtent(word ptr s_word) GetTextExtent
92  pascal16 GetTextFace(word s_word ptr) GetTextFace
93  pascal16 GetTextMetrics(word ptr) GetTextMetrics
94  pascal GetViewportExt(word) GetViewportExt
95  pascal GetViewportOrg(word) GetViewportOrg
96  pascal GetWindowExt(word) GetWindowExt
97  pascal GetWindowOrg(word) GetWindowOrg
98  pascal16 IntersectVisRect(word s_word s_word s_word s_word)
             IntersectVisRect
99  pascal16 LPtoDP(word ptr s_word) LPtoDP
100 pascal16 LineDDA(s_word s_word s_word s_word segptr long) LineDDA
101 pascal16 OffsetRgn(word s_word s_word) OffsetRgn
102 pascal16 OffsetVisRgn(word s_word s_word) OffsetVisRgn
103 pascal16 PtVisible(word s_word s_word) PtVisible
104 pascal16 RectVisibleOld(word ptr) RectVisible
105 pascal16 SelectVisRgn(word word) SelectVisRgn
106 pascal SetBitmapBits(word long ptr) SetBitmapBits
117 pascal SetDCOrg(word s_word s_word) SetDCOrg
119 pascal16 AddFontResource(ptr) AddFontResource
#121 pascal Death
#122 pascal ReSurRection
123 pascal16 PlayMetaFile(word word) PlayMetaFile
124 pascal16 GetMetaFile(ptr) GetMetaFile
125 pascal16 CreateMetaFile(ptr) CreateMetaFile
126 pascal16 CloseMetaFile(word) CloseMetaFile
127 pascal16 DeleteMetaFile(word) DeleteMetaFile
128 pascal MulDiv(s_word s_word s_word) MulDiv
129 pascal16 SaveVisRgn(word) SaveVisRgn
130 pascal16 RestoreVisRgn(word) RestoreVisRgn
131 pascal16 InquireVisRgn(word) InquireVisRgn
132 pascal16 SetEnvironment(ptr ptr word) SetEnvironment
133 pascal16 GetEnvironment(ptr ptr word) GetEnvironment
134 pascal16 GetRgnBox(word ptr) GetRgnBox
#135 pascal ScanLr
136 pascal16 RemoveFontResource(ptr) RemoveFontResource
148 pascal SetBrushOrg(word s_word s_word) SetBrushOrg
149 pascal GetBrushOrg(word) GetBrushOrg
150 pascal16 UnrealizeObject(word) UnrealizeObject
#151 pascal CopyMetaFile
153 pascal16 CreateIC(ptr ptr ptr ptr) CreateIC
154 pascal GetNearestColor(word long) GetNearestColor
#155 pascal QueryAbort
156 pascal16 CreateDiscardableBitmap(word word word) CreateDiscardableBitmap
#159 pascal GetMetaFileBits
#160 pascal SetMetaFileBits
161 pascal16 PtInRegion(word s_word s_word) PtInRegion
162 pascal GetBitmapDimension(word) GetBitmapDimension
163 pascal SetBitmapDimension(word s_word s_word) SetBitmapDimension
#169 pascal IsDCDirty
#170 pascal SetDCStatus
172 pascal16 SetRectRgn(word s_word s_word s_word s_word) SetRectRgn
173 pascal16 GetClipRgn(word) GetClipRgn
#175 pascal EnumMetaFile
176 pascal16 PlayMetaFileRecord(word ptr ptr word) PlayMetaFileRecord
179 pascal16 GetDCState(word) GetDCState
180 pascal16 SetDCState(word word) SetDCState
181 pascal16 RectInRegionOld(word ptr) RectInRegion
#190 pascal SetDCHook
#191 pascal GetDCHook
#192 pascal SetHookFlags
#193 pascal SetBoundsRect
#194 pascal GetBoundsRect
#195 pascal SelectBitmap
#196 pascal SetMetaFileBitsBetter
#201 pascal DMBITBLT
#202 pascal DMCOLORINFO
#206 pascal DMENUMDFONTS
#207 pascal DMENUMOBJ
#208 pascal DMOUTPUT
#209 pascal DMPIXEL
#210 pascal DMREALIZEOBJECT
#211 pascal DMSTRBLT
#212 pascal DMSCANLR
#213 pascal BRUTE
#214 pascal DMEXTTEXTOUT
#215 pascal DMGETCHARWIDTH
#216 pascal DMSTRETCHBLT
#217 pascal DMDIBBITS
#218 pascal DMSTRETCHDIBITS
#219 pascal DMSETDIBTODEV
#220 pascal DMTRANSPOSE
#230 pascal CREATEPQ
#231 pascal MINPQ
#232 pascal EXTRACTPQ
#233 pascal INSERTPQ
#234 pascal SIZEPQ
#235 pascal DELETEPQ
#240 pascal OPENJOB
#241 pascal WRITESPOOL
#242 pascal WRITEDIALOG
#243 pascal CLOSEJOB
#244 pascal DELETEJOB
#245 pascal GETSPOOLJOB
#246 pascal STARTSPOOLPAGE
#247 pascal ENDSPOOLPAGE
#248 pascal QUERYJOB
250 pascal16 Copy(ptr ptr word) Copy
#253 pascal DeleteSpoolPage
#254 pascal SpoolFile
#300 pascal ENGINEENUMERATEFONT
#301 pascal ENGINEDELETEFONT
#302 pascal ENGINEREALIZEFONT
#303 pascal ENGINEGETCHARWIDTH
#304 pascal ENGINESETFONTCONTEXT
#305 pascal ENGINEGETGLYPHBMP
#306 pascal ENGINEMAKEFONTDIR
#307 pascal GETCHARABCWIDTHS
#308 pascal GETOUTLINETEXTMETRICS
#309 pascal GETGLYPHOUTLINE
#310 pascal CREATESCALABLEFONTRESOURCE
#311 pascal GETFONTDATA
#312 pascal CONVERTOUTLINEFONTFILE
313 pascal16 GetRasterizerCaps(ptr word) GetRasterizerCaps
#314 pascal ENGINEEXTTEXTOUT
330 pascal16 EnumFontFamilies(word ptr segptr long) EnumFontFamilies
#332 pascal GETKERNINGPAIRS
345 pascal16 GetTextAlign(word) GetTextAlign
346 pascal16 SetTextAlign(word word) SetTextAlign
348 pascal16 Chord(word s_word s_word s_word s_word s_word s_word
                   s_word s_word) Chord
349 pascal SetMapperFlags(word word) SetMapperFlags
350 pascal16 GetCharWidth(word word word ptr) GetCharWidth
351 pascal16 ExtTextOut(word s_word s_word word ptr ptr s_word ptr) ExtTextOut
#352 pascal GETPHYSICALFONTHANDLE
#353 pascal GETASPECTRATIOFILTER
#354 pascal SHRINKGDIHEAP
360 pascal16 CreatePalette(ptr) CreatePalette
361 pascal16 GDISelectPalette(word word) GDISelectPalette
362 pascal16 GDIRealizePalette(word) GDIRealizePalette
363 pascal16 GetPaletteEntries(word word word ptr) GetPaletteEntries
364 pascal16 SetPaletteEntries(word word word ptr) SetPaletteEntries
365 pascal16 RealizeDefaultPalette(word) RealizeDefaultPalette
#366 pascal UPDATECOLORS
#367 pascal ANIMATEPALETTE
#368 pascal RESIZEPALETTE
370 pascal16 GetNearestPaletteIndex(word long) GetNearestPaletteIndex
372 pascal16 ExtFloodFill(word s_word s_word long word) ExtFloodFill
375 pascal16 GetSystemPaletteEntries(word word word ptr)
             GetSystemPaletteEntries
#376 pascal RESETDC
#377 pascal STARTDOC
#378 pascal ENDDOC
#379 pascal STARTPAGE
#380 pascal ENDPAGE
#381 pascal SETABORTPROC
#382 pascal ABORTDOC
#400 pascal FASTWINDOWFRAME
#401 pascal GDIMOVEBITMAP
#403 pascal GDIINIT2
#405 pascal FINALGDIINIT
#407 pascal CREATEUSERBITMAP
#409 pascal CREATEUSERDISCARDABLEBITMAP
#410 pascal ISVALIDMETAFILE
411 pascal16 GetCurLogFont(word) GetCurLogFont
#412 pascal ISDCCURRENTPALETTE
#439 pascal STRETCHDIBITS
440 pascal16 SetDIBits(word word word word ptr ptr word) SetDIBits
441 pascal16 GetDIBits(word word word word ptr ptr word) GetDIBits
442 pascal16 CreateDIBitmap(word ptr long ptr ptr word) CreateDIBitmap
443 pascal16 SetDIBitsToDevice(word s_word s_word word word word word
                               word word ptr ptr word) SetDIBitsToDevice
444 pascal16 CreateRoundRectRgn(s_word s_word s_word s_word s_word s_word)
             CreateRoundRectRgn
445 pascal16 CreateDIBPatternBrush(word word) CreateDIBPatternBrush
#449 pascal DEVICECOLORMATCH
450 pascal16 PolyPolygon(word ptr ptr word) PolyPolygon
451 pascal16 CreatePolyPolygonRgn(ptr ptr word word) CreatePolyPolygonRgn
#452 pascal GDISEEGDIDO
#460 pascal GDITASKTERMINATION
461 return SetObjectOwner 4 0
462 pascal16 IsGDIObject(word) IsGDIObject
#463 pascal MAKEOBJECTPRIVATE
#464 pascal FIXUPBOGUSPUBLISHERMETAFILE
465 pascal16 RectVisible(word ptr) RectVisible
466 pascal16 RectInRegion(word ptr) RectInRegion
#467 pascal UNICODETOANSI
468 pascal16 GetBitmapDimensionEx(word ptr) GetBitmapDimensionEx
469 pascal16 GetBrushOrgEx(word ptr) GetBrushOrgEx
470 pascal16 GetCurrentPositionEx(word ptr) GetCurrentPositionEx
471 pascal16 GetTextExtentPoint(word ptr s_word ptr) GetTextExtentPoint
472 pascal16 GetViewportExtEx(word ptr) GetViewportExtEx
473 pascal16 GetViewportOrgEx(word ptr) GetViewportOrgEx
474 pascal16 GetWindowExtEx(word ptr) GetWindowExtEx
475 pascal16 GetWindowOrgEx(word ptr) GetWindowOrgEx
476 pascal16 OffsetViewportOrgEx(word s_word s_word ptr) OffsetViewportOrgEx
477 pascal16 OffsetWindowOrgEx(word s_word s_word ptr) OffsetWindowOrgEx
478 pascal16 SetBitmapDimensionEx(word s_word s_word ptr) SetBitmapDimensionEx
479 pascal16 SetViewportExtEx(word s_word s_word ptr) SetViewportExtEx
480 pascal16 SetViewportOrgEx(word s_word s_word ptr) SetViewportOrgEx
481 pascal16 SetWindowExtEx(word s_word s_word ptr) SetWindowExtEx
482 pascal16 SetWindowOrgEx(word s_word s_word ptr) SetWindowOrgEx
483 pascal16 MoveToEx(word s_word s_word ptr) MoveToEx
484 pascal16 ScaleViewportExtEx(word s_word s_word s_word s_word ptr)
             ScaleViewportExtEx
485 pascal16 ScaleWindowExtEx(word s_word s_word s_word s_word ptr)
             ScaleWindowExtEx
#486 pascal GETASPECTRATIOFILEREX
