23245f3322
git-svn-id: https://svn.disconnected-by-peer.at/svn/linamh/trunk/linamh@1438 6952d904-891a-0410-993b-d76249ca496b
1859 lines
69 KiB
Diff
1859 lines
69 KiB
Diff
DIB Engine: Fork DDB-DIB behaviour
|
|
|
|
From: Massimo Del Fedele <max@veneto.com>
|
|
|
|
|
|
---
|
|
|
|
dlls/winedib.drv/bitblt.c | 116 ++++++++++++++++-
|
|
dlls/winedib.drv/bitmap.c | 82 +++++++++++-
|
|
dlls/winedib.drv/clipping.c | 14 ++
|
|
dlls/winedib.drv/dc.c | 39 +++++-
|
|
dlls/winedib.drv/dib.c | 42 +++++-
|
|
dlls/winedib.drv/dibdrv.h | 9 +
|
|
dlls/winedib.drv/font.c | 81 +++++++++++-
|
|
dlls/winedib.drv/graphics.c | 284 ++++++++++++++++++++++++++++++++++++------
|
|
dlls/winedib.drv/opengl.c | 227 +++++++++++++++++++++++++++++-----
|
|
dlls/winedib.drv/palette.c | 91 ++++++++++++-
|
|
dlls/winedib.drv/pen_brush.c | 81 ++++++++++--
|
|
dlls/winedib.drv/text.c | 44 +++++--
|
|
dlls/winedib.drv/video.c | 32 ++++-
|
|
13 files changed, 995 insertions(+), 147 deletions(-)
|
|
|
|
|
|
diff --git a/dlls/winedib.drv/bitblt.c b/dlls/winedib.drv/bitblt.c
|
|
index fa9e2ec..022f223 100644
|
|
--- a/dlls/winedib.drv/bitblt.c
|
|
+++ b/dlls/winedib.drv/bitblt.c
|
|
@@ -32,12 +32,43 @@ BOOL DIBDRV_AlphaBlend( DIBDRVPHYSDEV *physDevDst, INT xDst, INT yDst, INT width
|
|
DIBDRVPHYSDEV *physDevSrc, INT xSrc, INT ySrc, INT widthSrc, INT heightSrc,
|
|
BLENDFUNCTION blendfn)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDevDst:%p, xDst:%d, yDst:%d, widthDst:%d, heightDst:%d, physDevSrc:%p, xSrc:%d, ySrc:%d, widthSrc:%d, heightSrc:%d\n",
|
|
physDevDst, xDst, yDst, widthDst, heightDst, physDevSrc, xSrc, ySrc, widthSrc, heightSrc);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pAlphaBlend(physDevDst->X11PhysDev, xDst, yDst, widthDst, heightDst,
|
|
+
|
|
+ if(physDevDst->hasDIB && physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in both source and dest DC, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pAlphaBlend(physDevDst->X11PhysDev, xDst, yDst, widthDst, heightDst,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, widthSrc, heightSrc,
|
|
+ blendfn);
|
|
+ }
|
|
+ else if(!physDevDst->hasDIB && !physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DDB selected in noth source and dest DC, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pAlphaBlend(physDevDst->X11PhysDev, xDst, yDst, widthDst, heightDst,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, widthSrc, heightSrc,
|
|
+ blendfn);
|
|
+ }
|
|
+ else if(physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DIB on source, DDB on dest -- must convert source DIB to DDB and use X11 driver for blit */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pAlphaBlend(physDevDst->X11PhysDev, xDst, yDst, widthDst, heightDst,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, widthSrc, heightSrc,
|
|
+ blendfn);
|
|
+ }
|
|
+ else /* if(physDevDst->hasDIB) */
|
|
+ {
|
|
+ /* DDB on source, DIB on dest -- must convert source DDB to DIB and use the engine for blit */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pAlphaBlend(physDevDst->X11PhysDev, xDst, yDst, widthDst, heightDst,
|
|
physDevSrc->X11PhysDev, xSrc, ySrc, widthSrc, heightSrc,
|
|
blendfn);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -47,11 +78,39 @@ BOOL DIBDRV_BitBlt( DIBDRVPHYSDEV *physDevDst, INT xDst, INT yDst,
|
|
INT width, INT height, DIBDRVPHYSDEV *physDevSrc,
|
|
INT xSrc, INT ySrc, DWORD rop )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDevDst:%p, xDst:%d, yDst:%d, width:%d, height:%d, physDevSrc:%p, xSrc:%d, ySrc:%d, rop:%08x\n",
|
|
physDevDst, xDst, yDst, width, height, physDevSrc, xSrc, ySrc, rop);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pBitBlt(physDevDst->X11PhysDev, xDst, yDst, width, height,
|
|
+
|
|
+ if(physDevDst->hasDIB && physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in both source and dest DC, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pBitBlt(physDevDst->X11PhysDev, xDst, yDst, width, height,
|
|
physDevSrc->X11PhysDev, xSrc, ySrc, rop);
|
|
+ }
|
|
+ else if(!physDevDst->hasDIB && !physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DDB selected in noth source and dest DC, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pBitBlt(physDevDst->X11PhysDev, xDst, yDst, width, height,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, rop);
|
|
+ }
|
|
+ else if(physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DIB on source, DDB on dest -- must convert source DIB to DDB and use X11 driver for blit */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pBitBlt(physDevDst->X11PhysDev, xDst, yDst, width, height,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, rop);
|
|
+ }
|
|
+ else /* if(physDevDst->hasDIB) */
|
|
+ {
|
|
+ /* DDB on source, DIB on dest -- must convert source DDB to DIB and use the engine for blit */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pBitBlt(physDevDst->X11PhysDev, xDst, yDst, width, height,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, rop);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -62,11 +121,39 @@ BOOL DIBDRV_StretchBlt( DIBDRVPHYSDEV *physDevDst, INT xDst, INT yDst,
|
|
DIBDRVPHYSDEV *physDevSrc, INT xSrc, INT ySrc,
|
|
INT widthSrc, INT heightSrc, DWORD rop )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDevDst:%p, xDst:%d, yDst:%d, widthDst:%d, heightDst:%d, physDevSrc:%p, xSrc:%d, ySrc:%d, widthSrc:%d, heightSrc:%d, rop:%8x\n",
|
|
physDevDst, xDst, yDst, widthDst, heightDst, physDevSrc, xSrc, ySrc, widthSrc, heightSrc, rop);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pStretchBlt(physDevDst->X11PhysDev, xDst, yDst, widthSrc, heightSrc,
|
|
+
|
|
+ if(physDevDst->hasDIB && physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in both source and dest DC, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pStretchBlt(physDevDst->X11PhysDev, xDst, yDst, widthSrc, heightSrc,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, widthDst, heightDst, rop);
|
|
+ }
|
|
+ else if(!physDevDst->hasDIB && !physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DDB selected in noth source and dest DC, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pStretchBlt(physDevDst->X11PhysDev, xDst, yDst, widthSrc, heightSrc,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, widthDst, heightDst, rop);
|
|
+ }
|
|
+ else if(physDevSrc->hasDIB)
|
|
+ {
|
|
+ /* DIB on source, DDB on dest -- must convert source DIB to DDB and use X11 driver for blit */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pStretchBlt(physDevDst->X11PhysDev, xDst, yDst, widthSrc, heightSrc,
|
|
physDevSrc->X11PhysDev, xSrc, ySrc, widthDst, heightDst, rop);
|
|
+ }
|
|
+ else /* if(physDevDst->hasDIB) */
|
|
+ {
|
|
+ /* DDB on source, DIB on dest -- must convert source DDB to DIB and use the engine for blit */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pStretchBlt(physDevDst->X11PhysDev, xDst, yDst, widthSrc, heightSrc,
|
|
+ physDevSrc->X11PhysDev, xSrc, ySrc, widthDst, heightDst, rop);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -74,7 +161,20 @@ BOOL DIBDRV_StretchBlt( DIBDRVPHYSDEV *physDevDst, INT xDst, INT yDst,
|
|
*/
|
|
BOOL DIBDRV_PatBlt( DIBDRVPHYSDEV *physDev, INT left, INT top, INT width, INT height, DWORD rop )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, left:%d, top:%d, width:%d, height:%d, rop:%06x\n", physDev, left, top, width, height, rop);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pPatBlt(physDev->X11PhysDev, left, top, width, height, rop);
|
|
+
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPatBlt(physDev->X11PhysDev, left, top, width, height, rop);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPatBlt(physDev->X11PhysDev, left, top, width, height, rop);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/bitmap.c b/dlls/winedib.drv/bitmap.c
|
|
index 09cca69..df7c03a 100644
|
|
--- a/dlls/winedib.drv/bitmap.c
|
|
+++ b/dlls/winedib.drv/bitmap.c
|
|
@@ -31,9 +31,31 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
*/
|
|
HBITMAP DIBDRV_SelectBitmap( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap )
|
|
{
|
|
+ DIBSECTION dibSection;
|
|
+ HBITMAP res;
|
|
+
|
|
TRACE("physDev:%p, hbitmap:%p\n", physDev, hbitmap);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSelectBitmap(physDev->X11PhysDev, hbitmap);
|
|
+
|
|
+ /* try to get the DIBSECTION data from the bitmap */
|
|
+ if(GetObjectW(hbitmap, sizeof(DIBSECTION), &dibSection) == sizeof(BITMAP))
|
|
+ {
|
|
+ /* not a DIB section, sets it on physDev and use X11 behaviour */
|
|
+ physDev->hasDIB = FALSE;
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectBitmap(physDev->X11PhysDev, hbitmap);
|
|
+ if(res)
|
|
+ physDev->hbitmap = hbitmap;
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* it's a DIB section, sets it on physDev and use DIB Engine behaviour */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ physDev->hasDIB = TRUE;
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectBitmap(physDev->X11PhysDev, hbitmap);
|
|
+ if(res)
|
|
+ physDev->hbitmap = hbitmap;
|
|
+ }
|
|
+ return res;
|
|
+
|
|
}
|
|
|
|
/****************************************************************************
|
|
@@ -41,9 +63,24 @@ HBITMAP DIBDRV_SelectBitmap( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap )
|
|
*/
|
|
BOOL DIBDRV_CreateBitmap( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap, LPVOID bmBits )
|
|
{
|
|
+ DIBSECTION dibSection;
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, hbitmap:%p, bmBits:%p\n", physDev, hbitmap, bmBits);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pCreateBitmap(physDev->X11PhysDev, hbitmap, bmBits);
|
|
+
|
|
+ /* try to get the DIBSECTION data from the bitmap */
|
|
+ if(GetObjectW(hbitmap, sizeof(DIBSECTION), &dibSection) == sizeof(BITMAP))
|
|
+ {
|
|
+ /* not a DIB section, use X11 behaviour */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pCreateBitmap(physDev->X11PhysDev, hbitmap, bmBits);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* it's a DIB section, use DIB Engine behaviour */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pCreateBitmap(physDev->X11PhysDev, hbitmap, bmBits);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -51,9 +88,24 @@ BOOL DIBDRV_CreateBitmap( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap, LPVOID bmBits
|
|
*/
|
|
BOOL DIBDRV_DeleteBitmap( HBITMAP hbitmap )
|
|
{
|
|
+ DIBSECTION dibSection;
|
|
+ BOOL res;
|
|
+
|
|
TRACE("hbitmap:%p\n", hbitmap);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pDeleteBitmap(hbitmap);
|
|
+
|
|
+ /* try to get the DIBSECTION data from the bitmap */
|
|
+ if(GetObjectW(hbitmap, sizeof(DIBSECTION), &dibSection) == sizeof(BITMAP))
|
|
+ {
|
|
+ /* not a DIB section, use X11 behaviour */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pDeleteBitmap(hbitmap);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* it's a DIB section, use DIB Engine behaviour */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pDeleteBitmap(hbitmap);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -61,9 +113,14 @@ BOOL DIBDRV_DeleteBitmap( HBITMAP hbitmap )
|
|
*/
|
|
LONG DIBDRV_GetBitmapBits( HBITMAP hbitmap, void *buffer, LONG count )
|
|
{
|
|
+ LONG res;
|
|
+
|
|
TRACE("hbitmap:%p, buffer:%p, count:%d\n", hbitmap, buffer, count);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetBitmapBits(hbitmap, buffer, count);
|
|
+
|
|
+ /* GetBitmapBits is only valid for DDBs, so use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetBitmapBits(hbitmap, buffer, count);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/******************************************************************************
|
|
@@ -71,7 +128,12 @@ LONG DIBDRV_GetBitmapBits( HBITMAP hbitmap, void *buffer, LONG count )
|
|
*/
|
|
LONG DIBDRV_SetBitmapBits( HBITMAP hbitmap, const void *bits, LONG count )
|
|
{
|
|
+ LONG res;
|
|
+
|
|
TRACE("hbitmap:%p, bits:%p, count:%d\n", hbitmap, bits, count);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetBitmapBits(hbitmap, bits, count);
|
|
+
|
|
+ /* SetBitmapBits is only valid for DDBs, so use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetBitmapBits(hbitmap, bits, count);
|
|
+
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/clipping.c b/dlls/winedib.drv/clipping.c
|
|
index b3c18ef..1ddbb1b 100644
|
|
--- a/dlls/winedib.drv/clipping.c
|
|
+++ b/dlls/winedib.drv/clipping.c
|
|
@@ -31,6 +31,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
void DIBDRV_SetDeviceClipping( DIBDRVPHYSDEV *physDev, HRGN vis_rgn, HRGN clip_rgn )
|
|
{
|
|
TRACE("physDev:%p, vis_rgn:%p, clip_rgn:%p\n", physDev, vis_rgn, clip_rgn);
|
|
- ONCE(FIXME("stub\n"));
|
|
- _DIBDRV_GetDisplayDriver()->pSetDeviceClipping(physDev->X11PhysDev, vis_rgn, clip_rgn);
|
|
+
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ _DIBDRV_GetDisplayDriver()->pSetDeviceClipping(physDev->X11PhysDev, vis_rgn, clip_rgn);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ _DIBDRV_GetDisplayDriver()->pSetDeviceClipping(physDev->X11PhysDev, vis_rgn, clip_rgn);
|
|
+ }
|
|
}
|
|
diff --git a/dlls/winedib.drv/dc.c b/dlls/winedib.drv/dc.c
|
|
index e0ffb4d..c8e3b91 100644
|
|
--- a/dlls/winedib.drv/dc.c
|
|
+++ b/dlls/winedib.drv/dc.c
|
|
@@ -52,10 +52,15 @@ BOOL DIBDRV_CreateDC( HDC hdc, DIBDRVPHYSDEV **pdev, LPCWSTR driver, LPCWSTR dev
|
|
/* sets X11 Device pointer in DIB Engine device */
|
|
physDev->X11PhysDev = X11PhysDev;
|
|
|
|
+ /* stock bitmap selected on DC creation */
|
|
+ physDev->hbitmap = GetStockObject(DEFAULT_BITMAP);
|
|
+
|
|
+ /* no DIB selected into DC on creation */
|
|
+ physDev->hasDIB = FALSE;
|
|
+
|
|
/* sets the result value and returns */
|
|
*pdev = physDev;
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
return TRUE;
|
|
}
|
|
|
|
@@ -85,11 +90,23 @@ BOOL DIBDRV_DeleteDC( DIBDRVPHYSDEV *physDev )
|
|
INT DIBDRV_ExtEscape( DIBDRVPHYSDEV *physDev, INT escape, INT in_count, LPCVOID in_data,
|
|
INT out_count, LPVOID out_data )
|
|
{
|
|
+ INT res;
|
|
+
|
|
TRACE("physDev:%p, escape:%d, in_count:%d, in_data:%p, out_count:%d, out_data:%p\n",
|
|
physDev, escape, in_count, in_data, out_count, out_data);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pExtEscape(physDev->X11PhysDev, escape, in_count, in_data, out_count, out_data);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pExtEscape(physDev->X11PhysDev, escape, in_count, in_data, out_count, out_data);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pExtEscape(physDev->X11PhysDev, escape, in_count, in_data, out_count, out_data);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -97,8 +114,20 @@ INT DIBDRV_ExtEscape( DIBDRVPHYSDEV *physDev, INT escape, INT in_count, LPCVOID
|
|
*/
|
|
INT DIBDRV_GetDeviceCaps( DIBDRVPHYSDEV *physDev, INT cap )
|
|
{
|
|
+ INT res;
|
|
+
|
|
TRACE("physDev:%p, cap:%d\n", physDev, cap);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetDeviceCaps(physDev->X11PhysDev, cap);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetDeviceCaps(physDev->X11PhysDev, cap);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetDeviceCaps(physDev->X11PhysDev, cap);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/dib.c b/dlls/winedib.drv/dib.c
|
|
index 47dce0e..28330fa 100644
|
|
--- a/dlls/winedib.drv/dib.c
|
|
+++ b/dlls/winedib.drv/dib.c
|
|
@@ -31,10 +31,15 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
HBITMAP DIBDRV_CreateDIBSection( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap,
|
|
const BITMAPINFO *bmi, UINT usage )
|
|
{
|
|
+ HBITMAP res;
|
|
+
|
|
TRACE("physDev:%p, hbitmap:%p, bmi:%p, usage:%d\n", physDev, hbitmap, bmi, usage);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pCreateDIBSection(physDev->X11PhysDev, hbitmap, bmi, usage);
|
|
+ /* createDIBSection is only DIB-related, so we just use the engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pCreateDIBSection(physDev->X11PhysDev, hbitmap, bmi, usage);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -43,11 +48,15 @@ HBITMAP DIBDRV_CreateDIBSection( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap,
|
|
INT DIBDRV_GetDIBits( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap, UINT startscan,
|
|
UINT lines, LPCVOID bits, const BITMAPINFO *bmi, UINT coloruse )
|
|
{
|
|
+ INT res;
|
|
+
|
|
TRACE("physDev:%p, hbitmap:%p, startscan:%d, lines:%d, bits:%p, bmi:%p, coloruse:%d\n",
|
|
physDev, hbitmap, startscan, lines, bits, bmi, coloruse);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetDIBits(physDev->X11PhysDev, hbitmap, startscan, lines, bits, bmi, coloruse);
|
|
+ /* GetDIBits reads bits from a DDB, so we should use the X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetDIBits(physDev->X11PhysDev, hbitmap, startscan, lines, bits, bmi, coloruse);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -56,10 +65,15 @@ INT DIBDRV_GetDIBits( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap, UINT startscan,
|
|
UINT DIBDRV_SetDIBColorTable( DIBDRVPHYSDEV *physDev, UINT start, UINT count,
|
|
const RGBQUAD *colors )
|
|
{
|
|
+ UINT res;
|
|
+
|
|
TRACE("physDev:%p, start:%d, count:%d, colors:%p\n", physDev, start, count, colors);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetDIBColorTable(physDev->X11PhysDev, start, count, colors);
|
|
+ /* SetDIBColorTable operates on a DIB, so we use the engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDIBColorTable(physDev->X11PhysDev, start, count, colors);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -68,11 +82,15 @@ UINT DIBDRV_SetDIBColorTable( DIBDRVPHYSDEV *physDev, UINT start, UINT count,
|
|
INT DIBDRV_SetDIBits( DIBDRVPHYSDEV *physDev, HBITMAP hbitmap, UINT startscan,
|
|
UINT lines, LPCVOID bits, const BITMAPINFO *info, UINT coloruse )
|
|
{
|
|
+ INT res;
|
|
+
|
|
TRACE("physDev:%p, hbitmap:%p, startscan:%d, lines:%d, bits:%p, bmi:%p, coloruse:%d\n",
|
|
physDev, hbitmap, startscan, lines, bits, info, coloruse);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetDIBits(physDev->X11PhysDev, hbitmap, startscan, lines, bits, info, coloruse);
|
|
+ /* SetDIBits writes bits to a DDB, so we should use the X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDIBits(physDev->X11PhysDev, hbitmap, startscan, lines, bits, info, coloruse);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/*************************************************************************
|
|
@@ -83,10 +101,14 @@ INT DIBDRV_SetDIBitsToDevice( DIBDRVPHYSDEV *physDev, INT xDest, INT yDest, DWOR
|
|
UINT startscan, UINT lines, LPCVOID bits,
|
|
const BITMAPINFO *info, UINT coloruse )
|
|
{
|
|
+ INT res;
|
|
+
|
|
TRACE("physDev:%p, xDest:%d, yDest:%d, cx:%x, cy:%x, xSrc:%d, ySrc:%d, startscan:%d, lines:%d, bits:%p, info:%p, coloruse:%d\n",
|
|
physDev, xDest, yDest, cx, cy, xSrc, ySrc, startscan, lines, bits, info, coloruse);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetDIBitsToDevice(physDev->X11PhysDev, xDest, yDest, cx, cy, xSrc, ySrc,
|
|
+ /* SetDIBitsToDevice operates on a physical device, so we should use the X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDIBitsToDevice(physDev->X11PhysDev, xDest, yDest, cx, cy, xSrc, ySrc,
|
|
startscan, lines, bits, info, coloruse);
|
|
+
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/dibdrv.h b/dlls/winedib.drv/dibdrv.h
|
|
index 6dfba06..8a2e139 100644
|
|
--- a/dlls/winedib.drv/dibdrv.h
|
|
+++ b/dlls/winedib.drv/dibdrv.h
|
|
@@ -52,6 +52,9 @@
|
|
} \
|
|
}
|
|
|
|
+/* extra stock object: default 1x1 bitmap for memory DCs
|
|
+ grabbed from gdi_private.h */
|
|
+#define DEFAULT_BITMAP (STOCK_LAST+1)
|
|
|
|
/* DIB driver physical device */
|
|
typedef struct _DIBDRVPHYSDEV
|
|
@@ -59,6 +62,12 @@ typedef struct _DIBDRVPHYSDEV
|
|
/* X11 driver physical device */
|
|
PHYSDEV X11PhysDev;
|
|
|
|
+ /* is a DIB selected into DC ? */
|
|
+ BOOL hasDIB;
|
|
+
|
|
+ /* currently selected HBITMAP */
|
|
+ HBITMAP hbitmap;
|
|
+
|
|
/* active ROP2 */
|
|
INT rop2;
|
|
|
|
diff --git a/dlls/winedib.drv/font.c b/dlls/winedib.drv/font.c
|
|
index 85f9198..675145f 100644
|
|
--- a/dlls/winedib.drv/font.c
|
|
+++ b/dlls/winedib.drv/font.c
|
|
@@ -31,10 +31,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
*/
|
|
COLORREF DIBDRV_SetTextColor( DIBDRVPHYSDEV *physDev, COLORREF color )
|
|
{
|
|
+ COLORREF res;
|
|
+
|
|
TRACE("physDev:%p, color:%08x\n", physDev, color);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetTextColor(physDev->X11PhysDev, color);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetTextColor(physDev->X11PhysDev, color);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetTextColor(physDev->X11PhysDev, color);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -42,10 +54,22 @@ COLORREF DIBDRV_SetTextColor( DIBDRVPHYSDEV *physDev, COLORREF color )
|
|
*/
|
|
HFONT DIBDRV_SelectFont( DIBDRVPHYSDEV *physDev, HFONT hfont, HANDLE gdiFont )
|
|
{
|
|
+ HFONT res;
|
|
+
|
|
TRACE("physDev:%p, hfont:%p, gdiFont:%p\n", physDev, hfont, gdiFont);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSelectFont(physDev->X11PhysDev, hfont, gdiFont);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectFont(physDev->X11PhysDev, hfont, gdiFont);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectFont(physDev->X11PhysDev, hfont, gdiFont);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -54,10 +78,22 @@ HFONT DIBDRV_SelectFont( DIBDRVPHYSDEV *physDev, HFONT hfont, HANDLE gdiFont )
|
|
BOOL DIBDRV_EnumDeviceFonts( DIBDRVPHYSDEV *physDev, LPLOGFONTW plf,
|
|
FONTENUMPROCW proc, LPARAM lp )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, plf:%p, proc:%p, lp:%lx\n", physDev, plf, proc, lp);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pEnumDeviceFonts(physDev->X11PhysDev, plf, proc, lp);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pEnumDeviceFonts(physDev->X11PhysDev, plf, proc, lp);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pEnumDeviceFonts(physDev->X11PhysDev, plf, proc, lp);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -65,9 +101,22 @@ BOOL DIBDRV_EnumDeviceFonts( DIBDRVPHYSDEV *physDev, LPLOGFONTW plf,
|
|
*/
|
|
BOOL DIBDRV_GetTextMetrics( DIBDRVPHYSDEV *physDev, TEXTMETRICW *metrics )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, metrics:%p\n", physDev, metrics);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetTextMetrics(physDev->X11PhysDev, metrics);
|
|
+
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetTextMetrics(physDev->X11PhysDev, metrics);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetTextMetrics(physDev->X11PhysDev, metrics);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -76,8 +125,20 @@ BOOL DIBDRV_GetTextMetrics( DIBDRVPHYSDEV *physDev, TEXTMETRICW *metrics )
|
|
BOOL DIBDRV_GetCharWidth( DIBDRVPHYSDEV *physDev, UINT firstChar, UINT lastChar,
|
|
LPINT buffer )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, firstChar:%d, lastChar:%d, buffer:%pn", physDev, firstChar, lastChar, buffer);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetCharWidth(physDev->X11PhysDev, firstChar, lastChar, buffer);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetCharWidth(physDev->X11PhysDev, firstChar, lastChar, buffer);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetCharWidth(physDev->X11PhysDev, firstChar, lastChar, buffer);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/graphics.c b/dlls/winedib.drv/graphics.c
|
|
index b746af2..b74c08e 100644
|
|
--- a/dlls/winedib.drv/graphics.c
|
|
+++ b/dlls/winedib.drv/graphics.c
|
|
@@ -31,12 +31,25 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
BOOL DIBDRV_Arc( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT bottom,
|
|
INT xstart, INT ystart, INT xend, INT yend )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, left:%d, top:%d, right:%d, bottom:%d, xstart:%d, ystart:%d, xend:%d, yend:%d\n",
|
|
physDev, left, top, right, bottom, xstart, ystart, xend, yend);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pArc(physDev->X11PhysDev, left, top, right, bottom,
|
|
- xstart, ystart, xend, yend);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pArc(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ xstart, ystart, xend, yend);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pArc(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ xstart, ystart, xend, yend);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -45,12 +58,25 @@ BOOL DIBDRV_Arc( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT botto
|
|
BOOL DIBDRV_Chord( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT bottom,
|
|
INT xstart, INT ystart, INT xend, INT yend )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, left:%d, top:%d, right:%d, bottom:%d, xstart:%d, ystart:%d, xend:%d, yend:%d\n",
|
|
physDev, left, top, right, bottom, xstart, ystart, xend, yend);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pChord(physDev->X11PhysDev, left, top, right, bottom,
|
|
- xstart, ystart, xend, yend);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pChord(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ xstart, ystart, xend, yend);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pChord(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ xstart, ystart, xend, yend);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -58,11 +84,23 @@ BOOL DIBDRV_Chord( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT bot
|
|
*/
|
|
BOOL DIBDRV_Ellipse( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT bottom )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, left:%d, top:%d, right:%d, bottom:%d\n",
|
|
physDev, left, top, right, bottom);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pEllipse(physDev->X11PhysDev, left, top, right, bottom);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pEllipse(physDev->X11PhysDev, left, top, right, bottom);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pEllipse(physDev->X11PhysDev, left, top, right, bottom);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**********************************************************************
|
|
@@ -71,11 +109,23 @@ BOOL DIBDRV_Ellipse( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT b
|
|
BOOL DIBDRV_ExtFloodFill( DIBDRVPHYSDEV *physDev, INT x, INT y, COLORREF color,
|
|
UINT fillType )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, x:%d, y:%d, color:%x, fillType:%d\n",
|
|
physDev, x, y, color, fillType);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pExtFloodFill(physDev->X11PhysDev, x, y, color, fillType);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pExtFloodFill(physDev->X11PhysDev, x, y, color, fillType);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pExtFloodFill(physDev->X11PhysDev, x, y, color, fillType);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -83,10 +133,22 @@ BOOL DIBDRV_ExtFloodFill( DIBDRVPHYSDEV *physDev, INT x, INT y, COLORREF color,
|
|
*/
|
|
BOOL DIBDRV_GetDCOrgEx( DIBDRVPHYSDEV *physDev, LPPOINT lpp )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, lpp:%p\n", physDev, lpp);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetDCOrgEx(physDev->X11PhysDev, lpp);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetDCOrgEx(physDev->X11PhysDev, lpp);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetDCOrgEx(physDev->X11PhysDev, lpp);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -94,10 +156,22 @@ BOOL DIBDRV_GetDCOrgEx( DIBDRVPHYSDEV *physDev, LPPOINT lpp )
|
|
*/
|
|
COLORREF DIBDRV_GetPixel( DIBDRVPHYSDEV *physDev, INT x, INT y )
|
|
{
|
|
+ COLORREF res;
|
|
+
|
|
TRACE("physDev:%p, x:%d, y:%d\n", physDev, x, y);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetPixel(physDev->X11PhysDev, x, y);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetPixel(physDev->X11PhysDev, x, y);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetPixel(physDev->X11PhysDev, x, y);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -105,10 +179,22 @@ COLORREF DIBDRV_GetPixel( DIBDRVPHYSDEV *physDev, INT x, INT y )
|
|
*/
|
|
BOOL DIBDRV_LineTo( DIBDRVPHYSDEV *physDev, INT x, INT y )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, x:%d, y:%d\n", physDev, x, y);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pLineTo(physDev->X11PhysDev, x, y);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pLineTo(physDev->X11PhysDev, x, y);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pLineTo(physDev->X11PhysDev, x, y);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -116,10 +202,22 @@ BOOL DIBDRV_LineTo( DIBDRVPHYSDEV *physDev, INT x, INT y )
|
|
*/
|
|
BOOL DIBDRV_PaintRgn( DIBDRVPHYSDEV *physDev, HRGN hrgn )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, hrgn:%p\n", physDev, hrgn);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pPaintRgn(physDev->X11PhysDev, hrgn);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPaintRgn(physDev->X11PhysDev, hrgn);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPaintRgn(physDev->X11PhysDev, hrgn);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -128,12 +226,25 @@ BOOL DIBDRV_PaintRgn( DIBDRVPHYSDEV *physDev, HRGN hrgn )
|
|
BOOL DIBDRV_Pie( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT bottom,
|
|
INT xstart, INT ystart, INT xend, INT yend )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, left:%d, top:%d, right:%d, bottom:%d, xstart:%d, ystart:%d, xend:%d, yend:%d\n",
|
|
physDev, left, top, right, bottom, xstart, ystart, xend, yend);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pPie(physDev->X11PhysDev, left, top, right, bottom,
|
|
- xstart, ystart, xend, yend);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPie(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ xstart, ystart, xend, yend);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPie(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ xstart, ystart, xend, yend);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**********************************************************************
|
|
@@ -141,10 +252,22 @@ BOOL DIBDRV_Pie( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT botto
|
|
*/
|
|
BOOL DIBDRV_Polygon( DIBDRVPHYSDEV *physDev, const POINT* pt, INT count )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, pt:%p, count:%d\n", physDev, pt, count);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pPolygon(physDev->X11PhysDev, pt, count);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolygon(physDev->X11PhysDev, pt, count);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolygon(physDev->X11PhysDev, pt, count);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**********************************************************************
|
|
@@ -152,10 +275,22 @@ BOOL DIBDRV_Polygon( DIBDRVPHYSDEV *physDev, const POINT* pt, INT count )
|
|
*/
|
|
BOOL DIBDRV_Polyline( DIBDRVPHYSDEV *physDev, const POINT* pt, INT count )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, pt:%p, count:%d\n", physDev, pt, count);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pPolyline(physDev->X11PhysDev, pt, count);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolyline(physDev->X11PhysDev, pt, count);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolyline(physDev->X11PhysDev, pt, count);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**********************************************************************
|
|
@@ -163,10 +298,22 @@ BOOL DIBDRV_Polyline( DIBDRVPHYSDEV *physDev, const POINT* pt, INT count )
|
|
*/
|
|
BOOL DIBDRV_PolyPolygon( DIBDRVPHYSDEV *physDev, const POINT* pt, const INT* counts, UINT polygons)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, pt:%p, counts:%p, polygons:%d\n", physDev, pt, counts, polygons);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pPolyPolygon(physDev->X11PhysDev, pt, counts, polygons);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolyPolygon(physDev->X11PhysDev, pt, counts, polygons);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolyPolygon(physDev->X11PhysDev, pt, counts, polygons);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**********************************************************************
|
|
@@ -175,10 +322,22 @@ BOOL DIBDRV_PolyPolygon( DIBDRVPHYSDEV *physDev, const POINT* pt, const INT* cou
|
|
BOOL DIBDRV_PolyPolyline( DIBDRVPHYSDEV *physDev, const POINT* pt, const DWORD* counts,
|
|
DWORD polylines )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, pt:%p, counts:%p, polylines:%d\n", physDev, pt, counts, polylines);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pPolyPolyline(physDev->X11PhysDev, pt, counts, polylines);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolyPolyline(physDev->X11PhysDev, pt, counts, polylines);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pPolyPolyline(physDev->X11PhysDev, pt, counts, polylines);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -186,11 +345,23 @@ BOOL DIBDRV_PolyPolyline( DIBDRVPHYSDEV *physDev, const POINT* pt, const DWORD*
|
|
*/
|
|
BOOL DIBDRV_Rectangle( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT bottom)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, left:%d, top:%d, right:%d, bottom:%d\n",
|
|
physDev, left, top, right, bottom);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pRectangle(physDev->X11PhysDev, left, top, right, bottom);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pRectangle(physDev->X11PhysDev, left, top, right, bottom);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pRectangle(physDev->X11PhysDev, left, top, right, bottom);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -199,12 +370,25 @@ BOOL DIBDRV_Rectangle( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right, INT
|
|
BOOL DIBDRV_RoundRect( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right,
|
|
INT bottom, INT ell_width, INT ell_height )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, left:%d, top:%d, right:%d, bottom:%d, ell_width:%d, ell_height:%d\n",
|
|
physDev, left, top, right, bottom, ell_width, ell_height);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pRoundRect(physDev->X11PhysDev, left, top, right, bottom,
|
|
- ell_width, ell_height);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pRoundRect(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ ell_width, ell_height);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pRoundRect(physDev->X11PhysDev, left, top, right, bottom,
|
|
+ ell_width, ell_height);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -212,10 +396,22 @@ BOOL DIBDRV_RoundRect( DIBDRVPHYSDEV *physDev, INT left, INT top, INT right,
|
|
*/
|
|
COLORREF DIBDRV_SetPixel( DIBDRVPHYSDEV *physDev, INT x, INT y, COLORREF color )
|
|
{
|
|
+ COLORREF res;
|
|
+
|
|
TRACE("physDev:%p, x:%d, y:%d, color:%x\n", physDev, x, y, color);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetPixel(physDev->X11PhysDev, x, y, color);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetPixel(physDev->X11PhysDev, x, y, color);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetPixel(physDev->X11PhysDev, x, y, color);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -223,8 +419,20 @@ COLORREF DIBDRV_SetPixel( DIBDRVPHYSDEV *physDev, INT x, INT y, COLORREF color )
|
|
*/
|
|
DWORD DIBDRV_SetDCOrg( DIBDRVPHYSDEV *physDev, INT x, INT y )
|
|
{
|
|
+ DWORD res;
|
|
+
|
|
TRACE("physDev:%p, x:%d, y:%d\n", physDev, x, y);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetDCOrg(physDev->X11PhysDev, x, y);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDCOrg(physDev->X11PhysDev, x, y);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDCOrg(physDev->X11PhysDev, x, y);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/opengl.c b/dlls/winedib.drv/opengl.c
|
|
index 27e4229..e8ec96c 100644
|
|
--- a/dlls/winedib.drv/opengl.c
|
|
+++ b/dlls/winedib.drv/opengl.c
|
|
@@ -30,10 +30,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
int DIBDRV_ChoosePixelFormat( DIBDRVPHYSDEV *physDev,
|
|
const PIXELFORMATDESCRIPTOR *ppfd )
|
|
{
|
|
+ int res;
|
|
+
|
|
TRACE("physDev:%p, ppfd:%p\n", physDev, ppfd);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pChoosePixelFormat(physDev->X11PhysDev, ppfd);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pChoosePixelFormat(physDev->X11PhysDev, ppfd);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pChoosePixelFormat(physDev->X11PhysDev, ppfd);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
int DIBDRV_DescribePixelFormat( DIBDRVPHYSDEV *physDev,
|
|
@@ -41,36 +53,84 @@ int DIBDRV_DescribePixelFormat( DIBDRVPHYSDEV *physDev,
|
|
UINT nBytes,
|
|
PIXELFORMATDESCRIPTOR *ppfd )
|
|
{
|
|
+ int res;
|
|
+
|
|
TRACE("physDev:%p, iPixelFormat:%d, nBytes:%d, ppfd:%p\n", physDev, iPixelFormat, nBytes, ppfd);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pDescribePixelFormat(physDev->X11PhysDev, iPixelFormat, nBytes, ppfd);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pDescribePixelFormat(physDev->X11PhysDev, iPixelFormat, nBytes, ppfd);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pDescribePixelFormat(physDev->X11PhysDev, iPixelFormat, nBytes, ppfd);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
int DIBDRV_GetPixelFormat( DIBDRVPHYSDEV *physDev)
|
|
{
|
|
+ int res;
|
|
+
|
|
TRACE("physDev:%p\n", physDev);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetPixelFormat(physDev->X11PhysDev);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetPixelFormat(physDev->X11PhysDev);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetPixelFormat(physDev->X11PhysDev);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
BOOL DIBDRV_SetPixelFormat( DIBDRVPHYSDEV *physDev,
|
|
int iPixelFormat,
|
|
const PIXELFORMATDESCRIPTOR *ppfd )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, iPixelFormat:%d, ppfd:%p\n", physDev, iPixelFormat, ppfd);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetPixelFormat(physDev->X11PhysDev, iPixelFormat, ppfd);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetPixelFormat(physDev->X11PhysDev, iPixelFormat, ppfd);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetPixelFormat(physDev->X11PhysDev, iPixelFormat, ppfd);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
BOOL DIBDRV_SwapBuffers( DIBDRVPHYSDEV *physDev )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p\n", physDev);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSwapBuffers(physDev->X11PhysDev);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSwapBuffers(physDev->X11PhysDev);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSwapBuffers(physDev->X11PhysDev);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -80,10 +140,14 @@ BOOL DIBDRV_SwapBuffers( DIBDRVPHYSDEV *physDev )
|
|
*/
|
|
BOOL CDECL DIBDRV_wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("hglrcSrc:%p, hglrcDst:%p, mask:%x\n", hglrcSrc, hglrcDst, mask);
|
|
|
|
ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglCopyContext(hglrcSrc, hglrcDst, mask);
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglCopyContext(hglrcSrc, hglrcDst, mask);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -93,10 +157,22 @@ BOOL CDECL DIBDRV_wglCopyContext(HGLRC hglrcSrc, HGLRC hglrcDst, UINT mask)
|
|
*/
|
|
HGLRC CDECL DIBDRV_wglCreateContext(DIBDRVPHYSDEV *physDev)
|
|
{
|
|
+ HGLRC res;
|
|
+
|
|
TRACE("physDev:%p\n", physDev);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglCreateContext(physDev->X11PhysDev);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglCreateContext(physDev->X11PhysDev);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglCreateContext(physDev->X11PhysDev);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -106,10 +182,13 @@ HGLRC CDECL DIBDRV_wglCreateContext(DIBDRVPHYSDEV *physDev)
|
|
*/
|
|
BOOL CDECL DIBDRV_wglDeleteContext(HGLRC hglrc)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("hglrc:%p\n", hglrc);
|
|
|
|
ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglDeleteContext(hglrc);
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglDeleteContext(hglrc);
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -119,10 +198,14 @@ BOOL CDECL DIBDRV_wglDeleteContext(HGLRC hglrc)
|
|
*/
|
|
PROC CDECL DIBDRV_wglGetProcAddress(LPCSTR lpszProc)
|
|
{
|
|
+ PROC res;
|
|
+
|
|
TRACE("lpszProc:%p\n", lpszProc);
|
|
|
|
ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglGetProcAddress(lpszProc);
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglGetProcAddress(lpszProc);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -135,10 +218,22 @@ PROC CDECL DIBDRV_wglGetProcAddress(LPCSTR lpszProc)
|
|
*/
|
|
HDC CDECL DIBDRV_wglGetPbufferDCARB(DIBDRVPHYSDEV *physDev, HPBUFFERARB hPbuffer)
|
|
{
|
|
+ HDC res;
|
|
+
|
|
TRACE("physDev:%p, hPbuffer:%p\n", physDev, hPbuffer);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglGetPbufferDCARB(physDev->X11PhysDev, hPbuffer);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglGetPbufferDCARB(physDev->X11PhysDev, hPbuffer);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglGetPbufferDCARB(physDev->X11PhysDev, hPbuffer);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -148,10 +243,34 @@ HDC CDECL DIBDRV_wglGetPbufferDCARB(DIBDRVPHYSDEV *physDev, HPBUFFERARB hPbuffer
|
|
*/
|
|
BOOL CDECL DIBDRV_wglMakeContextCurrentARB(DIBDRVPHYSDEV* pDrawDev, DIBDRVPHYSDEV* pReadDev, HGLRC hglrc)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("pDrawDev:%p, pReadDev:%p, hglrc:%p\n", pDrawDev, pReadDev, hglrc);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglMakeContextCurrentARB(pDrawDev->X11PhysDev, pReadDev->X11PhysDev, hglrc);
|
|
+ if(pDrawDev->hasDIB && pReadDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected both in source and dest DCs, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglMakeContextCurrentARB(pDrawDev->X11PhysDev, pReadDev->X11PhysDev, hglrc);
|
|
+ }
|
|
+ if(!pDrawDev->hasDIB && !pReadDev->hasDIB)
|
|
+ {
|
|
+ /* DDB selected both in source and dest DCs, use X11 Driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglMakeContextCurrentARB(pDrawDev->X11PhysDev, pReadDev->X11PhysDev, hglrc);
|
|
+ }
|
|
+ else if(pDrawDev->hasDIB)
|
|
+ {
|
|
+ /* DIB selected in pDrawDev, must convert pReadDev to DIB and use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglMakeContextCurrentARB(pDrawDev->X11PhysDev, pReadDev->X11PhysDev, hglrc);
|
|
+ }
|
|
+ else /* if(pReadDev->hasDIB) */
|
|
+ {
|
|
+ /* DIB selected in pReadDev, must convert pReadDev to DDB and use X11 Driver */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglMakeContextCurrentARB(pDrawDev->X11PhysDev, pReadDev->X11PhysDev, hglrc);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -161,10 +280,22 @@ BOOL CDECL DIBDRV_wglMakeContextCurrentARB(DIBDRVPHYSDEV* pDrawDev, DIBDRVPHYSDE
|
|
*/
|
|
BOOL CDECL DIBDRV_wglMakeCurrent(DIBDRVPHYSDEV *physDev, HGLRC hglrc)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, hglrc:%p\n", physDev, hglrc);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglMakeCurrent(physDev->X11PhysDev, hglrc);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglMakeCurrent(physDev->X11PhysDev, hglrc);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglMakeCurrent(physDev->X11PhysDev, hglrc);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -175,10 +306,22 @@ BOOL CDECL DIBDRV_wglMakeCurrent(DIBDRVPHYSDEV *physDev, HGLRC hglrc)
|
|
*/
|
|
BOOL CDECL DIBDRV_wglSetPixelFormatWINE(DIBDRVPHYSDEV *physDev, int iPixelFormat, const PIXELFORMATDESCRIPTOR *ppfd)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, iPixelFormat:%d, ppfd:%p\n", physDev, iPixelFormat, ppfd);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglSetPixelFormatWINE(physDev->X11PhysDev, iPixelFormat, ppfd);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglSetPixelFormatWINE(physDev->X11PhysDev, iPixelFormat, ppfd);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglSetPixelFormatWINE(physDev->X11PhysDev, iPixelFormat, ppfd);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -188,10 +331,14 @@ BOOL CDECL DIBDRV_wglSetPixelFormatWINE(DIBDRVPHYSDEV *physDev, int iPixelFormat
|
|
*/
|
|
BOOL CDECL DIBDRV_wglShareLists(HGLRC hglrc1, HGLRC hglrc2)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("hglrc1:%p, hglrc2:%p\n", hglrc1, hglrc2);
|
|
|
|
ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglShareLists(hglrc1, hglrc2);
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglShareLists(hglrc1, hglrc2);
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -201,10 +348,22 @@ BOOL CDECL DIBDRV_wglShareLists(HGLRC hglrc1, HGLRC hglrc2)
|
|
*/
|
|
BOOL CDECL DIBDRV_wglUseFontBitmapsA(DIBDRVPHYSDEV *physDev, DWORD first, DWORD count, DWORD listBase)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, first:%d, count:%d, listBase:%d\n", physDev, first, count, listBase);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglUseFontBitmapsA(physDev->X11PhysDev, first, count, listBase);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglUseFontBitmapsA(physDev->X11PhysDev, first, count, listBase);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglUseFontBitmapsA(physDev->X11PhysDev, first, count, listBase);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/**
|
|
@@ -214,8 +373,20 @@ BOOL CDECL DIBDRV_wglUseFontBitmapsA(DIBDRVPHYSDEV *physDev, DWORD first, DWORD
|
|
*/
|
|
BOOL CDECL DIBDRV_wglUseFontBitmapsW(DIBDRVPHYSDEV *physDev, DWORD first, DWORD count, DWORD listBase)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, first:%d, count:%d, listBase:%d\n", physDev, first, count, listBase);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pwglUseFontBitmapsW(physDev->X11PhysDev, first, count, listBase);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglUseFontBitmapsW(physDev->X11PhysDev, first, count, listBase);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pwglUseFontBitmapsW(physDev->X11PhysDev, first, count, listBase);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/palette.c b/dlls/winedib.drv/palette.c
|
|
index 28fae09..9daf47d 100644
|
|
--- a/dlls/winedib.drv/palette.c
|
|
+++ b/dlls/winedib.drv/palette.c
|
|
@@ -30,10 +30,21 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
*/
|
|
UINT DIBDRV_RealizePalette( DIBDRVPHYSDEV *physDev, HPALETTE hpal, BOOL primary )
|
|
{
|
|
+ UINT res;
|
|
+
|
|
TRACE("physDev:%p, hpal:%p, primary:%s\n", physDev, hpal, (primary ? "TRUE" : "FALSE"));
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pRealizePalette(physDev->X11PhysDev, hpal, primary);
|
|
+ /* we should in any case call X11 function, as UnrealizePalette() doesn't
|
|
+ * take a physDev parameter */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pRealizePalette(physDev->X11PhysDev, hpal, primary);
|
|
+
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, additional (if needed) engine code */
|
|
+ ONCE(FIXME("STUB\n"));
|
|
+ }
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -41,10 +52,18 @@ UINT DIBDRV_RealizePalette( DIBDRVPHYSDEV *physDev, HPALETTE hpal, BOOL primary
|
|
*/
|
|
BOOL DIBDRV_UnrealizePalette( HPALETTE hpal )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("hpal:%p\n", hpal);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pUnrealizePalette(hpal);
|
|
+ /* we should in any case call X11 function, as UnrealizePalette() doesn't
|
|
+ * take a physDev parameter */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pUnrealizePalette(hpal);
|
|
+
|
|
+ /* additional Engine code here, if needed */
|
|
+ ONCE(FIXME("STUB\n"));
|
|
+
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -53,10 +72,22 @@ BOOL DIBDRV_UnrealizePalette( HPALETTE hpal )
|
|
UINT DIBDRV_GetSystemPaletteEntries( DIBDRVPHYSDEV *physDev, UINT start, UINT count,
|
|
LPPALETTEENTRY entries )
|
|
{
|
|
+ UINT res;
|
|
+
|
|
TRACE("physDev:%p, start:%d, count:%d, entries:%p\n", physDev, start, count, entries);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetSystemPaletteEntries(physDev->X11PhysDev, start, count, entries);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetSystemPaletteEntries(physDev->X11PhysDev, start, count, entries);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetSystemPaletteEntries(physDev->X11PhysDev, start, count, entries);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -64,10 +95,22 @@ UINT DIBDRV_GetSystemPaletteEntries( DIBDRVPHYSDEV *physDev, UINT start, UINT co
|
|
*/
|
|
COLORREF DIBDRV_GetNearestColor( DIBDRVPHYSDEV *physDev, COLORREF color )
|
|
{
|
|
+ COLORREF res;
|
|
+
|
|
TRACE("physDev:%p, color:%x\n", physDev, color);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetNearestColor(physDev->X11PhysDev, color);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetNearestColor(physDev->X11PhysDev, color);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetNearestColor(physDev->X11PhysDev, color);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -75,16 +118,40 @@ COLORREF DIBDRV_GetNearestColor( DIBDRVPHYSDEV *physDev, COLORREF color )
|
|
*/
|
|
UINT DIBDRV_RealizeDefaultPalette( DIBDRVPHYSDEV *physDev )
|
|
{
|
|
+ UINT res;
|
|
+
|
|
TRACE("physDev:%p\n", physDev);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pRealizeDefaultPalette(physDev->X11PhysDev);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pRealizeDefaultPalette(physDev->X11PhysDev);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pRealizeDefaultPalette(physDev->X11PhysDev);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
BOOL DIBDRV_GetICMProfile(DIBDRVPHYSDEV *physDev, LPDWORD lpcbName, LPWSTR lpszFilename)
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, lpcpName:%p, lpszFilename:%p\n", physDev, lpcbName, lpszFilename);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetICMProfile(physDev->X11PhysDev, lpcbName, lpszFilename);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetICMProfile(physDev->X11PhysDev, lpcbName, lpszFilename);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetICMProfile(physDev->X11PhysDev, lpcbName, lpszFilename);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/pen_brush.c b/dlls/winedib.drv/pen_brush.c
|
|
index 1e992e0..bde2f23 100644
|
|
--- a/dlls/winedib.drv/pen_brush.c
|
|
+++ b/dlls/winedib.drv/pen_brush.c
|
|
@@ -31,10 +31,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
*/
|
|
HPEN DIBDRV_SelectPen( DIBDRVPHYSDEV *physDev, HPEN hpen )
|
|
{
|
|
+ HPEN res;
|
|
+
|
|
TRACE("physDev:%p, hpen:%p\n", physDev, hpen);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSelectPen(physDev->X11PhysDev, hpen);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectPen(physDev->X11PhysDev, hpen);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectPen(physDev->X11PhysDev, hpen);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -42,10 +54,22 @@ HPEN DIBDRV_SelectPen( DIBDRVPHYSDEV *physDev, HPEN hpen )
|
|
*/
|
|
COLORREF DIBDRV_SetDCPenColor( DIBDRVPHYSDEV *physDev, COLORREF crColor )
|
|
{
|
|
+ COLORREF res;
|
|
+
|
|
TRACE("physDev:%p, crColor:%x\n", physDev, crColor);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetDCPenColor(physDev->X11PhysDev, crColor);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDCPenColor(physDev->X11PhysDev, crColor);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDCPenColor(physDev->X11PhysDev, crColor);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -53,10 +77,22 @@ COLORREF DIBDRV_SetDCPenColor( DIBDRVPHYSDEV *physDev, COLORREF crColor )
|
|
*/
|
|
HBRUSH DIBDRV_SelectBrush( DIBDRVPHYSDEV *physDev, HBRUSH hbrush )
|
|
{
|
|
+ HBRUSH res;
|
|
+
|
|
TRACE("physDev:%p, hbrush:%p\n", physDev, hbrush);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSelectBrush(physDev->X11PhysDev, hbrush);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectBrush(physDev->X11PhysDev, hbrush);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSelectBrush(physDev->X11PhysDev, hbrush);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -64,10 +100,22 @@ HBRUSH DIBDRV_SelectBrush( DIBDRVPHYSDEV *physDev, HBRUSH hbrush )
|
|
*/
|
|
COLORREF DIBDRV_SetDCBrushColor( DIBDRVPHYSDEV *physDev, COLORREF crColor )
|
|
{
|
|
+ COLORREF res;
|
|
+
|
|
TRACE("physDev:%p, crColor:%x\n", physDev, crColor);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetDCBrushColor(physDev->X11PhysDev, crColor);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDCBrushColor(physDev->X11PhysDev, crColor);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDCBrushColor(physDev->X11PhysDev, crColor);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -79,7 +127,6 @@ INT DIBDRV_SetROP2( DIBDRVPHYSDEV *physDev, INT rop )
|
|
|
|
TRACE("physDev:%p, rop:%x\n", physDev, rop);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
prevRop = physDev->rop2;
|
|
physDev->rop2 = rop;
|
|
return prevRop;
|
|
@@ -91,8 +138,20 @@ INT DIBDRV_SetROP2( DIBDRVPHYSDEV *physDev, INT rop )
|
|
*/
|
|
COLORREF DIBDRV_SetBkColor( DIBDRVPHYSDEV *physDev, COLORREF color )
|
|
{
|
|
+ COLORREF res;
|
|
+
|
|
TRACE("physDev:%p, color:%x\n", physDev, color);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetBkColor(physDev->X11PhysDev, color);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetBkColor(physDev->X11PhysDev, color);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetBkColor(physDev->X11PhysDev, color);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/text.c b/dlls/winedib.drv/text.c
|
|
index fdb075f..0176011 100644
|
|
--- a/dlls/winedib.drv/text.c
|
|
+++ b/dlls/winedib.drv/text.c
|
|
@@ -28,17 +28,29 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
/***********************************************************************
|
|
* DIBDRV_ExtTextOut
|
|
*/
|
|
-BOOL
|
|
-DIBDRV_ExtTextOut( DIBDRVPHYSDEV *physDev, INT x, INT y, UINT flags,
|
|
- const RECT *lprect, LPCWSTR wstr, UINT count,
|
|
- const INT *lpDx )
|
|
+BOOL DIBDRV_ExtTextOut( DIBDRVPHYSDEV *physDev, INT x, INT y, UINT flags,
|
|
+ const RECT *lprect, LPCWSTR wstr, UINT count,
|
|
+ const INT *lpDx )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, x:%d, y:%d, flags:%x, lprect:%p, wstr:%s, count:%d, lpDx:%p\n",
|
|
physDev, x, y, flags, lprect, debugstr_w(wstr), count, lpDx);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pExtTextOut(physDev->X11PhysDev, x, y, flags, lprect,
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pExtTextOut(physDev->X11PhysDev, x, y, flags, lprect,
|
|
wstr, count, lpDx);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pExtTextOut(physDev->X11PhysDev, x, y, flags, lprect,
|
|
+ wstr, count, lpDx);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -47,9 +59,23 @@ DIBDRV_ExtTextOut( DIBDRVPHYSDEV *physDev, INT x, INT y, UINT flags,
|
|
BOOL DIBDRV_GetTextExtentExPoint( DIBDRVPHYSDEV *physDev, LPCWSTR str, INT count,
|
|
INT maxExt, LPINT lpnFit, LPINT alpDx, LPSIZE size )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, str:%s, count:%d, maxExt:%d, lpnFit:%p, alpDx:%p, size:%p\n",
|
|
physDev, debugstr_w(str), count, maxExt, lpnFit, alpDx, size);
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetTextExtentExPoint(physDev->X11PhysDev, str, count, maxExt,
|
|
- lpnFit, alpDx, size);
|
|
+
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetTextExtentExPoint(physDev->X11PhysDev, str, count, maxExt,
|
|
+ lpnFit, alpDx, size);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetTextExtentExPoint(physDev->X11PhysDev, str, count, maxExt,
|
|
+ lpnFit, alpDx, size);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
diff --git a/dlls/winedib.drv/video.c b/dlls/winedib.drv/video.c
|
|
index 6490ac6..730e62a 100644
|
|
--- a/dlls/winedib.drv/video.c
|
|
+++ b/dlls/winedib.drv/video.c
|
|
@@ -30,10 +30,22 @@ WINE_DEFAULT_DEBUG_CHANNEL(dibdrv);
|
|
*/
|
|
BOOL DIBDRV_GetDeviceGammaRamp( DIBDRVPHYSDEV *physDev, LPVOID ramp )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, ramp:%p\n", physDev, ramp);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pGetDeviceGammaRamp(physDev->X11PhysDev, ramp);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetDeviceGammaRamp(physDev->X11PhysDev, ramp);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pGetDeviceGammaRamp(physDev->X11PhysDev, ramp);
|
|
+ }
|
|
+ return res;
|
|
}
|
|
|
|
/***********************************************************************
|
|
@@ -41,8 +53,20 @@ BOOL DIBDRV_GetDeviceGammaRamp( DIBDRVPHYSDEV *physDev, LPVOID ramp )
|
|
*/
|
|
BOOL DIBDRV_SetDeviceGammaRamp( DIBDRVPHYSDEV *physDev, LPVOID ramp )
|
|
{
|
|
+ BOOL res;
|
|
+
|
|
TRACE("physDev:%p, ramp:%p\n", physDev, ramp);
|
|
|
|
- ONCE(FIXME("stub\n"));
|
|
- return _DIBDRV_GetDisplayDriver()->pSetDeviceGammaRamp(physDev->X11PhysDev, ramp);
|
|
+ if(physDev->hasDIB)
|
|
+ {
|
|
+ /* DIB section selected in, use DIB Engine */
|
|
+ ONCE(FIXME("TEMPORARY - fallback to X11 driver\n"));
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDeviceGammaRamp(physDev->X11PhysDev, ramp);
|
|
+ }
|
|
+ else
|
|
+ {
|
|
+ /* DDB selected in, use X11 driver */
|
|
+ res = _DIBDRV_GetDisplayDriver()->pSetDeviceGammaRamp(physDev->X11PhysDev, ramp);
|
|
+ }
|
|
+ return res;
|
|
}
|