Changed the GDI driver interface to pass an opaque PHYSDEV pointer
instead of a DC structure.
Removed some direct accesses to the DC structure from the drivers.
Got rid the bitmap driver.
diff --git a/include/bitmap.h b/include/bitmap.h
index f068365..5eb5355 100644
--- a/include/bitmap.h
+++ b/include/bitmap.h
@@ -23,8 +23,6 @@
#include "gdi.h"
-struct tagGDI_BITMAP_DRIVER;
-
/* Flags used for BitmapBits. We only use the first two at the moment */
#define DDB_SET 1
@@ -48,19 +46,6 @@
SEGPTR segptr_bits; /* segptr to DIB bits */
} BITMAPOBJ;
-typedef struct tagBITMAP_DRIVER
-{
- INT (*pSetDIBits)(struct tagBITMAPOBJ *,struct tagDC *,UINT,UINT,LPCVOID,const BITMAPINFO *,UINT,HBITMAP);
- INT (*pGetDIBits)(struct tagBITMAPOBJ *,struct tagDC *,UINT,UINT,LPVOID,BITMAPINFO *,UINT,HBITMAP);
- VOID (*pDeleteDIBSection)(struct tagBITMAPOBJ *);
- UINT (*pSetDIBColorTable)(struct tagBITMAPOBJ *,struct tagDC *,UINT,UINT,const RGBQUAD *);
- UINT (*pGetDIBColorTable)(struct tagBITMAPOBJ *,struct tagDC *,UINT,UINT,RGBQUAD *);
- INT (*pLockDIB)(struct tagBITMAPOBJ *,INT,BOOL);
- VOID (*pUnlockDIB)(struct tagBITMAPOBJ *,BOOL);
-} BITMAP_DRIVER;
-
-extern BITMAP_DRIVER *BITMAP_Driver;
-
/* objects/bitmap.c */
extern INT16 BITMAP_GetObject16( BITMAPOBJ * bmp, INT16 count, LPVOID buffer );
extern INT BITMAP_GetObject( BITMAPOBJ * bmp, INT count, LPVOID buffer );
@@ -77,7 +62,6 @@
extern HBITMAP DIB_CreateDIBSection( HDC hdc, BITMAPINFO *bmi, UINT usage, LPVOID *bits,
HANDLE section, DWORD offset, DWORD ovr_pitch );
extern void DIB_UpdateDIBSection( DC *dc, BOOL toDIB );
-extern void DIB_DeleteDIBSection( BITMAPOBJ *bmp );
extern void DIB_SelectDIBSection( DC *dc, BITMAPOBJ *bmp );
extern HGLOBAL DIB_CreateDIBFromBitmap(HDC hdc, HBITMAP hBmp);
diff --git a/include/gdi.h b/include/gdi.h
index 4ae8289..6982061 100644
--- a/include/gdi.h
+++ b/include/gdi.h
@@ -62,12 +62,14 @@
typedef struct tagGdiFont *GdiFont;
+typedef struct { int opaque; } *PHYSDEV; /* PHYSDEV is an opaque pointer */
+
typedef struct tagDC
{
GDIOBJHDR header;
HDC hSelf; /* Handle to this DC */
const struct tagDC_FUNCS *funcs; /* DC function table */
- void *physDev; /* Physical device (driver-specific) */
+ PHYSDEV physDev; /* Physical device (driver-specific) */
INT saveLevel;
DWORD dwHookData;
FARPROC16 hookProc; /* the original SEGPTR ... */
@@ -138,108 +140,113 @@
typedef struct tagDC_FUNCS
{
- INT (*pAbortDoc)(DC*);
- BOOL (*pAbortPath)(DC*);
- BOOL (*pAngleArc)(DC*,INT,INT,DWORD,FLOAT,FLOAT);
- BOOL (*pArc)(DC*,INT,INT,INT,INT,INT,INT,INT,INT);
- BOOL (*pArcTo)(DC*,INT,INT,INT,INT,INT,INT,INT,INT);
- BOOL (*pBeginPath)(DC*);
- BOOL (*pBitBlt)(DC*,INT,INT,INT,INT,DC*,INT,INT,DWORD);
+ INT (*pAbortDoc)(PHYSDEV);
+ BOOL (*pAbortPath)(PHYSDEV);
+ BOOL (*pAngleArc)(PHYSDEV,INT,INT,DWORD,FLOAT,FLOAT);
+ BOOL (*pArc)(PHYSDEV,INT,INT,INT,INT,INT,INT,INT,INT);
+ BOOL (*pArcTo)(PHYSDEV,INT,INT,INT,INT,INT,INT,INT,INT);
+ BOOL (*pBeginPath)(PHYSDEV);
+ BOOL (*pBitBlt)(PHYSDEV,INT,INT,INT,INT,PHYSDEV,INT,INT,DWORD);
LONG (*pBitmapBits)(HBITMAP,void*,LONG,WORD);
- INT (*pChoosePixelFormat)(DC*,const PIXELFORMATDESCRIPTOR *);
- BOOL (*pChord)(DC*,INT,INT,INT,INT,INT,INT,INT,INT);
- BOOL (*pCloseFigure)(DC*);
- BOOL (*pCreateBitmap)(HBITMAP);
- BOOL (*pCreateDC)(DC*,LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
- HBITMAP (*pCreateDIBSection)(DC *,BITMAPINFO *,UINT,LPVOID *,HANDLE,
- DWORD,DWORD);
- BOOL (*pDeleteDC)(DC*);
+ INT (*pChoosePixelFormat)(PHYSDEV,const PIXELFORMATDESCRIPTOR *);
+ BOOL (*pChord)(PHYSDEV,INT,INT,INT,INT,INT,INT,INT,INT);
+ BOOL (*pCloseFigure)(PHYSDEV);
+ BOOL (*pCreateBitmap)(HBITMAP);
+ BOOL (*pCreateDC)(DC *,LPCSTR,LPCSTR,LPCSTR,const DEVMODEA*);
+ HBITMAP (*pCreateDIBSection)(PHYSDEV,BITMAPINFO *,UINT,LPVOID *,HANDLE,DWORD,DWORD);
+ BOOL (*pDeleteDC)(PHYSDEV);
BOOL (*pDeleteObject)(HGDIOBJ);
- INT (*pDescribePixelFormat)(DC *,INT,UINT,PIXELFORMATDESCRIPTOR *);
+ INT (*pDescribePixelFormat)(PHYSDEV,INT,UINT,PIXELFORMATDESCRIPTOR *);
DWORD (*pDeviceCapabilities)(LPSTR,LPCSTR,LPCSTR,WORD,LPSTR,LPDEVMODEA);
- BOOL (*pEllipse)(DC*,INT,INT,INT,INT);
- INT (*pEndDoc)(DC*);
- INT (*pEndPage)(DC*);
- BOOL (*pEndPath)(DC*);
+ BOOL (*pEllipse)(PHYSDEV,INT,INT,INT,INT);
+ INT (*pEndDoc)(PHYSDEV);
+ INT (*pEndPage)(PHYSDEV);
+ BOOL (*pEndPath)(PHYSDEV);
BOOL (*pEnumDeviceFonts)(HDC,LPLOGFONTW,DEVICEFONTENUMPROC,LPARAM);
- INT (*pExcludeClipRect)(DC*,INT,INT,INT,INT);
+ INT (*pExcludeClipRect)(PHYSDEV,INT,INT,INT,INT);
INT (*pExtDeviceMode)(LPSTR,HWND,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA,LPSTR,DWORD);
- INT (*pExtEscape)(DC*,INT,INT,LPCVOID,INT,LPVOID);
- BOOL (*pExtFloodFill)(DC*,INT,INT,COLORREF,UINT);
- BOOL (*pExtTextOut)(DC*,INT,INT,UINT,const RECT*,LPCWSTR,UINT,
- const INT*);
- BOOL (*pFillPath)(DC*);
- BOOL (*pFillRgn)(DC*,HRGN,HBRUSH);
- BOOL (*pFlattenPath)(DC*);
- BOOL (*pFrameRgn)(DC*,HRGN,HBRUSH,INT,INT);
- BOOL (*pGetCharWidth)(DC*,UINT,UINT,LPINT);
- BOOL (*pGetDCOrgEx)(DC*,LPPOINT);
- INT (*pGetDeviceCaps)(DC*,INT);
- BOOL (*pGetDeviceGammaRamp)(DC*,LPVOID);
- COLORREF (*pGetPixel)(DC*,INT,INT);
- INT (*pGetPixelFormat)(DC*);
- BOOL (*pGetTextExtentPoint)(DC*,LPCWSTR,INT,LPSIZE);
- BOOL (*pGetTextMetrics)(DC*,TEXTMETRICW*);
- INT (*pIntersectClipRect)(DC*,INT,INT,INT,INT);
- BOOL (*pInvertRgn)(DC*,HRGN);
- BOOL (*pLineTo)(DC*,INT,INT);
- BOOL (*pMoveTo)(DC*,INT,INT);
- INT (*pOffsetClipRgn)(DC*,INT,INT);
- BOOL (*pOffsetViewportOrg)(DC*,INT,INT);
- BOOL (*pOffsetWindowOrg)(DC*,INT,INT);
- BOOL (*pPaintRgn)(DC*,HRGN);
- BOOL (*pPatBlt)(DC*,INT,INT,INT,INT,DWORD);
- BOOL (*pPie)(DC*,INT,INT,INT,INT,INT,INT,INT,INT);
- BOOL (*pPolyBezier)(DC*,const POINT*,DWORD);
- BOOL (*pPolyBezierTo)(DC*,const POINT*,DWORD);
- BOOL (*pPolyDraw)(DC*,const POINT*,const BYTE *,DWORD);
- BOOL (*pPolyPolygon)(DC*,const POINT*,const INT*,UINT);
- BOOL (*pPolyPolyline)(DC*,const POINT*,const DWORD*,DWORD);
- BOOL (*pPolygon)(DC*,const POINT*,INT);
- BOOL (*pPolyline)(DC*,const POINT*,INT);
- BOOL (*pPolylineTo)(DC*,const POINT*,INT);
- UINT (*pRealizePalette)(DC*);
- BOOL (*pRectangle)(DC*,INT,INT,INT,INT);
- BOOL (*pRestoreDC)(DC*,INT);
- BOOL (*pRoundRect)(DC*,INT,INT,INT,INT,INT,INT);
- INT (*pSaveDC)(DC*);
- BOOL (*pScaleViewportExt)(DC*,INT,INT,INT,INT);
- BOOL (*pScaleWindowExt)(DC*,INT,INT,INT,INT);
- BOOL (*pSelectClipPath)(DC*,INT);
- INT (*pSelectClipRgn)(DC*,HRGN);
- HANDLE (*pSelectObject)(DC*,HANDLE);
- HPALETTE (*pSelectPalette)(DC*,HPALETTE,BOOL);
- COLORREF (*pSetBkColor)(DC*,COLORREF);
- INT (*pSetBkMode)(DC*,INT);
- VOID (*pSetDeviceClipping)(DC*);
- BOOL (*pSetDeviceGammaRamp)(DC*,LPVOID);
- INT (*pSetDIBitsToDevice)(DC*,INT,INT,DWORD,DWORD,INT,INT,UINT,UINT,
- LPCVOID,const BITMAPINFO*,UINT);
- INT (*pSetMapMode)(DC*,INT);
- DWORD (*pSetMapperFlags)(DC*,DWORD);
- COLORREF (*pSetPixel)(DC*,INT,INT,COLORREF);
- BOOL (*pSetPixelFormat)(DC*,INT,const PIXELFORMATDESCRIPTOR *);
- INT (*pSetPolyFillMode)(DC*,INT);
- INT (*pSetROP2)(DC*,INT);
- INT (*pSetRelAbs)(DC*,INT);
- INT (*pSetStretchBltMode)(DC*,INT);
- UINT (*pSetTextAlign)(DC*,UINT);
- INT (*pSetTextCharacterExtra)(DC*,INT);
- DWORD (*pSetTextColor)(DC*,DWORD);
- INT (*pSetTextJustification)(DC*,INT,INT);
- BOOL (*pSetViewportExt)(DC*,INT,INT);
- BOOL (*pSetViewportOrg)(DC*,INT,INT);
- BOOL (*pSetWindowExt)(DC*,INT,INT);
- BOOL (*pSetWindowOrg)(DC*,INT,INT);
- INT (*pStartDoc)(DC*,const DOCINFOA*);
- INT (*pStartPage)(DC*);
- BOOL (*pStretchBlt)(DC*,INT,INT,INT,INT,DC*,INT,INT,INT,INT,DWORD);
- INT (*pStretchDIBits)(DC*,INT,INT,INT,INT,INT,INT,INT,INT,
- const void *,const BITMAPINFO *,UINT,DWORD);
- BOOL (*pStrokeAndFillPath)(DC*);
- BOOL (*pStrokePath)(DC*);
- BOOL (*pSwapBuffers)(DC*);
- BOOL (*pWidenPath)(DC*);
+ INT (*pExtEscape)(PHYSDEV,INT,INT,LPCVOID,INT,LPVOID);
+ BOOL (*pExtFloodFill)(PHYSDEV,INT,INT,COLORREF,UINT);
+ BOOL (*pExtTextOut)(PHYSDEV,INT,INT,UINT,const RECT*,LPCWSTR,UINT,const INT*);
+ BOOL (*pFillPath)(PHYSDEV);
+ BOOL (*pFillRgn)(PHYSDEV,HRGN,HBRUSH);
+ BOOL (*pFlattenPath)(PHYSDEV);
+ BOOL (*pFrameRgn)(PHYSDEV,HRGN,HBRUSH,INT,INT);
+ BOOL (*pGetCharWidth)(PHYSDEV,UINT,UINT,LPINT);
+ BOOL (*pGetDCOrgEx)(PHYSDEV,LPPOINT);
+ UINT (*pGetDIBColorTable)(PHYSDEV,UINT,UINT,RGBQUAD*);
+ INT (*pGetDIBits)(PHYSDEV,HBITMAP,UINT,UINT,LPVOID,BITMAPINFO*,UINT);
+ INT (*pGetDeviceCaps)(PHYSDEV,INT);
+ BOOL (*pGetDeviceGammaRamp)(PHYSDEV,LPVOID);
+ COLORREF (*pGetPixel)(PHYSDEV,INT,INT);
+ INT (*pGetPixelFormat)(PHYSDEV);
+ BOOL (*pGetTextExtentPoint)(PHYSDEV,LPCWSTR,INT,LPSIZE);
+ BOOL (*pGetTextMetrics)(PHYSDEV,TEXTMETRICW*);
+ INT (*pIntersectClipRect)(PHYSDEV,INT,INT,INT,INT);
+ BOOL (*pInvertRgn)(PHYSDEV,HRGN);
+ BOOL (*pLineTo)(PHYSDEV,INT,INT);
+ BOOL (*pMoveTo)(PHYSDEV,INT,INT);
+ INT (*pOffsetClipRgn)(PHYSDEV,INT,INT);
+ BOOL (*pOffsetViewportOrg)(PHYSDEV,INT,INT);
+ BOOL (*pOffsetWindowOrg)(PHYSDEV,INT,INT);
+ BOOL (*pPaintRgn)(PHYSDEV,HRGN);
+ BOOL (*pPatBlt)(PHYSDEV,INT,INT,INT,INT,DWORD);
+ BOOL (*pPie)(PHYSDEV,INT,INT,INT,INT,INT,INT,INT,INT);
+ BOOL (*pPolyBezier)(PHYSDEV,const POINT*,DWORD);
+ BOOL (*pPolyBezierTo)(PHYSDEV,const POINT*,DWORD);
+ BOOL (*pPolyDraw)(PHYSDEV,const POINT*,const BYTE *,DWORD);
+ BOOL (*pPolyPolygon)(PHYSDEV,const POINT*,const INT*,UINT);
+ BOOL (*pPolyPolyline)(PHYSDEV,const POINT*,const DWORD*,DWORD);
+ BOOL (*pPolygon)(PHYSDEV,const POINT*,INT);
+ BOOL (*pPolyline)(PHYSDEV,const POINT*,INT);
+ BOOL (*pPolylineTo)(PHYSDEV,const POINT*,INT);
+ UINT (*pRealizePalette)(PHYSDEV);
+ BOOL (*pRectangle)(PHYSDEV,INT,INT,INT,INT);
+ BOOL (*pRestoreDC)(PHYSDEV,INT);
+ BOOL (*pRoundRect)(PHYSDEV,INT,INT,INT,INT,INT,INT);
+ INT (*pSaveDC)(PHYSDEV);
+ BOOL (*pScaleViewportExt)(PHYSDEV,INT,INT,INT,INT);
+ BOOL (*pScaleWindowExt)(PHYSDEV,INT,INT,INT,INT);
+ HBITMAP (*pSelectBitmap)(PHYSDEV,HBITMAP);
+ HBRUSH (*pSelectBrush)(PHYSDEV,HBRUSH);
+ BOOL (*pSelectClipPath)(PHYSDEV,INT);
+ INT (*pSelectClipRgn)(PHYSDEV,HRGN);
+ HFONT (*pSelectFont)(PHYSDEV,HFONT);
+ HPALETTE (*pSelectPalette)(PHYSDEV,HPALETTE,BOOL);
+ HPEN (*pSelectPen)(PHYSDEV,HPEN);
+ COLORREF (*pSetBkColor)(PHYSDEV,COLORREF);
+ INT (*pSetBkMode)(PHYSDEV,INT);
+ UINT (*pSetDIBColorTable)(PHYSDEV,UINT,UINT,const RGBQUAD*);
+ INT (*pSetDIBits)(PHYSDEV,HBITMAP,UINT,UINT,LPCVOID,const BITMAPINFO*,UINT);
+ INT (*pSetDIBitsToDevice)(PHYSDEV,INT,INT,DWORD,DWORD,INT,INT,UINT,UINT,LPCVOID,
+ const BITMAPINFO*,UINT);
+ VOID (*pSetDeviceClipping)(PHYSDEV);
+ BOOL (*pSetDeviceGammaRamp)(PHYSDEV,LPVOID);
+ INT (*pSetMapMode)(PHYSDEV,INT);
+ DWORD (*pSetMapperFlags)(PHYSDEV,DWORD);
+ COLORREF (*pSetPixel)(PHYSDEV,INT,INT,COLORREF);
+ BOOL (*pSetPixelFormat)(PHYSDEV,INT,const PIXELFORMATDESCRIPTOR *);
+ INT (*pSetPolyFillMode)(PHYSDEV,INT);
+ INT (*pSetROP2)(PHYSDEV,INT);
+ INT (*pSetRelAbs)(PHYSDEV,INT);
+ INT (*pSetStretchBltMode)(PHYSDEV,INT);
+ UINT (*pSetTextAlign)(PHYSDEV,UINT);
+ INT (*pSetTextCharacterExtra)(PHYSDEV,INT);
+ DWORD (*pSetTextColor)(PHYSDEV,DWORD);
+ INT (*pSetTextJustification)(PHYSDEV,INT,INT);
+ BOOL (*pSetViewportExt)(PHYSDEV,INT,INT);
+ BOOL (*pSetViewportOrg)(PHYSDEV,INT,INT);
+ BOOL (*pSetWindowExt)(PHYSDEV,INT,INT);
+ BOOL (*pSetWindowOrg)(PHYSDEV,INT,INT);
+ INT (*pStartDoc)(PHYSDEV,const DOCINFOA*);
+ INT (*pStartPage)(PHYSDEV);
+ BOOL (*pStretchBlt)(PHYSDEV,INT,INT,INT,INT,PHYSDEV,INT,INT,INT,INT,DWORD);
+ INT (*pStretchDIBits)(PHYSDEV,INT,INT,INT,INT,INT,INT,INT,INT,const void *,
+ const BITMAPINFO*,UINT,DWORD);
+ BOOL (*pStrokeAndFillPath)(PHYSDEV);
+ BOOL (*pStrokePath)(PHYSDEV);
+ BOOL (*pSwapBuffers)(PHYSDEV);
+ BOOL (*pWidenPath)(PHYSDEV);
} DC_FUNCTIONS;
/* DC hook codes */
diff --git a/include/x11drv.h b/include/x11drv.h
index d5fa2a3..41ae701 100644
--- a/include/x11drv.h
+++ b/include/x11drv.h
@@ -45,8 +45,6 @@
struct tagBITMAPOBJ;
struct tagCURSORICONINFO;
-struct tagDC;
-struct tagDeviceCaps;
struct tagPALETTEOBJ;
struct tagWINDOWPOS;
@@ -80,6 +78,8 @@
/* X physical device */
typedef struct
{
+ HDC hdc;
+ DC *dc; /* direct pointer to DC, should go away */
GC gc; /* X Window GC */
Drawable drawable;
X_PHYSFONT font;
@@ -105,77 +105,75 @@
/* Wine driver X11 functions */
-extern BOOL X11DRV_BitBlt( struct tagDC *dcDst, INT xDst, INT yDst,
- INT width, INT height, struct tagDC *dcSrc,
+extern BOOL X11DRV_BitBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT yDst,
+ INT width, INT height, X11DRV_PDEVICE *physDevSrc,
INT xSrc, INT ySrc, DWORD rop );
extern BOOL X11DRV_EnumDeviceFonts( HDC hdc, LPLOGFONTW plf,
DEVICEFONTENUMPROC dfeproc, LPARAM lp );
-extern BOOL X11DRV_GetCharWidth( struct tagDC *dc, UINT firstChar,
+extern BOOL X11DRV_GetCharWidth( X11DRV_PDEVICE *physDev, UINT firstChar,
UINT lastChar, LPINT buffer );
-extern BOOL X11DRV_GetDCOrgEx( struct tagDC *dc, LPPOINT lpp );
-extern BOOL X11DRV_GetTextExtentPoint( struct tagDC *dc, LPCWSTR str,
+extern BOOL X11DRV_GetDCOrgEx( X11DRV_PDEVICE *physDev, LPPOINT lpp );
+extern BOOL X11DRV_GetTextExtentPoint( X11DRV_PDEVICE *physDev, LPCWSTR str,
INT count, LPSIZE size );
-extern BOOL X11DRV_GetTextMetrics(struct tagDC *dc, TEXTMETRICW *metrics);
-extern BOOL X11DRV_PatBlt( struct tagDC *dc, INT left, INT top,
+extern BOOL X11DRV_GetTextMetrics(X11DRV_PDEVICE *physDev, TEXTMETRICW *metrics);
+extern BOOL X11DRV_PatBlt( X11DRV_PDEVICE *physDev, INT left, INT top,
INT width, INT height, DWORD rop );
-extern VOID X11DRV_SetDeviceClipping(struct tagDC *dc);
-extern BOOL X11DRV_StretchBlt( struct tagDC *dcDst, INT xDst, INT yDst,
+extern VOID X11DRV_SetDeviceClipping(X11DRV_PDEVICE *physDev);
+extern BOOL X11DRV_StretchBlt( X11DRV_PDEVICE *physDevDst, INT xDst, INT yDst,
INT widthDst, INT heightDst,
- struct tagDC *dcSrc, INT xSrc, INT ySrc,
+ X11DRV_PDEVICE *physDevSrc, INT xSrc, INT ySrc,
INT widthSrc, INT heightSrc, DWORD rop );
-extern BOOL X11DRV_LineTo( struct tagDC *dc, INT x, INT y);
-extern BOOL X11DRV_Arc( struct tagDC *dc, INT left, INT top, INT right,
+extern BOOL X11DRV_LineTo( X11DRV_PDEVICE *physDev, INT x, INT y);
+extern BOOL X11DRV_Arc( X11DRV_PDEVICE *physDev, INT left, INT top, INT right,
INT bottom, INT xstart, INT ystart, INT xend,
INT yend );
-extern BOOL X11DRV_Pie( struct tagDC *dc, INT left, INT top, INT right,
+extern BOOL X11DRV_Pie( X11DRV_PDEVICE *physDev, INT left, INT top, INT right,
INT bottom, INT xstart, INT ystart, INT xend,
INT yend );
-extern BOOL X11DRV_Chord( struct tagDC *dc, INT left, INT top,
+extern BOOL X11DRV_Chord( X11DRV_PDEVICE *physDev, INT left, INT top,
INT right, INT bottom, INT xstart,
INT ystart, INT xend, INT yend );
-extern BOOL X11DRV_Ellipse( struct tagDC *dc, INT left, INT top,
+extern BOOL X11DRV_Ellipse( X11DRV_PDEVICE *physDev, INT left, INT top,
INT right, INT bottom );
-extern BOOL X11DRV_Rectangle(struct tagDC *dc, INT left, INT top,
+extern BOOL X11DRV_Rectangle(X11DRV_PDEVICE *physDev, INT left, INT top,
INT right, INT bottom);
-extern BOOL X11DRV_RoundRect( struct tagDC *dc, INT left, INT top,
+extern BOOL X11DRV_RoundRect( X11DRV_PDEVICE *physDev, INT left, INT top,
INT right, INT bottom, INT ell_width,
INT ell_height );
-extern COLORREF X11DRV_SetPixel( struct tagDC *dc, INT x, INT y,
+extern COLORREF X11DRV_SetPixel( X11DRV_PDEVICE *physDev, INT x, INT y,
COLORREF color );
-extern COLORREF X11DRV_GetPixel( struct tagDC *dc, INT x, INT y);
-extern BOOL X11DRV_PaintRgn( struct tagDC *dc, HRGN hrgn );
-extern BOOL X11DRV_Polyline( struct tagDC *dc,const POINT* pt,INT count);
-extern BOOL X11DRV_Polygon( struct tagDC *dc, const POINT* pt, INT count );
-extern BOOL X11DRV_PolyPolygon( struct tagDC *dc, const POINT* pt,
+extern COLORREF X11DRV_GetPixel( X11DRV_PDEVICE *physDev, INT x, INT y);
+extern BOOL X11DRV_PaintRgn( X11DRV_PDEVICE *physDev, HRGN hrgn );
+extern BOOL X11DRV_Polyline( X11DRV_PDEVICE *physDev,const POINT* pt,INT count);
+extern BOOL X11DRV_Polygon( X11DRV_PDEVICE *physDev, const POINT* pt, INT count );
+extern BOOL X11DRV_PolyPolygon( X11DRV_PDEVICE *physDev, const POINT* pt,
const INT* counts, UINT polygons);
-extern BOOL X11DRV_PolyPolyline( struct tagDC *dc, const POINT* pt,
+extern BOOL X11DRV_PolyPolyline( X11DRV_PDEVICE *physDev, const POINT* pt,
const DWORD* counts, DWORD polylines);
-extern HGDIOBJ X11DRV_SelectObject( struct tagDC *dc, HGDIOBJ handle );
-
-extern COLORREF X11DRV_SetBkColor( struct tagDC *dc, COLORREF color );
-extern COLORREF X11DRV_SetTextColor( struct tagDC *dc, COLORREF color );
-extern BOOL X11DRV_ExtFloodFill( struct tagDC *dc, INT x, INT y,
+extern COLORREF X11DRV_SetBkColor( X11DRV_PDEVICE *physDev, COLORREF color );
+extern COLORREF X11DRV_SetTextColor( X11DRV_PDEVICE *physDev, COLORREF color );
+extern BOOL X11DRV_ExtFloodFill( X11DRV_PDEVICE *physDev, INT x, INT y,
COLORREF color, UINT fillType );
-extern BOOL X11DRV_ExtTextOut( struct tagDC *dc, INT x, INT y,
+extern BOOL X11DRV_ExtTextOut( X11DRV_PDEVICE *physDev, INT x, INT y,
UINT flags, const RECT *lprect,
LPCWSTR str, UINT count, const INT *lpDx );
extern BOOL X11DRV_CreateBitmap( HBITMAP hbitmap );
extern BOOL X11DRV_DeleteObject( HGDIOBJ handle );
extern LONG X11DRV_BitmapBits( HBITMAP hbitmap, void *bits, LONG count,
WORD flags );
-extern INT X11DRV_SetDIBitsToDevice( struct tagDC *dc, INT xDest,
+extern INT X11DRV_SetDIBitsToDevice( X11DRV_PDEVICE *physDev, INT xDest,
INT yDest, DWORD cx, DWORD cy,
INT xSrc, INT ySrc,
UINT startscan, UINT lines,
LPCVOID bits, const BITMAPINFO *info,
UINT coloruse );
-extern INT X11DRV_DeviceBitmapBits( struct tagDC *dc, HBITMAP hbitmap,
+extern INT X11DRV_DeviceBitmapBits( X11DRV_PDEVICE *physDev, HBITMAP hbitmap,
WORD fGet, UINT startscan,
UINT lines, LPSTR bits,
LPBITMAPINFO info, UINT coloruse );
-extern BOOL X11DRV_GetDeviceGammaRamp( struct tagDC *dc, LPVOID ramp );
-extern BOOL X11DRV_SetDeviceGammaRamp( struct tagDC *dc, LPVOID ramp );
+extern BOOL X11DRV_GetDeviceGammaRamp( X11DRV_PDEVICE *physDev, LPVOID ramp );
+extern BOOL X11DRV_SetDeviceGammaRamp( X11DRV_PDEVICE *physDev, LPVOID ramp );
/* OpenGL / X11 driver functions */
extern int X11DRV_ChoosePixelFormat(DC *dc, const PIXELFORMATDESCRIPTOR *pppfd) ;
@@ -188,10 +186,6 @@
extern BOOL X11DRV_BITMAP_Init(void);
extern int X11DRV_FONT_Init( int *log_pixels_x, int *log_pixels_y );
-extern HBRUSH X11DRV_BRUSH_SelectObject( DC * dc, HBRUSH hbrush );
-extern HFONT X11DRV_FONT_SelectObject( DC * dc, HFONT hfont );
-extern HPEN X11DRV_PEN_SelectObject( DC * dc, HPEN hpen );
-extern HBITMAP X11DRV_BITMAP_SelectObject( DC * dc, HBITMAP hbitmap );
extern BOOL X11DRV_BITMAP_DeleteObject( HBITMAP hbitmap );
struct tagBITMAPOBJ;
@@ -207,10 +201,10 @@
extern void X11DRV_StartGraphicsExposures( HDC hdc );
extern void X11DRV_EndGraphicsExposures( HDC hdc, HRGN hrgn );
-extern BOOL X11DRV_SetupGCForPatBlt( struct tagDC *dc, GC gc, BOOL fMapColors );
-extern BOOL X11DRV_SetupGCForBrush( struct tagDC *dc );
-extern BOOL X11DRV_SetupGCForPen( struct tagDC *dc );
-extern BOOL X11DRV_SetupGCForText( struct tagDC *dc );
+extern BOOL X11DRV_SetupGCForPatBlt( X11DRV_PDEVICE *physDev, GC gc, BOOL fMapColors );
+extern BOOL X11DRV_SetupGCForBrush( X11DRV_PDEVICE *physDev );
+extern BOOL X11DRV_SetupGCForPen( X11DRV_PDEVICE *physDev );
+extern BOOL X11DRV_SetupGCForText( X11DRV_PDEVICE *physDev );
extern const int X11DRV_XROPfunction[];
@@ -219,12 +213,12 @@
extern BOOL X11DRV_XRender_Installed;
extern void X11DRV_XRender_Init(void);
extern void X11DRV_XRender_Finalize(void);
-extern BOOL X11DRV_XRender_SelectFont(struct tagDC*, HFONT);
-extern void X11DRV_XRender_DeleteDC(struct tagDC*);
-extern BOOL X11DRV_XRender_ExtTextOut(DC *dc, INT x, INT y, UINT flags,
+extern BOOL X11DRV_XRender_SelectFont(X11DRV_PDEVICE*, HFONT);
+extern void X11DRV_XRender_DeleteDC(X11DRV_PDEVICE*);
+extern BOOL X11DRV_XRender_ExtTextOut(X11DRV_PDEVICE *physDev, INT x, INT y, UINT flags,
const RECT *lprect, LPCWSTR wstr,
UINT count, const INT *lpDx);
-extern void X11DRV_XRender_UpdateDrawable(DC *dc);
+extern void X11DRV_XRender_UpdateDrawable(X11DRV_PDEVICE *physDev);
/* exported dib functions for now */
@@ -258,37 +252,25 @@
} X11DRV_DIBSECTION;
-extern int *X11DRV_DIB_BuildColorMap( struct tagDC *dc, WORD coloruse,
+extern int *X11DRV_DIB_BuildColorMap( X11DRV_PDEVICE *physDev, WORD coloruse,
WORD depth, const BITMAPINFO *info,
int *nColors );
-extern INT X11DRV_CoerceDIBSection(struct tagDC *dc,INT,BOOL);
-extern INT X11DRV_LockDIBSection(struct tagDC *dc,INT,BOOL);
-extern void X11DRV_UnlockDIBSection(struct tagDC *dc,BOOL);
+extern INT X11DRV_CoerceDIBSection(X11DRV_PDEVICE *physDev,INT,BOOL);
+extern INT X11DRV_LockDIBSection(X11DRV_PDEVICE *physDev,INT,BOOL);
+extern void X11DRV_UnlockDIBSection(X11DRV_PDEVICE *physDev,BOOL);
extern INT X11DRV_CoerceDIBSection2(HBITMAP bmp,INT,BOOL);
extern INT X11DRV_LockDIBSection2(HBITMAP bmp,INT,BOOL);
extern void X11DRV_UnlockDIBSection2(HBITMAP bmp,BOOL);
-extern HBITMAP X11DRV_DIB_CreateDIBSection(struct tagDC *dc, BITMAPINFO *bmi, UINT usage,
+extern HBITMAP X11DRV_DIB_CreateDIBSection(X11DRV_PDEVICE *physDev, BITMAPINFO *bmi, UINT usage,
LPVOID *bits, HANDLE section, DWORD offset, DWORD ovr_pitch);
-
-extern struct tagBITMAP_DRIVER X11DRV_BITMAP_Driver;
-
-extern INT X11DRV_DIB_SetDIBits(struct tagBITMAPOBJ *bmp, struct tagDC *dc, UINT startscan,
- UINT lines, LPCVOID bits, const BITMAPINFO *info,
- UINT coloruse, HBITMAP hbitmap);
-extern INT X11DRV_DIB_GetDIBits(struct tagBITMAPOBJ *bmp, struct tagDC *dc, UINT startscan,
- UINT lines, LPVOID bits, BITMAPINFO *info,
- UINT coloruse, HBITMAP hbitmap);
extern void X11DRV_DIB_DeleteDIBSection(struct tagBITMAPOBJ *bmp);
-extern UINT X11DRV_DIB_SetDIBColorTable(struct tagBITMAPOBJ *,struct tagDC*,UINT,UINT,const RGBQUAD *);
-extern UINT X11DRV_DIB_GetDIBColorTable(struct tagBITMAPOBJ *,struct tagDC*,UINT,UINT,RGBQUAD *);
extern INT X11DRV_DIB_Coerce(struct tagBITMAPOBJ *,INT,BOOL);
extern INT X11DRV_DIB_Lock(struct tagBITMAPOBJ *,INT,BOOL);
extern void X11DRV_DIB_Unlock(struct tagBITMAPOBJ *,BOOL);
-void X11DRV_DIB_CopyDIBSection(DC *dcSrc, DC *dcDst,
- DWORD xSrc, DWORD ySrc,
- DWORD xDest, DWORD yDest,
- DWORD width, DWORD height);
+void X11DRV_DIB_CopyDIBSection(X11DRV_PDEVICE *physDevSrc, X11DRV_PDEVICE *physDevDst,
+ DWORD xSrc, DWORD ySrc, DWORD xDest, DWORD yDest,
+ DWORD width, DWORD height);
struct _DCICMD;
extern INT X11DRV_DCICommand(INT cbInput, const struct _DCICMD *lpCmd, LPVOID lpOutData);
@@ -321,7 +303,7 @@
extern void X11DRV_PALETTE_Cleanup(void);
extern COLORREF X11DRV_PALETTE_ToLogical(int pixel);
-extern int X11DRV_PALETTE_ToPhysical(struct tagDC *dc, COLORREF color);
+extern int X11DRV_PALETTE_ToPhysical(X11DRV_PDEVICE *physDev, COLORREF color);
extern struct tagPALETTE_DRIVER X11DRV_PALETTE_Driver;