gdi32: Pass a DC pointer to get_gdi_flat_path().
Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0c1e42235a
commit
67520ebaf5
|
@ -408,6 +408,7 @@ static BOOL draw_arc( PHYSDEV dev, INT left, INT top, INT right, INT bottom,
|
||||||
/* helper for path stroking and filling functions */
|
/* helper for path stroking and filling functions */
|
||||||
static BOOL stroke_and_fill_path( dibdrv_physdev *dev, BOOL stroke, BOOL fill )
|
static BOOL stroke_and_fill_path( dibdrv_physdev *dev, BOOL stroke, BOOL fill )
|
||||||
{
|
{
|
||||||
|
DC *dc = get_physdev_dc( &dev->dev );
|
||||||
struct gdi_path *path;
|
struct gdi_path *path;
|
||||||
POINT *points;
|
POINT *points;
|
||||||
BYTE *types;
|
BYTE *types;
|
||||||
|
@ -417,7 +418,7 @@ static BOOL stroke_and_fill_path( dibdrv_physdev *dev, BOOL stroke, BOOL fill )
|
||||||
|
|
||||||
if (dev->brush.style == BS_NULL) fill = FALSE;
|
if (dev->brush.style == BS_NULL) fill = FALSE;
|
||||||
|
|
||||||
if (!(path = get_gdi_flat_path( dev->dev.hdc, fill ? &interior : NULL ))) return FALSE;
|
if (!(path = get_gdi_flat_path( dc, fill ? &interior : NULL ))) return FALSE;
|
||||||
if (!(total = get_gdi_path_data( path, &points, &types ))) goto done;
|
if (!(total = get_gdi_path_data( path, &points, &types ))) goto done;
|
||||||
|
|
||||||
if (stroke && dev->pen_uses_region) outline = CreateRectRgn( 0, 0, 0, 0 );
|
if (stroke && dev->pen_uses_region) outline = CreateRectRgn( 0, 0, 0, 0 );
|
||||||
|
|
|
@ -99,6 +99,7 @@ static void get_points_bounds( RECTL *bounds, const POINT *pts, UINT count, HDC
|
||||||
/* helper for path stroke and fill functions */
|
/* helper for path stroke and fill functions */
|
||||||
static BOOL emfdrv_stroke_and_fill_path( PHYSDEV dev, INT type )
|
static BOOL emfdrv_stroke_and_fill_path( PHYSDEV dev, INT type )
|
||||||
{
|
{
|
||||||
|
DC *dc = get_physdev_dc( dev );
|
||||||
EMRSTROKEANDFILLPATH emr;
|
EMRSTROKEANDFILLPATH emr;
|
||||||
struct gdi_path *path;
|
struct gdi_path *path;
|
||||||
POINT *points;
|
POINT *points;
|
||||||
|
@ -107,7 +108,7 @@ static BOOL emfdrv_stroke_and_fill_path( PHYSDEV dev, INT type )
|
||||||
emr.emr.iType = type;
|
emr.emr.iType = type;
|
||||||
emr.emr.nSize = sizeof(emr);
|
emr.emr.nSize = sizeof(emr);
|
||||||
|
|
||||||
if ((path = get_gdi_flat_path( dev->hdc, NULL )))
|
if ((path = get_gdi_flat_path( dc, NULL )))
|
||||||
{
|
{
|
||||||
int count = get_gdi_path_data( path, &points, &flags );
|
int count = get_gdi_path_data( path, &points, &flags );
|
||||||
get_points_bounds( &emr.rclBounds, points, count, 0 );
|
get_points_bounds( &emr.rclBounds, points, count, 0 );
|
||||||
|
|
|
@ -334,7 +334,7 @@ typedef struct
|
||||||
/* path.c */
|
/* path.c */
|
||||||
|
|
||||||
extern void free_gdi_path( struct gdi_path *path ) DECLSPEC_HIDDEN;
|
extern void free_gdi_path( struct gdi_path *path ) DECLSPEC_HIDDEN;
|
||||||
extern struct gdi_path *get_gdi_flat_path( HDC hdc, HRGN *rgn ) DECLSPEC_HIDDEN;
|
extern struct gdi_path *get_gdi_flat_path( DC *dc, HRGN *rgn ) DECLSPEC_HIDDEN;
|
||||||
extern int get_gdi_path_data( struct gdi_path *path, POINT **points, BYTE **flags ) DECLSPEC_HIDDEN;
|
extern int get_gdi_path_data( struct gdi_path *path, POINT **points, BYTE **flags ) DECLSPEC_HIDDEN;
|
||||||
extern BOOL PATH_SavePath( DC *dst, DC *src ) DECLSPEC_HIDDEN;
|
extern BOOL PATH_SavePath( DC *dst, DC *src ) DECLSPEC_HIDDEN;
|
||||||
extern BOOL PATH_RestorePath( DC *dst, DC *src ) DECLSPEC_HIDDEN;
|
extern BOOL PATH_RestorePath( DC *dst, DC *src ) DECLSPEC_HIDDEN;
|
||||||
|
|
|
@ -536,24 +536,20 @@ static BOOL PATH_DoArcPart(struct gdi_path *pPath, FLOAT_POINT corners[],
|
||||||
/* retrieve a flattened path in device coordinates, and optionally its region */
|
/* retrieve a flattened path in device coordinates, and optionally its region */
|
||||||
/* the DC path is deleted; the returned data must be freed by caller using free_gdi_path() */
|
/* the DC path is deleted; the returned data must be freed by caller using free_gdi_path() */
|
||||||
/* helper for stroke_and_fill_path in the DIB driver */
|
/* helper for stroke_and_fill_path in the DIB driver */
|
||||||
struct gdi_path *get_gdi_flat_path( HDC hdc, HRGN *rgn )
|
struct gdi_path *get_gdi_flat_path( DC *dc, HRGN *rgn )
|
||||||
{
|
{
|
||||||
DC *dc = get_dc_ptr( hdc );
|
|
||||||
struct gdi_path *ret = NULL;
|
struct gdi_path *ret = NULL;
|
||||||
|
|
||||||
if (!dc) return NULL;
|
|
||||||
|
|
||||||
if (dc->path)
|
if (dc->path)
|
||||||
{
|
{
|
||||||
ret = PATH_FlattenPath( dc->path );
|
ret = PATH_FlattenPath( dc->path );
|
||||||
|
|
||||||
free_gdi_path( dc->path );
|
free_gdi_path( dc->path );
|
||||||
dc->path = NULL;
|
dc->path = NULL;
|
||||||
if (ret && rgn) *rgn = path_to_region( ret, GetPolyFillMode( hdc ) );
|
if (ret && rgn) *rgn = path_to_region( ret, dc->polyFillMode );
|
||||||
}
|
}
|
||||||
else SetLastError( ERROR_CAN_NOT_COMPLETE );
|
else SetLastError( ERROR_CAN_NOT_COMPLETE );
|
||||||
|
|
||||||
release_dc_ptr( dc );
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue