diff --git a/dlls/win32u/main.c b/dlls/win32u/main.c index e3d2f2c54b2..d2cd039b701 100644 --- a/dlls/win32u/main.c +++ b/dlls/win32u/main.c @@ -25,7 +25,6 @@ #include "windef.h" #include "winbase.h" #include "ntgdi.h" -#include "win32u_private.h" #include "wine/unixlib.h" extern void *__wine_syscall_dispatcher DECLSPEC_HIDDEN; diff --git a/dlls/wineps.drv/bitblt.c b/dlls/wineps.drv/bitblt.c index d357e5db00f..b61f2a631c1 100644 --- a/dlls/wineps.drv/bitblt.c +++ b/dlls/wineps.drv/bitblt.c @@ -28,7 +28,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(psdrv); * * PSDRV_PatBlt */ -BOOL CDECL PSDRV_PatBlt(print_ctx *ctx, struct bitblt_coords *dst, DWORD dwRop) +BOOL CDECL PSDRV_PatBlt(print_ctx *ctx, struct ps_bitblt_coords *dst, DWORD dwRop) { switch(dwRop) { case PATCOPY: diff --git a/dlls/wineps.drv/bitmap.c b/dlls/wineps.drv/bitmap.c index 69f93b2ea69..05b2c1fe739 100644 --- a/dlls/wineps.drv/bitmap.c +++ b/dlls/wineps.drv/bitmap.c @@ -147,7 +147,7 @@ static inline DWORD max_ascii85_size(DWORD size) return (size + 3) / 4 * 5; } -static void CDECL free_heap_bits( struct gdi_image_bits *bits ) +static void free_heap_bits( struct ps_image_bits *bits ) { HeapFree( GetProcessHeap(), 0, bits->ptr ); } @@ -184,13 +184,13 @@ static void PSDRV_WriteImageBits( print_ctx *ctx, const BITMAPINFO *info, BOOL g * PSDRV_PutImage */ DWORD CDECL PSDRV_PutImage( print_ctx *ctx, HRGN clip, BITMAPINFO *info, - const struct gdi_image_bits *bits, struct bitblt_coords *src, - struct bitblt_coords *dst, DWORD rop ) + const struct ps_image_bits *bits, struct ps_bitblt_coords *src, + struct ps_bitblt_coords *dst, DWORD rop ) { int src_stride, dst_stride, size, x, y, width, height, bit_offset; int dst_x, dst_y, dst_width, dst_height; unsigned char *src_ptr, *dst_ptr; - struct gdi_image_bits dst_bits; + struct ps_image_bits dst_bits; BOOL grayscale = info->bmiHeader.biBitCount == 24 && ctx->pi->ppd->ColorDevice == CD_False; if (info->bmiHeader.biPlanes != 1) goto update_format; diff --git a/dlls/wineps.drv/brush.c b/dlls/wineps.drv/brush.c index 0c3dabd387f..2917cccff02 100644 --- a/dlls/wineps.drv/brush.c +++ b/dlls/wineps.drv/brush.c @@ -27,7 +27,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(psdrv); /*********************************************************************** * SelectBrush (WINEPS.@) */ -HBRUSH CDECL PSDRV_SelectBrush( print_ctx *ctx, HBRUSH hbrush, const struct brush_pattern *pattern ) +HBRUSH CDECL PSDRV_SelectBrush( print_ctx *ctx, HBRUSH hbrush, const struct ps_brush_pattern *pattern ) { LOGBRUSH logbrush; diff --git a/dlls/wineps.drv/pen.c b/dlls/wineps.drv/pen.c index f8b828b3444..cfc063882b3 100644 --- a/dlls/wineps.drv/pen.c +++ b/dlls/wineps.drv/pen.c @@ -37,7 +37,7 @@ static const DWORD PEN_alternate[] = { 1 }; /*********************************************************************** * SelectPen (WINEPS.@) */ -HPEN CDECL PSDRV_SelectPen( print_ctx *ctx, HPEN hpen, const struct brush_pattern *pattern ) +HPEN CDECL PSDRV_SelectPen( print_ctx *ctx, HPEN hpen, const struct ps_brush_pattern *pattern ) { LOGPEN logpen; EXTLOGPEN *elp = NULL; diff --git a/dlls/wineps.drv/printproc.c b/dlls/wineps.drv/printproc.c index 644f8872888..34b3ec897a4 100644 --- a/dlls/wineps.drv/printproc.c +++ b/dlls/wineps.drv/printproc.c @@ -45,7 +45,7 @@ struct pp_data print_ctx *ctx; - struct brush_pattern *patterns; + struct ps_brush_pattern *patterns; BOOL path; INT break_extra; INT break_rem; @@ -210,7 +210,7 @@ static inline void order_rect(RECT *rect) } } -static BOOL intersect_vis_rectangles(struct bitblt_coords *dst, struct bitblt_coords *src) +static BOOL intersect_vis_rectangles(struct ps_bitblt_coords *dst, struct ps_bitblt_coords *src) { RECT rect; @@ -299,8 +299,8 @@ static void clip_visrect(HDC hdc, RECT *dst, const RECT *src) DeleteObject(hrgn); } -static void get_vis_rectangles(HDC hdc, struct bitblt_coords *dst, - const XFORM *xform, DWORD width, DWORD height, struct bitblt_coords *src) +static void get_vis_rectangles(HDC hdc, struct ps_bitblt_coords *dst, + const XFORM *xform, DWORD width, DWORD height, struct ps_bitblt_coords *src) { RECT rect; @@ -347,8 +347,8 @@ static int stretch_blt(print_ctx *ctx, const EMRSTRETCHBLT *blt, { char dst_buffer[FIELD_OFFSET(BITMAPINFO, bmiColors[256])]; BITMAPINFO *dst_info = (BITMAPINFO *)dst_buffer; - struct bitblt_coords src, dst; - struct gdi_image_bits bits; + struct ps_bitblt_coords src, dst; + struct ps_image_bits bits; DWORD err; dst.log_x = blt->xDest; @@ -968,8 +968,8 @@ static BOOL gradient_fill(print_ctx *ctx, const TRIVERTEX *vert_array, DWORD nve { char buffer[FIELD_OFFSET(BITMAPINFO, bmiColors[256])]; BITMAPINFO *info = (BITMAPINFO *)buffer; - struct bitblt_coords src, dst; - struct gdi_image_bits bits; + struct ps_bitblt_coords src, dst; + struct ps_image_bits bits; HBITMAP bmp, old_bmp; BOOL ret = FALSE; TRIVERTEX *pts; @@ -1084,7 +1084,7 @@ static BOOL gradient_fill(print_ctx *ctx, const TRIVERTEX *vert_array, DWORD nve } static HGDIOBJ get_object_handle(struct pp_data *data, HANDLETABLE *handletable, - DWORD i, struct brush_pattern **pattern) + DWORD i, struct ps_brush_pattern **pattern) { if (i & 0x80000000) { @@ -1097,7 +1097,7 @@ static HGDIOBJ get_object_handle(struct pp_data *data, HANDLETABLE *handletable, static BOOL select_hbrush(struct pp_data *data, HANDLETABLE *htable, int handle_count, HBRUSH brush) { - struct brush_pattern *pattern = NULL; + struct ps_brush_pattern *pattern = NULL; int i; for (i = 0; i < handle_count; i++) @@ -2090,7 +2090,7 @@ done: static BOOL fill_rgn(struct pp_data *data, HANDLETABLE *htable, int handle_count, DWORD brush, HRGN rgn) { - struct brush_pattern *pattern; + struct ps_brush_pattern *pattern; HBRUSH hbrush; int ret; @@ -2297,7 +2297,7 @@ static int WINAPI hmf_proc(HDC hdc, HANDLETABLE *htable, case EMR_SELECTOBJECT: { const EMRSELECTOBJECT *so = (const EMRSELECTOBJECT *)rec; - struct brush_pattern *pattern; + struct ps_brush_pattern *pattern; UINT aa_flags; HGDIOBJ obj; diff --git a/dlls/wineps.drv/psdrv.h b/dlls/wineps.drv/psdrv.h index 6173bdfc413..f4cdfb1f653 100644 --- a/dlls/wineps.drv/psdrv.h +++ b/dlls/wineps.drv/psdrv.h @@ -25,14 +25,41 @@ #include "windef.h" #include "winbase.h" -#include "wingdi.h" +#include "ntgdi.h" #include "winspool.h" #include "unixlib.h" -#include "wine/gdi_driver.h" #include "wine/list.h" +struct ps_bitblt_coords +{ + int log_x; /* original position and size, in logical coords */ + int log_y; + int log_width; + int log_height; + int x; /* mapped position and size, in device coords */ + int y; + int width; + int height; + RECT visrect; /* rectangle clipped to the visible part, in device coords */ + DWORD layout; /* DC layout */ +}; + +struct ps_image_bits +{ + void *ptr; /* pointer to the bits */ + BOOL is_copy; /* whether this is a copy of the bits that can be modified */ + void (*free)(struct ps_image_bits *); /* callback for freeing the bits */ +}; + +struct ps_brush_pattern +{ + BITMAPINFO *info; /* DIB info */ + struct ps_image_bits bits; /* DIB bits */ + UINT usage; /* color usage for DIB info */ +}; + typedef struct { INT index; LPCSTR sz; @@ -292,9 +319,9 @@ typedef struct { } PSFONT; typedef struct { - PSCOLOR color; - BOOL set; - struct brush_pattern pattern; + PSCOLOR color; + BOOL set; + struct ps_brush_pattern pattern; } PSBRUSH; #define MAX_DASHLEN 16 @@ -384,7 +411,7 @@ extern BOOL CDECL PSDRV_ExtTextOut( print_ctx *ctx, INT x, INT y, UINT flags, extern BOOL CDECL PSDRV_FillPath( print_ctx *ctx ) DECLSPEC_HIDDEN; extern BOOL CDECL PSDRV_LineTo(print_ctx *ctx, INT x, INT y) DECLSPEC_HIDDEN; extern BOOL CDECL PSDRV_PaintRgn( print_ctx *ctx, HRGN hrgn ) DECLSPEC_HIDDEN; -extern BOOL CDECL PSDRV_PatBlt(print_ctx *ctx, struct bitblt_coords *dst, DWORD dwRop) DECLSPEC_HIDDEN; +extern BOOL CDECL PSDRV_PatBlt(print_ctx *ctx, struct ps_bitblt_coords *dst, DWORD dwRop) DECLSPEC_HIDDEN; extern BOOL CDECL PSDRV_Pie( print_ctx *ctx, INT left, INT top, INT right, INT bottom, INT xstart, INT ystart, INT xend, INT yend ) DECLSPEC_HIDDEN; extern BOOL CDECL PSDRV_PolyBezier( print_ctx *ctx, const POINT *pts, DWORD count ) DECLSPEC_HIDDEN; @@ -392,14 +419,16 @@ extern BOOL CDECL PSDRV_PolyBezierTo( print_ctx *ctx, const POINT *pts, DWORD co extern BOOL CDECL PSDRV_PolyPolygon( print_ctx *ctx, const POINT* pts, const INT* counts, UINT polygons ) DECLSPEC_HIDDEN; extern BOOL CDECL PSDRV_PolyPolyline( print_ctx *ctx, const POINT* pts, const DWORD* counts, DWORD polylines ) DECLSPEC_HIDDEN; extern DWORD CDECL PSDRV_PutImage( print_ctx *ctx, HRGN clip, BITMAPINFO *info, - const struct gdi_image_bits *bits, struct bitblt_coords *src, - struct bitblt_coords *dst, DWORD rop ) DECLSPEC_HIDDEN; + const struct ps_image_bits *bits, struct ps_bitblt_coords *src, + struct ps_bitblt_coords *dst, DWORD rop ) DECLSPEC_HIDDEN; extern BOOL CDECL PSDRV_Rectangle( print_ctx *ctx, INT left, INT top, INT right, INT bottom ) DECLSPEC_HIDDEN; extern BOOL CDECL PSDRV_RoundRect( print_ctx *ctx, INT left, INT top, INT right, INT bottom, INT ell_width, INT ell_height ) DECLSPEC_HIDDEN; -extern HBRUSH CDECL PSDRV_SelectBrush( print_ctx *ctx, HBRUSH hbrush, const struct brush_pattern *pattern ) DECLSPEC_HIDDEN; +extern HBRUSH CDECL PSDRV_SelectBrush( print_ctx *ctx, HBRUSH hbrush, + const struct ps_brush_pattern *pattern ) DECLSPEC_HIDDEN; extern HFONT CDECL PSDRV_SelectFont( print_ctx *ctx, HFONT hfont, UINT *aa_flags ) DECLSPEC_HIDDEN; -extern HPEN CDECL PSDRV_SelectPen( print_ctx *ctx, HPEN hpen, const struct brush_pattern *pattern ) DECLSPEC_HIDDEN; +extern HPEN CDECL PSDRV_SelectPen( print_ctx *ctx, HPEN hpen, + const struct ps_brush_pattern *pattern ) DECLSPEC_HIDDEN; extern COLORREF CDECL PSDRV_SetBkColor( print_ctx *ctx, COLORREF color ) DECLSPEC_HIDDEN; extern COLORREF CDECL PSDRV_SetDCBrushColor( print_ctx *ctx, COLORREF color ) DECLSPEC_HIDDEN; extern COLORREF CDECL PSDRV_SetDCPenColor( print_ctx *ctx, COLORREF color ) DECLSPEC_HIDDEN; diff --git a/include/wine/gdi_driver.h b/include/wine/gdi_driver.h index 8561d0fc52b..553bced3cb0 100644 --- a/include/wine/gdi_driver.h +++ b/include/wine/gdi_driver.h @@ -21,6 +21,10 @@ #ifndef __WINE_WINE_GDI_DRIVER_H #define __WINE_WINE_GDI_DRIVER_H +#ifndef WINE_UNIX_LIB +#error The GDI driver can only be used on the Unix side +#endif + #include "winternl.h" #include "ntuser.h" #include "immdev.h" @@ -197,8 +201,6 @@ static inline void push_dc_driver( PHYSDEV *dev, PHYSDEV physdev, const struct g /* support for window surfaces */ -#ifdef WINE_UNIX_LIB - struct window_surface; struct window_surface_funcs @@ -348,6 +350,4 @@ extern void __wine_set_user_driver( const struct user_driver_funcs *funcs, UINT extern BOOL win32u_set_window_pixel_format( HWND hwnd, int format, BOOL internal ); extern int win32u_get_window_pixel_format( HWND hwnd ); -#endif /* WINE_UNIX_LIB */ - #endif /* __WINE_WINE_GDI_DRIVER_H */