Commit f0f8da58 authored by Huw D M Davies's avatar Huw D M Davies Committed by Alexandre Julliard

Fixes several bugs in gdi path handling.

Adds *Path functions to dc funcs table + add EnhMetaFile recording. Separate out Polylne/PolylineTo and PolyBezier/PolyBezierTo in dc funcs table to enable proper enhmetafile recording. The current position update in *To functions is now handled by the main function and not in the drivers. Move USER functions from graphics/painting.c -> windows/painting.c
parent ffdd1717
......@@ -5,6 +5,9 @@
*
*/
#include "enhmetafiledrv.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(enhmetafile)
INT EMFDRV_SaveDC( DC *dc )
{
......@@ -121,3 +124,116 @@ DWORD EMFDRV_SetMapperFlags( DC *dc, DWORD flags )
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_AbortPath( DC *dc )
{
EMRABORTPATH emr;
emr.emr.iType = EMR_ABORTPATH;
emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_BeginPath( DC *dc )
{
EMRBEGINPATH emr;
emr.emr.iType = EMR_BEGINPATH;
emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_CloseFigure( DC *dc )
{
EMRCLOSEFIGURE emr;
emr.emr.iType = EMR_CLOSEFIGURE;
emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_EndPath( DC *dc )
{
EMRENDPATH emr;
emr.emr.iType = EMR_ENDPATH;
emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_FillPath( DC *dc )
{
EMRFILLPATH emr;
emr.emr.iType = EMR_FILLPATH;
emr.emr.nSize = sizeof(emr);
FIXME("Bounds\n");
emr.rclBounds.left = 0;
emr.rclBounds.top = 0;
emr.rclBounds.right = 0;
emr.rclBounds.bottom = 0;
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_FlattenPath( DC *dc )
{
EMRFLATTENPATH emr;
emr.emr.iType = EMR_FLATTENPATH;
emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_SelectClipPath( DC *dc, INT iMode )
{
EMRSELECTCLIPPATH emr;
emr.emr.iType = EMR_SELECTCLIPPATH;
emr.emr.nSize = sizeof(emr);
emr.iMode = iMode;
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_StrokeAndFillPath( DC *dc )
{
EMRSTROKEANDFILLPATH emr;
emr.emr.iType = EMR_STROKEANDFILLPATH;
emr.emr.nSize = sizeof(emr);
FIXME("Bounds\n");
emr.rclBounds.left = 0;
emr.rclBounds.top = 0;
emr.rclBounds.right = 0;
emr.rclBounds.bottom = 0;
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_StrokePath( DC *dc )
{
EMRSTROKEPATH emr;
emr.emr.iType = EMR_STROKEPATH;
emr.emr.nSize = sizeof(emr);
FIXME("Bounds\n");
emr.rclBounds.left = 0;
emr.rclBounds.top = 0;
emr.rclBounds.right = 0;
emr.rclBounds.bottom = 0;
return EMFDRV_WriteRecord( dc, &emr.emr );
}
BOOL EMFDRV_WidenPath( DC *dc )
{
EMRWIDENPATH emr;
emr.emr.iType = EMR_WIDENPATH;
emr.emr.nSize = sizeof(emr);
return EMFDRV_WriteRecord( dc, &emr.emr );
}
......@@ -28,16 +28,7 @@ EMFDRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt)
emr.ptl.x = x;
emr.ptl.y = y;
if(!EMFDRV_WriteRecord( dc, &emr.emr ))
return FALSE;
if (pt) {
pt->x = dc->w.CursPosX;
pt->y = dc->w.CursPosY;
}
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
return EMFDRV_WriteRecord( dc, &emr.emr );
}
/***********************************************************************
......@@ -64,8 +55,6 @@ EMFDRV_LineTo( DC *dc, INT x, INT y )
EMFDRV_UpdateBBox( dc, &bounds );
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
}
......
......@@ -21,10 +21,15 @@ DEFAULT_DEBUG_CHANNEL(enhmetafile)
static const DC_FUNCTIONS EMFDRV_Funcs =
{
NULL, /* pAbortDoc */
EMFDRV_AbortPath, /* pAbortPath */
NULL, /* pAngleArc */
EMFDRV_Arc, /* pArc */
NULL, /* pArcTo */
EMFDRV_BeginPath, /* pBeginPath */
NULL, /* pBitBlt */
NULL, /* pBitmapBits */
EMFDRV_Chord, /* pChord */
EMFDRV_CloseFigure, /* pCloseFigure */
NULL, /* pCreateBitmap */
NULL, /* no implementation */ /* pCreateDC */
NULL, /* pCreateDIBSection */
......@@ -35,13 +40,16 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
EMFDRV_Ellipse, /* pEllipse */
NULL, /* pEndDoc */
NULL, /* pEndPage */
EMFDRV_EndPath, /* pEndPath */
NULL, /* pEnumDeviceFonts */
NULL, /* pEscape */
EMFDRV_ExcludeClipRect, /* pExcludeClipRect */
NULL, /* pExtDeviceMode */
EMFDRV_ExtFloodFill, /* pExtFloodFill */
NULL, /* pExtTextOut */
EMFDRV_FillPath, /* pFillPath */
EMFDRV_FillRgn, /* pFillRgn */
EMFDRV_FlattenPath, /* pFlattenPath */
EMFDRV_FrameRgn, /* pFrameRgn */
NULL, /* pGetCharWidth */
NULL, /* no implementation */ /* pGetPixel */
......@@ -58,11 +66,14 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
EMFDRV_PaintRgn, /* pPaintRgn */
NULL, /* pPatBlt */
EMFDRV_Pie, /* pPie */
NULL, /* pPolyBezier */
NULL, /* pPolyBezierTo */
NULL, /* pPolyDraw */
EMFDRV_PolyPolygon, /* pPolyPolygon */
EMFDRV_PolyPolyline, /* pPolyPolyline */
EMFDRV_Polygon, /* pPolygon */
EMFDRV_Polyline, /* pPolyline */
NULL, /* pPolyBezier */
NULL, /* pPolylineTo */
NULL, /* pRealizePalette */
EMFDRV_Rectangle, /* pRectangle */
EMFDRV_RestoreDC, /* pRestoreDC */
......@@ -70,6 +81,7 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
EMFDRV_SaveDC, /* pSaveDC */
EMFDRV_ScaleViewportExt, /* pScaleViewportExt */
EMFDRV_ScaleWindowExt, /* pScaleWindowExt */
EMFDRV_SelectClipPath, /* pSelectClipPath */
NULL, /* pSelectClipRgn */
EMFDRV_SelectObject, /* pSelectObject */
NULL, /* pSelectPalette */
......@@ -95,7 +107,10 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
NULL, /* pStartDoc */
NULL, /* pStartPage */
NULL, /* pStretchBlt */
NULL /* pStretchDIBits */
NULL, /* pStretchDIBits */
EMFDRV_StrokeAndFillPath, /* pStrokeAndFillPath */
EMFDRV_StrokePath, /* pStrokePath */
EMFDRV_WidenPath /* pWiddenPath */
};
......
......@@ -81,3 +81,52 @@ DWORD MFDRV_SetMapperFlags( DC *dc, DWORD flags )
LOWORD(flags) );
}
BOOL MFDRV_AbortPath( DC *dc )
{
return FALSE;
}
BOOL MFDRV_BeginPath( DC *dc )
{
return FALSE;
}
BOOL MFDRV_CloseFigure( DC *dc )
{
return FALSE;
}
BOOL MFDRV_EndPath( DC *dc )
{
return FALSE;
}
BOOL MFDRV_FillPath( DC *dc )
{
return FALSE;
}
BOOL MFDRV_FlattenPath( DC *dc )
{
return FALSE;
}
BOOL MFDRV_SelectClipPath( DC *dc, INT iMode )
{
return FALSE;
}
BOOL MFDRV_StrokeAndFillPath( DC *dc )
{
return FALSE;
}
BOOL MFDRV_StrokePath( DC *dc )
{
return FALSE;
}
BOOL MFDRV_WidenPath( DC *dc )
{
return FALSE;
}
......@@ -10,7 +10,6 @@
#include "gdi.h"
#include "dc.h"
#include "region.h"
#include "xmalloc.h"
#include "metafiledrv.h"
#include "heap.h"
#include "debugtools.h"
......@@ -23,17 +22,7 @@ DEFAULT_DEBUG_CHANNEL(metafile)
BOOL
MFDRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt)
{
if (!MFDRV_MetaParam2(dc,META_MOVETO,x,y))
return FALSE;
if (pt)
{
pt->x = dc->w.CursPosX;
pt->y = dc->w.CursPosY;
}
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
return MFDRV_MetaParam2(dc,META_MOVETO,x,y);
}
/***********************************************************************
......@@ -154,11 +143,12 @@ MFDRV_Polyline( DC *dc, const POINT* pt, INT count )
LPPOINT16 pt16;
BOOL16 ret;
pt16 = (LPPOINT16)xmalloc(sizeof(POINT16)*count);
pt16 = (LPPOINT16)HeapAlloc( GetProcessHeap(), 0, sizeof(POINT16)*count );
if(!pt16) return FALSE;
for (i=count;i--;) CONV_POINT32TO16(&(pt[i]),&(pt16[i]));
ret = MFDRV_MetaPoly(dc, META_POLYLINE, pt16, count);
free(pt16);
HeapFree( GetProcessHeap(), 0, pt16 );
return ret;
}
......@@ -173,11 +163,12 @@ MFDRV_Polygon( DC *dc, const POINT* pt, INT count )
LPPOINT16 pt16;
BOOL16 ret;
pt16 = (LPPOINT16)xmalloc(sizeof(POINT16)*count);
pt16 = (LPPOINT16) HeapAlloc( GetProcessHeap(), 0, sizeof(POINT16)*count );
if(!pt16) return FALSE;
for (i=count;i--;) CONV_POINT32TO16(&(pt[i]),&(pt16[i]));
ret = MFDRV_MetaPoly(dc, META_POLYGON, pt16, count);
free(pt16);
HeapFree( GetProcessHeap(), 0, pt16 );
return ret;
}
......@@ -194,10 +185,12 @@ MFDRV_PolyPolygon( DC *dc, const POINT* pt, const INT* counts, UINT polygons)
BOOL ret;
for (i=0;i<polygons;i++) {
pt16=(LPPOINT16)xmalloc(sizeof(POINT16)*counts[i]);
pt16=(LPPOINT16)HeapAlloc( GetProcessHeap(), 0,
sizeof(POINT16) * counts[i] );
if(!pt16) return FALSE;
for (j=counts[i];j--;) CONV_POINT32TO16(&(curpt[j]),&(pt16[j]));
ret = MFDRV_MetaPoly(dc, META_POLYGON, pt16, counts[i]);
free(pt16);
HeapFree( GetProcessHeap(), 0, pt16 );
if (!ret)
return FALSE;
curpt+=counts[i];
......
......@@ -20,10 +20,15 @@ DEFAULT_DEBUG_CHANNEL(metafile)
static const DC_FUNCTIONS MFDRV_Funcs =
{
NULL, /* pAbortDoc */
MFDRV_AbortPath, /* pAbortPath */
NULL, /* pAngleArc */
MFDRV_Arc, /* pArc */
NULL, /* pArcTo */
MFDRV_BeginPath, /* pBeginPath */
MFDRV_BitBlt, /* pBitBlt */
NULL, /* pBitmapBits */
MFDRV_Chord, /* pChord */
MFDRV_CloseFigure, /* pCloseFigure */
NULL, /* pCreateBitmap */
NULL, /* no implementation */ /* pCreateDC */
NULL, /* pCreateDIBSection */
......@@ -34,13 +39,16 @@ static const DC_FUNCTIONS MFDRV_Funcs =
MFDRV_Ellipse, /* pEllipse */
NULL, /* pEndDoc */
NULL, /* pEndPage */
MFDRV_EndPath, /* pEndPath */
NULL, /* pEnumDeviceFonts */
NULL, /* pEscape */
MFDRV_ExcludeClipRect, /* pExcludeClipRect */
NULL, /* pExtDeviceMode */
MFDRV_ExtFloodFill, /* pExtFloodFill */
MFDRV_ExtTextOut, /* pExtTextOut */
MFDRV_FillPath, /* pFillPath */
MFDRV_FillRgn, /* pFillRgn */
MFDRV_FlattenPath, /* pFlattenPath */
MFDRV_FrameRgn, /* pFrameRgn */
NULL, /* pGetCharWidth */
NULL, /* no implementation */ /* pGetPixel */
......@@ -57,11 +65,14 @@ static const DC_FUNCTIONS MFDRV_Funcs =
MFDRV_PaintRgn, /* pPaintRgn */
MFDRV_PatBlt, /* pPatBlt */
MFDRV_Pie, /* pPie */
NULL, /* pPolyBezier */
NULL, /* pPolyBezierTo */
NULL, /* pPolyDraw */
MFDRV_PolyPolygon, /* pPolyPolygon */
NULL, /* pPolyPolyline */
MFDRV_Polygon, /* pPolygon */
MFDRV_Polyline, /* pPolyline */
NULL, /* pPolyBezier */
NULL, /* pPolylineTo */
NULL, /* pRealizePalette */
MFDRV_Rectangle, /* pRectangle */
MFDRV_RestoreDC, /* pRestoreDC */
......@@ -69,6 +80,7 @@ static const DC_FUNCTIONS MFDRV_Funcs =
MFDRV_SaveDC, /* pSaveDC */
MFDRV_ScaleViewportExt, /* pScaleViewportExt */
MFDRV_ScaleWindowExt, /* pScaleWindowExt */
MFDRV_SelectClipPath, /* pSelectClipPath */
NULL, /* pSelectClipRgn */
MFDRV_SelectObject, /* pSelectObject */
NULL, /* pSelectPalette */
......@@ -94,7 +106,10 @@ static const DC_FUNCTIONS MFDRV_Funcs =
NULL, /* pStartDoc */
NULL, /* pStartPage */
MFDRV_StretchBlt, /* pStretchBlt */
MFDRV_StretchDIBits /* pStretchDIBits */
MFDRV_StretchDIBits, /* pStretchDIBits */
MFDRV_StrokeAndFillPath, /* pStrokeAndFillPath */
MFDRV_StrokePath, /* pStrokePath */
MFDRV_WidenPath /* pWidenPath */
};
......
......@@ -19,23 +19,6 @@
DEFAULT_DEBUG_CHANNEL(psdrv)
/**********************************************************************
* PSDRV_MoveToEx
*/
BOOL PSDRV_MoveToEx(DC *dc, INT x, INT y, LPPOINT pt)
{
TRACE("%d %d\n", x, y);
if (pt)
{
pt->x = dc->w.CursPosX;
pt->y = dc->w.CursPosY;
}
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
}
/***********************************************************************
* PSDRV_LineTo
......@@ -50,8 +33,6 @@ BOOL PSDRV_LineTo(DC *dc, INT x, INT y)
PSDRV_WriteLineTo(dc, XLPTODP(dc, x), YLPTODP(dc, y));
PSDRV_DrawLine(dc);
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
}
......
......@@ -24,10 +24,15 @@ static BOOL PSDRV_DeleteDC( DC *dc );
static const DC_FUNCTIONS PSDRV_Funcs =
{
NULL, /* pAbortDoc */
NULL, /* pAbortPath */
NULL, /* pAngleArc */
PSDRV_Arc, /* pArc */
NULL, /* pArcTo */
NULL, /* pBeginPath */
NULL, /* pBitBlt */
NULL, /* pBitmapBits */
PSDRV_Chord, /* pChord */
NULL, /* pCloseFigure */
NULL, /* pCreateBitmap */
PSDRV_CreateDC, /* pCreateDC */
NULL, /* pCreateDIBSection */
......@@ -38,13 +43,16 @@ static const DC_FUNCTIONS PSDRV_Funcs =
PSDRV_Ellipse, /* pEllipse */
PSDRV_EndDoc, /* pEndDoc */
PSDRV_EndPage, /* pEndPage */
NULL, /* pEndPath */
PSDRV_EnumDeviceFonts, /* pEnumDeviceFonts */
PSDRV_Escape, /* pEscape */
NULL, /* pExcludeClipRect */
PSDRV_ExtDeviceMode, /* pExtDeviceMode */
NULL, /* pExtFloodFill */
PSDRV_ExtTextOut, /* pExtTextOut */
NULL, /* pFillPath */
NULL, /* pFillRgn */
NULL, /* pFlattenPath */
NULL, /* pFrameRgn */
PSDRV_GetCharWidth, /* pGetCharWidth */
NULL, /* pGetPixel */
......@@ -54,18 +62,21 @@ static const DC_FUNCTIONS PSDRV_Funcs =
NULL, /* pInvertRgn */
PSDRV_LineTo, /* pLineTo */
NULL, /* pLoadOEMResource */
PSDRV_MoveToEx, /* pMoveToEx */
NULL, /* pMoveToEx */
NULL, /* pOffsetClipRgn */
NULL, /* pOffsetViewportOrg (optional) */
NULL, /* pOffsetWindowOrg (optional) */
NULL, /* pPaintRgn */
PSDRV_PatBlt, /* pPatBlt */
PSDRV_Pie, /* pPie */
NULL, /* pPolyBezier */
NULL, /* pPolyBezierTo */
NULL, /* pPolyDraw */
PSDRV_PolyPolygon, /* pPolyPolygon */
PSDRV_PolyPolyline, /* pPolyPolyline */
PSDRV_Polygon, /* pPolygon */
PSDRV_Polyline, /* pPolyline */
NULL, /* pPolyBezier */
NULL, /* pPolylineTo */
NULL, /* pRealizePalette */
PSDRV_Rectangle, /* pRectangle */
NULL, /* pRestoreDC */
......@@ -73,6 +84,7 @@ static const DC_FUNCTIONS PSDRV_Funcs =
NULL, /* pSaveDC */
NULL, /* pScaleViewportExt (optional) */
NULL, /* pScaleWindowExt (optional) */
NULL, /* pSelectClipPath */
NULL, /* pSelectClipRgn */
PSDRV_SelectObject, /* pSelectObject */
NULL, /* pSelectPalette */
......@@ -98,7 +110,10 @@ static const DC_FUNCTIONS PSDRV_Funcs =
PSDRV_StartDoc, /* pStartDoc */
PSDRV_StartPage, /* pStartPage */
NULL, /* pStretchBlt */
PSDRV_StretchDIBits /* pStretchDIBits */
PSDRV_StretchDIBits, /* pStretchDIBits */
NULL, /* pStrokeAndFillPath */
NULL, /* pStrokePath */
NULL /* pWidenPath */
};
......
......@@ -106,9 +106,6 @@ BOOL TTYDRV_DC_LineTo(DC *dc, INT x, INT y)
}
wrefresh(physDev->window);
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
#else /* defined(HAVE_LIBCURSES) */
FIXME("(%p, %d, %d): stub\n", dc, x, y);
......@@ -118,24 +115,6 @@ BOOL TTYDRV_DC_LineTo(DC *dc, INT x, INT y)
}
/***********************************************************************
* TTYDRV_DC_MoveToEx
*/
BOOL TTYDRV_DC_MoveToEx(DC *dc, INT x, INT y, LPPOINT pt)
{
TRACE("(%p, %d, %d, %p)\n", dc, x, y, pt);
if(pt) {
pt->x = dc->w.CursPosX;
pt->y = dc->w.CursPosY;
}
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
}
/***********************************************************************
* TTYDRV_DC_PaintRgn
*/
BOOL TTYDRV_DC_PaintRgn(DC *dc, HRGN hrgn)
......@@ -160,11 +139,9 @@ BOOL TTYDRV_DC_Pie(DC *dc, INT left, INT top, INT right, INT bottom,
/***********************************************************************
* TTYDRV_DC_PolyBezier
*/
BOOL TTYDRV_DC_PolyBezier(DC *dc, POINT start,
const POINT* BezierPoints, DWORD count)
BOOL TTYDRV_DC_PolyBezier(DC *dc, const POINT* BezierPoints, DWORD count)
{
FIXME("(%p, {%ld, %ld}, %p, %lu): stub\n",
dc, start.x, start.y, BezierPoints, count);
FIXME("(%p, %p, %lu): stub\n", dc, BezierPoints, count);
return TRUE;
}
......
......@@ -21,10 +21,15 @@ DEFAULT_DEBUG_CHANNEL(ttydrv)
static const DC_FUNCTIONS TTYDRV_DC_Driver =
{
NULL, /* pAbortDoc */
NULL, /* pAbortPath */
NULL, /* pAngleArc */
TTYDRV_DC_Arc, /* pArc */
NULL, /* pArcTo */
NULL, /* pBeginPath */
TTYDRV_DC_BitBlt, /* pBitBlt */
NULL, /* pBitmapBits */
TTYDRV_DC_Chord, /* pChord */
NULL, /* pCloseFigure */
TTYDRV_DC_CreateBitmap, /* pCreateBitmap */
TTYDRV_DC_CreateDC, /* pCreateDC */
NULL, /* pCreateDIBSection */
......@@ -35,13 +40,16 @@ static const DC_FUNCTIONS TTYDRV_DC_Driver =
TTYDRV_DC_Ellipse, /* pEllipse */
NULL, /* pEndDoc */
NULL, /* pEndPage */
NULL, /* pEndPath */
NULL, /* pEnumDeviceFonts */
TTYDRV_DC_Escape, /* pEscape */
NULL, /* pExcludeClipRect */
NULL, /* pExtDeviceMode */
TTYDRV_DC_ExtFloodFill, /* pExtFloodFill */
TTYDRV_DC_ExtTextOut, /* pExtTextOut */
NULL, /* pFillPath */
NULL, /* pFillRgn */
NULL, /* pFlattenPath */
NULL, /* pFrameRgn */
TTYDRV_DC_GetCharWidth, /* pGetCharWidth */
TTYDRV_DC_GetPixel, /* pGetPixel */
......@@ -51,18 +59,21 @@ static const DC_FUNCTIONS TTYDRV_DC_Driver =
NULL, /* pIntersectVisRect */
TTYDRV_DC_LineTo, /* pLineTo */
TTYDRV_DC_LoadOEMResource, /* pLoadOEMResource */
TTYDRV_DC_MoveToEx, /* pMoveToEx */
NULL, /* pMoveToEx */
NULL, /* pOffsetClipRgn */
NULL, /* pOffsetViewportOrg (optional) */
NULL, /* pOffsetWindowOrg (optional) */
TTYDRV_DC_PaintRgn, /* pPaintRgn */
TTYDRV_DC_PatBlt, /* pPatBlt */
TTYDRV_DC_Pie, /* pPie */
TTYDRV_DC_PolyBezier, /* pPolyBezier */
NULL, /* pPolyBezierTo */
NULL, /* pPolyDraw */
TTYDRV_DC_PolyPolygon, /* pPolyPolygon */
TTYDRV_DC_PolyPolyline, /* pPolyPolyline */
TTYDRV_DC_Polygon, /* pPolygon */
TTYDRV_DC_Polyline, /* pPolyline */
TTYDRV_DC_PolyBezier, /* pPolyBezier */
NULL, /* pPolylineTo */
NULL, /* pRealizePalette */
TTYDRV_DC_Rectangle, /* pRectangle */
NULL, /* pRestoreDC */
......@@ -70,6 +81,7 @@ static const DC_FUNCTIONS TTYDRV_DC_Driver =
NULL, /* pSaveDC */
NULL, /* pScaleViewportExt (optional) */
NULL, /* pScaleWindowExt (optional) */
NULL, /* pSelectClipPath */
NULL, /* pSelectClipRgn */
TTYDRV_DC_SelectObject, /* pSelectObject */
NULL, /* pSelectPalette */
......@@ -95,7 +107,10 @@ static const DC_FUNCTIONS TTYDRV_DC_Driver =
NULL, /* pStartDoc */
NULL, /* pStartPage */
TTYDRV_DC_StretchBlt, /* pStretchBlt */
NULL /* pStretchDIBits */
NULL, /* pStretchDIBits */
NULL, /* pStrokeAndFillPath */
NULL, /* pStrokePath */
NULL /* pWidenPath */
};
......
......@@ -45,10 +45,15 @@ static INT WIN16DRV_Escape( DC *dc, INT nEscape, INT cbInput,
static const DC_FUNCTIONS WIN16DRV_Funcs =
{
NULL, /* pAbortDoc */
NULL, /* pAbortPath */
NULL, /* pAngleArc */
NULL, /* pArc */
NULL, /* pArcTo */
NULL, /* pBeginPath */
NULL, /* pBitBlt */
NULL, /* pBitmapBits */
NULL, /* pChord */
NULL, /* pCloseFigure */
NULL, /* pCreateBitmap */
WIN16DRV_CreateDC, /* pCreateDC */
NULL, /* pCreateDIBSection */
......@@ -59,13 +64,16 @@ static const DC_FUNCTIONS WIN16DRV_Funcs =
WIN16DRV_Ellipse, /* pEllipse */
NULL, /* pEndDoc */
NULL, /* pEndPage */
NULL, /* pEndPath */
WIN16DRV_EnumDeviceFonts, /* pEnumDeviceFonts */
WIN16DRV_Escape, /* pEscape */
NULL, /* pExcludeClipRect */
WIN16DRV_ExtDeviceMode, /* pExtDeviceMode */
NULL, /* pExtFloodFill */
WIN16DRV_ExtTextOut, /* pExtTextOut */
NULL, /* pFillPath */
NULL, /* pFillRgn */
NULL, /* pFlattenPath */
NULL, /* pFrameRgn */
WIN16DRV_GetCharWidth, /* pGetCharWidth */
NULL, /* pGetPixel */
......@@ -82,11 +90,14 @@ static const DC_FUNCTIONS WIN16DRV_Funcs =
NULL, /* pPaintRgn */
WIN16DRV_PatBlt, /* pPatBlt */
NULL, /* pPie */
NULL, /* pPolyBezier */
NULL, /* pPolyBezierTo */
NULL, /* pPolyDraw */
NULL, /* pPolyPolygon */
NULL, /* pPolyPolyline */
WIN16DRV_Polygon, /* pPolygon */
WIN16DRV_Polyline, /* pPolyline */
NULL, /* pPolyBezier */
NULL, /* pPolylineTo */
NULL, /* pRealizePalette */
WIN16DRV_Rectangle, /* pRectangle */
NULL, /* pRestoreDC */
......@@ -94,6 +105,7 @@ static const DC_FUNCTIONS WIN16DRV_Funcs =
NULL, /* pSaveDC */
NULL, /* pScaleViewportExtEx */
NULL, /* pScaleWindowExtEx */
NULL, /* pSelectClipPath */
NULL, /* pSelectClipRgn */
WIN16DRV_SelectObject, /* pSelectObject */
NULL, /* pSelectPalette */
......@@ -119,7 +131,10 @@ static const DC_FUNCTIONS WIN16DRV_Funcs =
NULL, /* pStartDoc */
NULL, /* pStartPage */
NULL, /* pStretchBlt */
NULL /* pStretchDIBits */
NULL, /* pStretchDIBits */
NULL, /* pStrokeAndFillPath */
NULL, /* pStrokePath */
NULL /* pWidenPath */
};
......
......@@ -298,22 +298,6 @@ BOOL X11DRV_SetupGCForText( DC * dc )
return FALSE;
}
/**********************************************************************
* X11DRV_MoveToEx
*/
BOOL
X11DRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt) {
if (pt)
{
pt->x = dc->w.CursPosX;
pt->y = dc->w.CursPosY;
}
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
}
/***********************************************************************
* X11DRV_LineTo
*/
......@@ -328,8 +312,6 @@ X11DRV_LineTo( DC *dc, INT x, INT y )
dc->w.DCOrgY + YLPTODP( dc, dc->w.CursPosY ),
dc->w.DCOrgX + XLPTODP( dc, x ),
dc->w.DCOrgY + YLPTODP( dc, y ) );
dc->w.CursPosX = x;
dc->w.CursPosY = y;
return TRUE;
}
......@@ -1364,8 +1346,11 @@ static void X11DRV_Bezier(int level, DC * dc, POINT *Points,
}
}
/***********************************************************************
* X11DRV_PolyBezier
* X11DRV_InternalPolyBezier
* Implement functionality for PolyBezier and PolyBezierTo
* calls.
* [i] dc pointer to device context
......@@ -1374,8 +1359,9 @@ static void X11DRV_Bezier(int level, DC * dc, POINT *Points,
* [i] count, number of points in BezierPoints, must be a
* multiple of 3.
*/
BOOL
X11DRV_PolyBezier(DC *dc, POINT start, const POINT* BezierPoints, DWORD count)
static BOOL
X11DRV_InternalPolyBezier(DC *dc, POINT start, const POINT* BezierPoints,
DWORD count)
{
POINT Points[4];
int i;
......@@ -1415,6 +1401,28 @@ X11DRV_PolyBezier(DC *dc, POINT start, const POINT* BezierPoints, DWORD count)
}
/**********************************************************************
* X11DRV_PolyBezier
*/
BOOL
X11DRV_PolyBezier(DC *dc, const POINT *Points, DWORD count)
{
return X11DRV_InternalPolyBezier(dc, Points[0], Points+1, count-1);
}
/**********************************************************************
* X11DRV_PolyBezierTo
*/
BOOL
X11DRV_PolyBezierTo(DC *dc, const POINT *Points, DWORD count)
{
POINT pt;
pt.x = dc->w.CursPosX;
pt.y = dc->w.CursPosY;
return X11DRV_InternalPolyBezier(dc, pt, Points, count);
}
/**********************************************************************
* X11DRV_SetBkColor
*/
COLORREF
......
......@@ -33,10 +33,15 @@ static INT X11DRV_Escape( DC *dc, INT nEscape, INT cbInput,
static const DC_FUNCTIONS X11DRV_Funcs =
{
NULL, /* pAbortDoc */
NULL, /* pAbortPath */
NULL, /* pAngleArc */
X11DRV_Arc, /* pArc */
NULL, /* pArcTo */
NULL, /* pBeginPath */
X11DRV_BitBlt, /* pBitBlt */
X11DRV_BitmapBits, /* pBitmapBits */
X11DRV_Chord, /* pChord */
NULL, /* pCloseFigure */
X11DRV_CreateBitmap, /* pCreateBitmap */
X11DRV_CreateDC, /* pCreateDC */
X11DRV_DIB_CreateDIBSection, /* pCreateDIBSection */
......@@ -47,13 +52,16 @@ static const DC_FUNCTIONS X11DRV_Funcs =
X11DRV_Ellipse, /* pEllipse */
NULL, /* pEndDoc */
NULL, /* pEndPage */
NULL, /* pEndPath */
X11DRV_EnumDeviceFonts, /* pEnumDeviceFonts */
X11DRV_Escape, /* pEscape */
NULL, /* pExcludeClipRect */
NULL, /* pExtDeviceMode */
X11DRV_ExtFloodFill, /* pExtFloodFill */
X11DRV_ExtTextOut, /* pExtTextOut */
NULL, /* pFillPath */
NULL, /* pFillRgn */
NULL, /* pFlattenPath */
NULL, /* pFrameRgn */
X11DRV_GetCharWidth, /* pGetCharWidth */
X11DRV_GetPixel, /* pGetPixel */
......@@ -63,18 +71,21 @@ static const DC_FUNCTIONS X11DRV_Funcs =
NULL, /* pInvertRgn */
X11DRV_LineTo, /* pLineTo */
X11DRV_LoadOEMResource, /* pLoadOEMResource */
X11DRV_MoveToEx, /* pMoveToEx */
NULL, /* pMoveToEx */
NULL, /* pOffsetClipRgn */
NULL, /* pOffsetViewportOrg (optional) */
NULL, /* pOffsetWindowOrg (optional) */
X11DRV_PaintRgn, /* pPaintRgn */
X11DRV_PatBlt, /* pPatBlt */
X11DRV_Pie, /* pPie */
X11DRV_PolyBezier, /* pPolyBezier */
X11DRV_PolyBezierTo, /* pPolyBezierTo */
NULL, /* pPolyDraw */
X11DRV_PolyPolygon, /* pPolyPolygon */
X11DRV_PolyPolyline, /* pPolyPolyline */
X11DRV_Polygon, /* pPolygon */
X11DRV_Polyline, /* pPolyline */
X11DRV_PolyBezier, /* pPolyBezier */
NULL, /* pPolylineTo */
NULL, /* pRealizePalette */
X11DRV_Rectangle, /* pRectangle */
NULL, /* pRestoreDC */
......@@ -82,6 +93,7 @@ static const DC_FUNCTIONS X11DRV_Funcs =
NULL, /* pSaveDC */
NULL, /* pScaleViewportExt (optional) */
NULL, /* pScaleWindowExt (optional) */
NULL, /* pSelectClipPath */
NULL, /* pSelectClipRgn */
X11DRV_SelectObject, /* pSelectObject */
NULL, /* pSelectPalette */
......@@ -107,7 +119,10 @@ static const DC_FUNCTIONS X11DRV_Funcs =
NULL, /* pStartDoc */
NULL, /* pStartPage */
X11DRV_StretchBlt, /* pStretchBlt */
NULL /* pStretchDIBits */
NULL, /* pStretchDIBits */
NULL, /* pStrokeAndFillPath */
NULL, /* pStrokePath */
NULL /* pWidenPath */
};
GDI_DRIVER X11DRV_GDI_Driver =
......
......@@ -24,17 +24,21 @@ extern void EMFDRV_UpdateBBox( DC *dc, RECTL *rect );
extern DWORD EMFDRV_CreateBrushIndirect( DC *dc, HBRUSH hBrush );
/* Metafile driver functions */
extern BOOL EMFDRV_AbortPath( DC *dc );
extern BOOL EMFDRV_Arc( DC *dc, INT left, INT top, INT right,
INT bottom, INT xstart, INT ystart, INT xend,
INT yend );
extern BOOL EMFDRV_BeginPath( DC *dc );
extern BOOL EMFDRV_BitBlt( DC *dcDst, INT xDst, INT yDst,
INT width, INT height, DC *dcSrc,
INT xSrc, INT ySrc, DWORD rop );
extern BOOL EMFDRV_Chord( DC *dc, INT left, INT top, INT right,
INT bottom, INT xstart, INT ystart, INT xend,
INT yend );
extern BOOL EMFDRV_CloseFigure( DC *dc );
extern BOOL EMFDRV_Ellipse( DC *dc, INT left, INT top,
INT right, INT bottom );
extern BOOL EMFDRV_EndPath( DC *dc );
extern INT EMFDRV_ExcludeClipRect( DC *dc, INT left, INT top, INT right,
INT bottom );
extern BOOL EMFDRV_ExtFloodFill( DC *dc, INT x, INT y,
......@@ -42,7 +46,9 @@ extern BOOL EMFDRV_ExtFloodFill( DC *dc, INT x, INT y,
extern BOOL EMFDRV_ExtTextOut( DC *dc, INT x, INT y,
UINT flags, const RECT *lprect, LPCSTR str,
UINT count, const INT *lpDx );
extern BOOL EMFDRV_FillPath( DC *dc );
extern BOOL EMFDRV_FillRgn( DC *dc, HRGN hrgn, HBRUSH hbrush );
extern BOOL EMFDRV_FlattenPath( DC *dc );
extern BOOL EMFDRV_FrameRgn( DC *dc, HRGN hrgn, HBRUSH hbrush, INT width,
INT height );
extern INT EMFDRV_IntersectClipRect( DC *dc, INT left, INT top, INT right,
......@@ -76,6 +82,7 @@ extern BOOL EMFDRV_ScaleViewportExt( DC *dc, INT xNum,
INT xDenom, INT yNum, INT yDenom );
extern BOOL EMFDRV_ScaleWindowExt( DC *dc, INT xNum, INT xDenom,
INT yNum, INT yDenom );
extern BOOL EMFDRV_SelectClipPath( DC *dc, INT iMode );
extern HGDIOBJ EMFDRV_SelectObject( DC *dc, HGDIOBJ handle );
extern COLORREF EMFDRV_SetBkColor( DC *dc, COLORREF color );
extern INT EMFDRV_SetBkMode( DC *dc, INT mode );
......@@ -105,6 +112,9 @@ extern INT EMFDRV_StretchDIBits( DC *dc, INT xDst, INT yDst, INT widthDst,
INT widthSrc, INT heightSrc,
const void *bits, const BITMAPINFO *info,
UINT wUsage, DWORD dwRop );
extern BOOL EMFDRV_StrokeAndFillPath( DC *dc );
extern BOOL EMFDRV_StrokePath( DC *dc );
extern BOOL EMFDRV_WidenPath( DC *dc );
#endif /* __WINE_METAFILEDRV_H */
......
......@@ -170,10 +170,15 @@ typedef INT (*DEVICEFONTENUMPROC)(LPENUMLOGFONTEX16,LPNEWTEXTMETRIC16,UINT16,LPA
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);
LONG (*pBitmapBits)(HBITMAP,void*,LONG,WORD);
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,
......@@ -186,6 +191,7 @@ typedef struct tagDC_FUNCS
BOOL (*pEllipse)(DC*,INT,INT,INT,INT);
INT (*pEndDoc)(DC*);
INT (*pEndPage)(DC*);
BOOL (*pEndPath)(DC*);
BOOL (*pEnumDeviceFonts)(DC*,LPLOGFONT16,DEVICEFONTENUMPROC,LPARAM);
INT (*pEscape)(DC*,INT,INT,SEGPTR,SEGPTR);
INT (*pExcludeClipRect)(DC*,INT,INT,INT,INT);
......@@ -194,7 +200,9 @@ typedef struct tagDC_FUNCS
BOOL (*pExtFloodFill)(DC*,INT,INT,COLORREF,UINT);
BOOL (*pExtTextOut)(DC*,INT,INT,UINT,const RECT*,LPCSTR,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);
COLORREF (*pGetPixel)(DC*,INT,INT);
......@@ -211,11 +219,14 @@ typedef struct tagDC_FUNCS
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 (*pPolyBezier)(DC*,POINT, const POINT*,DWORD);
BOOL (*pPolylineTo)(DC*,const POINT*,INT);
UINT (*pRealizePalette)(DC*);
BOOL (*pRectangle)(DC*,INT,INT,INT,INT);
BOOL (*pRestoreDC)(DC*,INT);
......@@ -223,6 +234,7 @@ typedef struct tagDC_FUNCS
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);
......@@ -251,6 +263,9 @@ typedef struct tagDC_FUNCS
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 (*pWidenPath)(DC*);
} DC_FUNCTIONS;
/* LoadOEMResource types */
......
......@@ -35,16 +35,20 @@ extern INT16 MFDRV_CreateBrushIndirect( DC *dc, HBRUSH hBrush );
/* Metafile driver functions */
extern BOOL MFDRV_AbortPath( DC *dc );
extern BOOL MFDRV_Arc( DC *dc, INT left, INT top, INT right, INT bottom,
INT xstart, INT ystart, INT xend, INT yend );
extern BOOL MFDRV_BeginPath( DC *dc );
extern BOOL MFDRV_BitBlt( DC *dcDst, INT xDst, INT yDst, INT width,
INT height, DC *dcSrc, INT xSrc, INT ySrc,
DWORD rop );
extern BOOL MFDRV_Chord( DC *dc, INT left, INT top, INT right,
INT bottom, INT xstart, INT ystart, INT xend,
INT yend );
extern BOOL MFDRV_CloseFigure( DC *dc );
extern BOOL MFDRV_Ellipse( DC *dc, INT left, INT top,
INT right, INT bottom );
extern BOOL MFDRV_EndPath( DC *dc );
extern INT MFDRV_ExcludeClipRect( DC *dc, INT left, INT top, INT right, INT
bottom );
extern BOOL MFDRV_ExtFloodFill( DC *dc, INT x, INT y,
......@@ -52,7 +56,9 @@ extern BOOL MFDRV_ExtFloodFill( DC *dc, INT x, INT y,
extern BOOL MFDRV_ExtTextOut( DC *dc, INT x, INT y,
UINT flags, const RECT *lprect, LPCSTR str,
UINT count, const INT *lpDx );
extern BOOL MFDRV_FillPath( DC *dc );
extern BOOL MFDRV_FillRgn( DC *dc, HRGN hrgn, HBRUSH hbrush );
extern BOOL MFDRV_FlattenPath( DC *dc );
extern BOOL MFDRV_FrameRgn( DC *dc, HRGN hrgn, HBRUSH hbrush, INT x, INT y );
extern INT MFDRV_IntersectClipRect( DC *dc, INT left, INT top, INT right, INT
bottom );
......@@ -83,6 +89,7 @@ extern BOOL MFDRV_ScaleViewportExt( DC *dc, INT xNum, INT xDenom, INT yNum,
INT yDenom );
extern BOOL MFDRV_ScaleWindowExt( DC *dc, INT xNum, INT xDenom, INT yNum,
INT yDenom );
extern BOOL MFDRV_SelectClipPath( DC *dc, INT iMode );
extern HGDIOBJ MFDRV_SelectObject( DC *dc, HGDIOBJ handle );
extern COLORREF MFDRV_SetBkColor( DC *dc, COLORREF color );
extern INT MFDRV_SetBkMode( DC *dc, INT mode );
......@@ -114,5 +121,9 @@ extern INT MFDRV_StretchDIBits( DC *dc, INT xDst, INT yDst, INT widthDst,
INT widthSrc, INT heightSrc, const void *bits,
const BITMAPINFO *info, UINT wUsage,
DWORD dwRop );
extern BOOL MFDRV_StrokeAndFillPath( DC *dc );
extern BOOL MFDRV_StrokePath( DC *dc );
extern BOOL MFDRV_WidenPath( DC *dc );
#endif /* __WINE_METAFILEDRV_H */
......@@ -50,5 +50,7 @@ extern BOOL PATH_Ellipse(HDC hdc, INT x1, INT y1,
INT x2, INT y2);
extern BOOL PATH_Arc(HDC hdc, INT x1, INT y1, INT x2, INT y2,
INT xStart, INT yStart, INT xEnd, INT yEnd);
extern BOOL PATH_PolyBezierTo(HDC hdc, const POINT *pt, DWORD cbCount);
#endif /* __WINE_PATH_H */
......@@ -336,7 +336,6 @@ extern BOOL PSDRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count,
LPSIZE size );
extern BOOL PSDRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics );
extern BOOL PSDRV_LineTo( DC *dc, INT x, INT y );
extern BOOL PSDRV_MoveToEx( DC *dc, INT x, INT y, LPPOINT pt );
extern BOOL PSDRV_PatBlt( DC *dc, INT x, INT y, INT width, INT height, DWORD
dwRop);
extern BOOL PSDRV_Pie( DC *dc, INT left, INT top, INT right,
......
......@@ -76,11 +76,10 @@ extern BOOL TTYDRV_DC_GetTextExtentPoint(struct tagDC *dc, LPCSTR str, INT count
extern BOOL TTYDRV_DC_GetTextMetrics(struct tagDC *dc, TEXTMETRICA *metrics);
extern BOOL TTYDRV_DC_LineTo(struct tagDC *dc, INT x, INT y);
extern HANDLE TTYDRV_DC_LoadOEMResource(WORD resid, WORD type);
extern BOOL TTYDRV_DC_MoveToEx(struct tagDC *dc, INT x, INT y, LPPOINT pt);
extern BOOL TTYDRV_DC_PaintRgn(struct tagDC *dc, HRGN hrgn);
extern BOOL TTYDRV_DC_PatBlt(struct tagDC *dc, INT left, INT top, INT width, INT height, DWORD rop);
extern BOOL TTYDRV_DC_Pie(struct tagDC *dc, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend);
extern BOOL TTYDRV_DC_PolyBezier(struct tagDC *dc, POINT start, const POINT* BezierPoints, DWORD count);
extern BOOL TTYDRV_DC_PolyBezier(struct tagDC *dc, const POINT* BezierPoints, DWORD count);
extern BOOL TTYDRV_DC_Polygon(struct tagDC *dc, const POINT* pt, INT count);
extern BOOL TTYDRV_DC_Polyline(struct tagDC *dc, const POINT* pt, INT count);
extern BOOL TTYDRV_DC_PolyPolygon(struct tagDC *dc, const POINT* pt, const INT* counts, UINT polygons);
......
......@@ -103,7 +103,6 @@ extern BOOL X11DRV_StretchBlt( struct tagDC *dcDst, INT xDst, INT yDst,
INT widthDst, INT heightDst,
struct tagDC *dcSrc, INT xSrc, INT ySrc,
INT widthSrc, INT heightSrc, DWORD rop );
extern BOOL X11DRV_MoveToEx( struct tagDC *dc, INT x, INT y,LPPOINT pt);
extern BOOL X11DRV_LineTo( struct tagDC *dc, INT x, INT y);
extern BOOL X11DRV_Arc( struct tagDC *dc, INT left, INT top, INT right,
INT bottom, INT xstart, INT ystart, INT xend,
......@@ -126,7 +125,10 @@ extern COLORREF X11DRV_SetPixel( struct tagDC *dc, INT x, INT y,
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_PolyBezier( struct tagDC *dc, const POINT start, const POINT* lppt, DWORD cPoints);
extern BOOL X11DRV_PolyBezier( struct tagDC *dc, const POINT* lppt,
DWORD cPoints);
extern BOOL X11DRV_PolyBezierTo( struct tagDC *dc, const POINT* lppt,
DWORD cPoints);
extern BOOL X11DRV_Polygon( struct tagDC *dc, const POINT* pt, INT count );
extern BOOL X11DRV_PolyPolygon( struct tagDC *dc, const POINT* pt,
const INT* counts, UINT polygons);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment