Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

468 lines
18 KiB

/*++ BUILD Version: 0004 // Increment this if a change has global effects
Copyright (c) 1985-1999 Microsoft Corporation
Module Name:
wingdi.h
Abstract:
Procedure declarations, constant definitions and macros for the GDI
component.
--*/
#define CBM_CREATEDIB 0x02L /* create DIB bitmap */
#define DMDUP_LAST DMDUP_HORIZONTAL
#define DMTT_LAST DMTT_DOWNLOAD_OUTLINE
#define DMMEDIA_LAST DMMEDIA_GLOSSY
#define DMDITHER_LAST DMDITHER_GRAYSCALE
typedef ULONG COUNT;
// Old fields that Chicago won't support that we can't publically
// support anymore
#define HS_SOLIDCLR 6
#define HS_DITHEREDCLR 7
#define HS_SOLIDTEXTCLR 8
#define HS_DITHEREDTEXTCLR 9
#define HS_SOLIDBKCLR 10
#define HS_DITHEREDBKCLR 11
#define HS_API_MAX 12
#define DIB_PAL_INDICES 2 /* No color table indices into surf palette */
// End of stuff we yanked for Chicago compatability
#define SWAPL(x,y,t) {t = x; x = y; y = t;}
#define ERROR_BOOL (BOOL) -1L
#include <winddi.h>
/*********************************Struct***********************************\
* struct ENUMFONTDATA
*
* Information for the callback function used by EnumFonts.
*
* lf LOGFONT structure corresponding to one of the enumerated fonts.
*
* tm The corresponding TEXTMETRIC structure for the LOGFONT above.
*
* flType Flags are set as follows:
*
* DEVICE_FONTTYPE is set if font is device-based (as
* opposed to IFI-based).
*
* RASTER_FONTTYPE is set if font is bitmap type.
*
* History:
* 21-May-1991 -by- Gilman Wong [gilmanw]
* Wrote it.
\**************************************************************************/
#if defined(JAPAN)
#define NATIVE_CHARSET SHIFTJIS_CHARSET
#define NATIVE_CODEPAGE 932
#define NATIVE_LANGUAGE_ID 411
#define DBCS_CHARSET NATIVE_CHARSET
#elif defined(KOREA)
#define NATIVE_CHARSET HANGEUL_CHARSET
#define NATIVE_CODEPAGE 949
#define NATIVE_LANGUAGE_ID 412
#define DBCS_CHARSET NATIVE_CHARSET
#elif defined(TAIWAN)
#define NATIVE_CHARSET CHINESEBIG5_CHARSET
#define NATIVE_CODEPAGE 950
#define NATIVE_LANGUAGE_ID 404
#define DBCS_CHARSET NATIVE_CHARSET
#elif defined(PRC)
#define NATIVE_CHARSET GB2312_CHARSET
#define NATIVE_CODEPAGE 936
#define NATIVE_LANGUAGE_ID 804
#define DBCS_CHARSET NATIVE_CHARSET
#endif
#if defined(DBCS)
#define IS_DBCS_CHARSET( CharSet ) ( ((CharSet) == DBCS_CHARSET) ? TRUE : FALSE )
#define IS_ANY_DBCS_CHARSET( CharSet ) ( ((CharSet) == SHIFTJIS_CHARSET) ? TRUE : \
((CharSet) == HANGEUL_CHARSET) ? TRUE : \
((CharSet) == JOHAB_CHARSET) ? TRUE : \
((CharSet) == CHINESEBIG5_CHARSET) ? TRUE : \
((CharSet) == GB2312_CHARSET) ? TRUE : FALSE )
#define IS_DBCS_CODEPAGE( CodePage ) (((CodePage) == NATIVE_CODEPAGE) ? TRUE : FALSE )
#define IS_ANY_DBCS_CODEPAGE( CodePage ) (((CodePage) == 932) ? TRUE : \
((CodePage) == 949) ? TRUE : \
((CodePage) == 1361) ? TRUE : \
((CodePage) == 950) ? TRUE : \
((CodePage) == 936) ? TRUE : FALSE )
#endif // DBCS
/*********************************Struct***********************************\
* struct ENUMFONTDATAW
*
* Information for the callback function used by EnumFontsW
*
* lfw LOGFONTW structure corresponding to one of the enumerated fonts.
*
* tmw The corresponding TEXTMETRICW structure for the LOGFONTW above.
*
* flType Flags are set as follows:
*
* DEVICE_FONTTYPE is set if font is device-based (as
* opposed to IFI-based).
*
* RASTER_FONTTYPE is set if font is bitmap type.
*
* History:
* Wed 04-Sep-1991 -by- Bodin Dresevic [BodinD]
* Wrote it.
\**************************************************************************/
//
// Function prototypes
//
BOOL bDeleteSurface(HSURF hsurf);
BOOL bSetBitmapOwner(HBITMAP hbm,LONG lPid);
BOOL bSetBrushOwner(HBRUSH hbr,LONG lPid);
BOOL bSetPaletteOwner(HPALETTE hpal, LONG lPid);
BOOL bSetLFONTOwner(HFONT hlfnt, LONG pid);
BOOL bDeleteRegion(HRGN hrgn);
BOOL bSetRegionOwner(HRGN hrgn,LONG lPid);
LONG iCombineRectRgn(HRGN hrgnTrg,HRGN hrgnSrc,PRECTL prcl,LONG iMode);
BOOL bGetFontPathName
(
LPWSTR *ppwszPathName, // place to store the result, full path of the font file
PWCHAR awcPathName, // ptr to the buffer on the stack, must be MAX_PATH in length
LPWSTR pwszFileName // file name, possibly bare name that has to be tacked onto the path
);
BOOL UserGetHwnd(HDC hdc, HWND *phwnd, PVOID *ppwo, BOOL bCheckStyle);
VOID UserAssociateHwnd(HWND hwnd, PVOID pwo);
// private flags in low bits of hdc returned from GreCreateDCW
#define GRE_DISPLAYDC 1
#define GRE_PRINTERDC 2
#define GRE_OWNDC 1
HDC hdcCloneDC(HDC hdc,ULONG iType);
BOOL bSetDCOwner(HDC hdc,LONG lPid);
DWORD sidGetObjectOwner(HDC hdc, DWORD objType);
BOOL bSetupDC(HDC hdc,FLONG fl);
#define SETUPDC_CLEANDC 0x00000040
#define SETUPDC_RESERVE 0x00000080
BOOL APIENTRY GreConsoleTextOut
(
HDC hdc,
POLYTEXTW *lpto,
UINT nStrings,
RECTL *prclBounds
);
#define UTO_NOCLIP 0x0001
// Server entry point for font enumeration.
// Sundown: change from ULONG to ULONG_PTR in places used as handles/pointers
ULONG_PTR APIENTRY ulEnumFontOpen(
HDC hdc, // device to enumerate on
BOOL bEnumFonts, // flag indicates old style EnumFonts()
FLONG flWin31Compat, // Win3.1 compatibility flags
COUNT cwchMax, // maximum name length (for paranoid CSR code)
LPWSTR pwszName); // font name to enumerate
BOOL APIENTRY bEnumFontChunk(
HDC hdc, // device to enumerate on
ULONG_PTR idEnum,
COUNT cefdw, // (in) capacity of buffer
COUNT *pcefdw, // (out) number of ENUMFONTDATAs returned
PENUMFONTDATAW pefdw); // return buffer
BOOL APIENTRY bEnumFontClose(
ULONG_PTR idEnum); // enumeration id
// Server entry points for adding/removing font resources.
BOOL APIENTRY bUnloadFont(
LPWSTR pwszPathname,
ULONG iResource);
// Private Control Panel entry point to configure font enumeration.
BOOL APIENTRY GreArc(HDC,int,int,int,int,int,int,int,int);
BOOL APIENTRY GreArcTo(HDC,int,int,int,int,int,int,int,int);
BOOL APIENTRY GreChord(HDC,int,int,int,int,int,int,int,int);
BOOL APIENTRY GreEllipse(HDC,int,int,int,int);
ULONG APIENTRY GreEnumObjects(HDC, int, ULONG, PVOID);
BOOL APIENTRY GreExtFloodFill(HDC,int,int,COLORREF,UINT);
BOOL APIENTRY GreFillRgn(HDC,HRGN,HBRUSH);
BOOL APIENTRY GreFloodFill(HDC,int,int,COLORREF);
BOOL APIENTRY GreFrameRgn(HDC,HRGN,HBRUSH,int,int);
BOOL APIENTRY GreMaskBlt(HDC,int,int,int,int,HDC,int,int,HBITMAP,int,int,DWORD,DWORD);
BOOL APIENTRY GrePlgBlt(HDC,LPPOINT,HDC,int,int,int,int,HBITMAP,int,int,DWORD);
BOOL APIENTRY GrePie(HDC,int,int,int,int,int,int,int,int);
BOOL APIENTRY GrePaintRgn(HDC,HRGN);
BOOL APIENTRY GreRectangle(HDC,int,int,int,int);
BOOL APIENTRY GreRoundRect(HDC,int,int,int,int,int,int);
BOOL APIENTRY GreAngleArc(HDC,int,int,DWORD,FLOATL,FLOATL);
BOOL APIENTRY GrePlayJournal(HDC,LPWSTR,ULONG,ULONG);
BOOL APIENTRY GrePolyPolygon(HDC,LPPOINT,LPINT,int);
BOOL APIENTRY GrePolyPolyline(HDC, CONST POINT *,LPDWORD,DWORD);
BOOL APIENTRY GrePolyPatBlt(HDC,DWORD,PPOLYPATBLT,DWORD,DWORD);
BOOL APIENTRY GrePolyBezierTo(HDC,LPPOINT,DWORD);
BOOL APIENTRY GrePolylineTo(HDC,LPPOINT,DWORD);
BOOL APIENTRY GreGetTextExtentExW (HDC, LPWSTR, COUNT, ULONG, COUNT *, PULONG, LPSIZE, FLONG);
int APIENTRY GreGetTextFaceW(HDC,int,LPWSTR, BOOL);
#define ETO_MASKPUBLIC ( ETO_OPAQUE | ETO_CLIPPED ) // public (wingdi.h) flag mask
BOOL APIENTRY GrePolyTextOutW(HDC, POLYTEXTW *, UINT, DWORD);
BOOL APIENTRY GreSetAttrs(HDC hdc);
BOOL APIENTRY GreSetFontXform(HDC,FLOATL,FLOATL);
BOOL APIENTRY GreBeginPath(HDC);
BOOL APIENTRY GreCloseFigure(HDC);
BOOL APIENTRY GreEndPath(HDC);
BOOL APIENTRY GreAbortPath(HDC);
BOOL APIENTRY GreFillPath(HDC);
BOOL APIENTRY GreFlattenPath(HDC);
HRGN APIENTRY GrePathToRegion(HDC);
BOOL APIENTRY GrePolyDraw(HDC,LPPOINT,LPBYTE,ULONG);
BOOL APIENTRY GreSelectClipPath(HDC,int);
int APIENTRY GreSetArcDirection(HDC,int);
int APIENTRY GreGetArcDirection(HDC);
BOOL APIENTRY GreSetMiterLimit(HDC,FLOATL,FLOATL *);
BOOL APIENTRY GreGetMiterLimit(HDC,FLOATL *);
BOOL APIENTRY GreStrokeAndFillPath(HDC);
BOOL APIENTRY GreStrokePath(HDC);
BOOL APIENTRY GreWidenPath(HDC);
BOOL APIENTRY GreAnimatePalette(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
BOOL APIENTRY GreAspectRatioFilter(HDC, LPSIZE);
BOOL APIENTRY GreCancelDC(HDC);
int APIENTRY GreChoosePixelFormat(HDC, UINT, CONST PIXELFORMATDESCRIPTOR *);
BOOL APIENTRY GreCombineTransform(XFORML *, XFORML *, XFORML *);
HDC APIENTRY GreCreateDCW(LPWSTR, LPWSTR, LPWSTR, LPDEVMODEW, BOOL);
HBRUSH APIENTRY GreCreateDIBPatternBrush(HGLOBAL, DWORD);
HBRUSH APIENTRY GreCreateDIBPatternBrushPt(LPVOID, DWORD);
HBITMAP APIENTRY GreCreateDIBitmap(HDC, LPBITMAPINFOHEADER, DWORD, LPBYTE, LPBITMAPINFO, DWORD);
HRGN APIENTRY GreCreateEllipticRgn(int, int, int, int);
HBRUSH APIENTRY GreCreateHatchBrush(ULONG, COLORREF);
HPEN APIENTRY GreCreatePen(int, int, COLORREF,HBRUSH);
HPEN APIENTRY GreExtCreatePen(ULONG, ULONG, ULONG, ULONG, ULONG_PTR, ULONG_PTR, ULONG, PULONG, ULONG, BOOL, HBRUSH);
HPEN APIENTRY GreCreatePenIndirect(LPLOGPEN);
HRGN APIENTRY GreCreatePolyPolygonRgn(CONST POINT *, CONST INT *, int, int);
HRGN APIENTRY GreCreatePolygonRgn(CONST POINT *, int, int);
HRGN APIENTRY GreCreateRoundRectRgn(int, int, int, int, int, int);
BOOL APIENTRY GreCreateScalableFontResourceW(FLONG, LPWSTR, LPWSTR, LPWSTR);
int APIENTRY GreDescribePixelFormat(HDC hdc,int ipfd,UINT cjpfd,PPIXELFORMATDESCRIPTOR ppfd);
int APIENTRY GreDeviceCapabilities(LPSTR, LPSTR, LPSTR, int, LPSTR, LPDEVMODE);
int APIENTRY GreDrawEscape(HDC,int,int,LPSTR);
BOOL APIENTRY GreEqualRgn(HRGN, HRGN);
int APIENTRY GreExtEscape(HDC,int,int,LPSTR,int,LPSTR);
BOOL APIENTRY GreGetAspectRatioFilter(HDC, LPSIZE);
BOOL APIENTRY GreGetBitmapDimension(HBITMAP, LPSIZE);
int APIENTRY GreGetBkMode(HDC);
DWORD APIENTRY GreGetBoundsRect(HDC, LPRECT, DWORD);
BOOL APIENTRY GreGetCharWidthW(HDC hdc, UINT wcFirstChar, UINT cwc, PWCHAR pwc, FLONG fl, PVOID lpBuffer);
BOOL APIENTRY GreFontIsLinked(HDC hdc);
BOOL APIENTRY GreGetCharABCWidthsW(
HDC, // hdc
UINT, // wcFirst
COUNT, // cwc
PWCHAR, // pwc to buffer with chars to convert
FLONG, //
PVOID); // abc or abcf
BOOL APIENTRY GreGetCharWidthInfo(HDC hdc, PCHWIDTHINFO pChWidthInfo);
int APIENTRY GreGetAppClipBox(HDC, LPRECT);
BOOL APIENTRY GreGetCurrentPosition(HDC, LPPOINT);
int APIENTRY GreGetGraphicsMode(HDC hdc);
COLORREF APIENTRY GreGetNearestColor(HDC, COLORREF);
UINT APIENTRY GreGetNearestPaletteIndex(HPALETTE, COLORREF);
UINT APIENTRY GreGetPaletteEntries(HPALETTE, UINT, UINT, LPPALETTEENTRY);
DWORD APIENTRY GreGetPixel(HDC, int, int);
int APIENTRY GreGetPixelFormat(HDC);
UINT APIENTRY GreGetTextAlign(HDC);
BOOL APIENTRY GreGetWorldTransform(HDC, XFORML *);
BOOL APIENTRY GreGetTransform(HDC, DWORD, XFORML *);
BOOL APIENTRY GreSetVirtualResolution(HDC, int, int, int, int);
HRGN APIENTRY GreInquireRgn(HDC hdc);
BOOL APIENTRY GreInvertRgn(HDC, HRGN);
BOOL APIENTRY GreModifyWorldTransform(HDC ,XFORML *, DWORD);
BOOL APIENTRY GreMoveTo(HDC, int, int, LPPOINT);
int APIENTRY GreOffsetClipRgn(HDC, int, int);
BOOL APIENTRY GreOffsetViewportOrg(HDC, int, int, LPPOINT);
BOOL APIENTRY GreOffsetWindowOrg(HDC, int, int, LPPOINT);
BOOL APIENTRY GrePolyBezier (HDC, LPPOINT, ULONG);
BOOL APIENTRY GrePtVisible(HDC, int, int);
BOOL APIENTRY GreRectVisible(HDC, LPRECT);
BOOL APIENTRY GreResetDC(HDC, LPDEVMODEW);
BOOL APIENTRY GreResizePalette(HPALETTE, UINT);
BOOL APIENTRY GreScaleViewportExt(HDC, int, int, int, int, LPSIZE);
BOOL APIENTRY GreScaleWindowExt(HDC, int, int, int, int, LPSIZE);
HPALETTE APIENTRY LockCSSelectPalette(HDC, HPALETTE, BOOL);
HPEN APIENTRY GreSelectPen(HDC,HPEN);
LONG APIENTRY GreSetBitmapBits(HBITMAP, ULONG, PBYTE, PLONG);
BOOL APIENTRY GreSetBitmapDimension(HBITMAP, int, int, LPSIZE);
DWORD APIENTRY GreSetBoundsRect(HDC, LPRECT, DWORD);
UINT APIENTRY GreSetDIBColorTable(HDC, UINT, UINT, RGBQUAD *);
int APIENTRY GreSetDIBitsToDevice(HDC, int, int, DWORD, DWORD, int, int, DWORD, DWORD, LPBYTE, LPBITMAPINFO, DWORD);
int APIENTRY GreSetGraphicsMode(HDC hdc, int iMode);
int APIENTRY GreSetMapMode(HDC, int);
DWORD APIENTRY GreSetMapperFlags(HDC, DWORD);
UINT APIENTRY GreSetPaletteEntries(HPALETTE, UINT, UINT, CONST PALETTEENTRY *);
COLORREF APIENTRY GreSetPixel(HDC, int, int, COLORREF);
BOOL APIENTRY GreSetPixelV(HDC, int, int, COLORREF);
BOOL APIENTRY GreSetPixelFormat(HDC, int);
BOOL APIENTRY GreSetRectRgn(HRGN, int, int, int, int);
UINT APIENTRY GreSetSystemPaletteUse(HDC, UINT);
UINT APIENTRY GreSetTextAlign(HDC, UINT);
HPALETTE APIENTRY GreCreateHalftonePalette(HDC hdc);
HPALETTE APIENTRY GreCreateCompatibleHalftonePalette(HDC hdc);
BOOL APIENTRY GreSetTextJustification(HDC, int, int);
BOOL APIENTRY GreSetViewportExt(HDC, int, int, LPSIZE);
BOOL APIENTRY GreSetWindowExt(HDC, int, int, LPSIZE);
BOOL APIENTRY GreSetWorldTransform(HDC, XFORML *);
int APIENTRY GreStretchDIBits(HDC, int, int, int, int, int, int, int, int, LPBYTE, LPBITMAPINFO, DWORD, DWORD);
BOOL APIENTRY GreSystemFontSelected(HDC, BOOL);
BOOL APIENTRY GreSwapBuffers(HDC hdc);
BOOL APIENTRY GreUnrealizeObject(HANDLE);
BOOL APIENTRY GreUpdateColors(HDC);
// Prototypes for wgl and OpenGL calls
HGLRC APIENTRY GreCreateRC(HDC);
BOOL APIENTRY GreMakeCurrent(HDC, HGLRC);
BOOL APIENTRY GreDeleteRC(HGLRC);
BOOL APIENTRY GreSwapBuffers(HDC);
BOOL APIENTRY GreGlAttention(VOID);
BOOL APIENTRY GreShareLists(HGLRC, HGLRC);
BOOL APIENTRY glsrvDuplicateSection(ULONG, HANDLE);
void APIENTRY glsrvThreadExit(void);
BOOL bSetRCOwner(HGLRC hglrc,LONG lPid);
// these should disappear as should all other functions that contain references
// to ansi strings
BOOL APIENTRY GreGetTextExtent(HDC,LPSTR,int,LPSIZE,UINT);
BOOL APIENTRY GreExtTextOut(HDC,int,int,UINT,LPRECT,LPSTR,int,LPINT);
BOOL APIENTRY GreTextOut(HDC,int,int,LPSTR,int);
// these stay
VOID vGetFontList(VOID *pvBuffer, COUNT *pNumFonts, UINT *pSize);
BOOL GreMatchFont(LPWSTR pwszBareName, LPWSTR pwszFontPathName);
// used in clean up at log-off time
// these are for font linking
BOOL GreEnableEUDC(BOOL);
// this is for font association
UINT GreGetFontAssocStatus();
BOOL APIENTRY GreStartPage(HDC);
BOOL APIENTRY GreEndPage(HDC);
int APIENTRY GreStartDoc(HDC, DOCINFOW *);
BOOL APIENTRY GreEndDoc(HDC);
BOOL APIENTRY GreAbortDoc(HDC);
// Prototypes for GDI local helper functions. These are only available on
// the client side.
HPALETTE GdiConvertPalette(HPALETTE hpal);
HFONT GdiConvertFont(HFONT hfnt);
HBRUSH GdiConvertBrush(HBRUSH hbrush);
HDC GdiGetLocalDC(HDC hdcRemote);
HDC GdiCreateLocalDC(HDC hdcRemote);
BOOL GdiReleaseLocalDC(HDC hdcLocal);
HBITMAP GdiCreateLocalBitmap();
HBRUSH GdiCreateLocalBrush(HBRUSH hbrushRemote);
HRGN GdiCreateLocalRegion(HRGN hrgnRemote);
HFONT GdiCreateLocalFont(HFONT hfntRemote);
HPALETTE GdiCreateLocalPalette(HPALETTE hpalRemote);
ULONG GdiAssociateObject(ULONG hLocal,ULONG hRemote);
VOID GdiDeleteLocalObject(ULONG h);
BOOL GdiSetAttrs(HDC);
HANDLE SelectFontLocal(HDC, HANDLE);
HANDLE SelectBrushLocal(HDC, HANDLE);
HFONT GdiGetLocalFont(HFONT);
HBRUSH GdiGetLocalBrush(HBRUSH);
HBITMAP GdiGetLocalBitmap(HBITMAP);
HDC GdiCloneDC(HDC hdc, UINT iType);
BOOL GdiPlayScript(PULONG pulScript,ULONG cjScript,PULONG pulEnv,ULONG cjEnv,PULONG pulOutput,ULONG cjOutput,ULONG cLimit);
BOOL GdiPlayDCScript(HDC hdc,PULONG pulScript,ULONG cjScript,PULONG pulOutput,ULONG cjOutput,ULONG cLimit);
BOOL GdiIsMetaFileDC(HDC hdc);
// Return codes from server-side ResetDC
#define RESETDC_ERROR 0
#define RESETDC_FAILED 1
#define RESETDC_SUCCESS 2
// Private calls for USER
int APIENTRY GreGetClipRgn(HDC, HRGN);
BOOL APIENTRY GreSrcBlt(HDC, int, int, int, int, int, int);
BOOL APIENTRY GreCopyBits(HDC,int,int,int,int,HDC,int,int);
VOID APIENTRY GreSetClientRgn(PVOID, HRGN, LPRECT);
ULONG APIENTRY GreSetROP2(HDC hdc,int iROP);
// Private calls for metafiling
DWORD APIENTRY GreGetRegionData(HRGN, DWORD, LPRGNDATA);
HRGN APIENTRY GreExtCreateRegion(XFORML *, DWORD, LPRGNDATA);
int APIENTRY GreExtSelectMetaRgn(HDC, HRGN, int);
BOOL APIENTRY GreMonoBitmap(HBITMAP);
HBITMAP APIENTRY GreGetObjectBitmapHandle(HBRUSH, UINT *);
typedef struct _DDALIST
{
LONG yTop;
LONG yBottom;
LONG axPairs[2];
} DDALIST;