diff --git a/dlls/gdi/gdi16.c b/dlls/gdi/gdi16.c index 20bf0474276..abef4d6a5bf 100644 --- a/dlls/gdi/gdi16.c +++ b/dlls/gdi/gdi16.c @@ -646,11 +646,24 @@ INT16 WINAPI Escape16( HDC16 hdc, INT16 escape, INT16 in_count, SEGPTR in_data, rc16->bottom = rc.bottom; return ret; } + /* Escape(hdc,DRAWPATTERNRECT,PRECT_STRUCT*,NULL); */ + case DRAWPATTERNRECT: + { + DRAWPATRECT pr; + DRAWPATRECT16 *pr16 = (DRAWPATRECT16*)MapSL(in_data); + + pr.ptPosition.x = pr16->ptPosition.x; + pr.ptPosition.y = pr16->ptPosition.y; + pr.ptSize.x = pr16->ptSize.x; + pr.ptSize.y = pr16->ptSize.y; + pr.wStyle = pr16->wStyle; + pr.wPattern = pr16->wPattern; + return Escape( HDC_32(hdc), escape, sizeof(pr), (LPCSTR)&pr, NULL ); + } /* Escape(hdc,ABORTDOC,NULL,NULL); */ /* Escape(hdc,BANDINFO,BANDINFOSTRUCT*,BANDINFOSTRUCT*); */ /* Escape(hdc,BEGIN_PATH,NULL,NULL); */ - /* Escape(hdc,DRAWPATTERNRECT,PRECT_STRUCT*,NULL); */ /* Escape(hdc,ENDDOC,NULL,NULL); */ /* Escape(hdc,END_PATH,PATHINFO,NULL); */ /* Escape(hdc,EXTTEXTOUT,EXTTEXT_STRUCT*,NULL); */ @@ -674,7 +687,6 @@ INT16 WINAPI Escape16( HDC16 hdc, INT16 escape, INT16 in_count, SEGPTR in_data, case ABORTDOC: case BANDINFO: case BEGIN_PATH: - case DRAWPATTERNRECT: case ENDDOC: case END_PATH: case EXTTEXTOUT: diff --git a/dlls/wineps/escape.c b/dlls/wineps/escape.c index bf680c9184b..88445d573be 100644 --- a/dlls/wineps/escape.c +++ b/dlls/wineps/escape.c @@ -54,6 +54,7 @@ INT PSDRV_ExtEscape( PSDRV_PDEVICE *physDev, INT nEscape, INT cbInput, LPCVOID i switch(num) { case NEXTBAND: + /*case BANDINFO:*/ case SETCOPYCOUNT: case GETTECHNOLOGY: case SETLINECAP: @@ -70,13 +71,50 @@ INT PSDRV_ExtEscape( PSDRV_PDEVICE *physDev, INT nEscape, INT cbInput, LPCVOID i case BEGIN_PATH: case CLIP_TO_PATH: case END_PATH: + /*case DRAWPATTERNRECT:*/ return TRUE; default: + FIXME("QUERYESCSUPPORT(%d) - not supported.\n", num); return FALSE; } } + case MFCOMMENT: + { + int i; + FIXME("MFCOMMENT(%p, %d)\n", in_data, cbInput); + for (i=0;iptPosition.x, dpr->ptPosition.y, + dpr->ptSize.x, dpr->ptSize.y, + dpr->wStyle, dpr->wPattern + ); + return 1; + } + case BANDINFO: + { + BANDINFOSTRUCT *ibi = (BANDINFOSTRUCT*)in_data; + BANDINFOSTRUCT *obi = (BANDINFOSTRUCT*)out_data; + + FIXME("BANDINFO(graphics %d, text %d, rect [%ldx%ld-%ldx%ld]), stub!\n", + ibi->GraphicsFlag, + ibi->TextFlag, + ibi->GraphicsRect.top, + ibi->GraphicsRect.bottom, + ibi->GraphicsRect.left, + ibi->GraphicsRect.right + ); + memcpy (obi, ibi, sizeof(*ibi)); + return 1; + } case NEXTBAND: { RECT *r = out_data; diff --git a/dlls/wineps/psdrv.h b/dlls/wineps/psdrv.h index af106c5bec7..c1880851134 100644 --- a/dlls/wineps/psdrv.h +++ b/dlls/wineps/psdrv.h @@ -141,6 +141,14 @@ typedef struct _tagPAGESIZE { } PAGESIZE; +/* For BANDINFO Escape */ +typedef struct _BANDINFOSTRUCT +{ + BOOL GraphicsFlag; + BOOL TextFlag; + RECT GraphicsRect; +} BANDINFOSTRUCT, *PBANDINFOSTRUCT; + typedef struct _tagOPTIONENTRY { char *Name; /* eg "True" */ char *FullName; /* eg "Installed" */ diff --git a/include/wine/wingdi16.h b/include/wine/wingdi16.h index 6e0fec6c04d..4ced7d900b3 100644 --- a/include/wine/wingdi16.h +++ b/include/wine/wingdi16.h @@ -355,6 +355,15 @@ struct PATH_INFO { #define RENDERMODE_OPEN 1 #define RENDERMODE_CLOSED 2 +/* For DRAWPATTERNRECT Escape, 16bit mode */ +typedef struct _DRAWPATRECT16 +{ + POINT16 ptPosition; + POINT16 ptSize; + WORD wStyle; + WORD wPattern; +} DRAWPATRECT16, *PDRAWPATRECT16; + #include diff --git a/include/wingdi.h b/include/wingdi.h index f4ae99d6f57..dd752c6a05a 100644 --- a/include/wingdi.h +++ b/include/wingdi.h @@ -3204,6 +3204,14 @@ typedef struct _BLENDFUNCTION #define LAYOUT_BITMAPORIENTATIONPRESERVED 0x00000008 #define NOMIRRORBITMAP 0x80000000 +/* For DRAWPATTERNRECT Escape */ +typedef struct _DRAWPATRECT +{ + POINT ptPosition; + POINT ptSize; + WORD wStyle; + WORD wPattern; +} DRAWPATRECT, *PDRAWPATRECT; INT WINAPI AbortDoc(HDC); BOOL WINAPI AbortPath(HDC);