wineps.drv: Add stubs for escapes required by Adobe PageMaker.

Signed-off-by: Dmitry Timoshkov <dmitry@baikal.ru>
Signed-off-by: Huw Davies <huw@codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Dmitry Timoshkov 2019-02-13 11:40:29 +00:00 committed by Alexandre Julliard
parent 776e74549d
commit 7338641e89
2 changed files with 41 additions and 7 deletions

View File

@ -1402,9 +1402,7 @@ static void print_something(HDC hdc)
strcpy(buf, "deadbeef"); strcpy(buf, "deadbeef");
ret = ExtEscape(hdc, DOWNLOADHEADER, 0, NULL, sizeof(buf), buf ); ret = ExtEscape(hdc, DOWNLOADHEADER, 0, NULL, sizeof(buf), buf );
todo_wine
ok(ret == 1, "DOWNLOADHEADER failed\n"); ok(ret == 1, "DOWNLOADHEADER failed\n");
todo_wine
ok(strcmp(buf, "deadbeef") != 0, "DOWNLOADHEADER failed\n"); ok(strcmp(buf, "deadbeef") != 0, "DOWNLOADHEADER failed\n");
strcpy(buf + 2, "\n% ===> after DOWNLOADHEADER <===\n"); strcpy(buf + 2, "\n% ===> after DOWNLOADHEADER <===\n");
@ -1464,22 +1462,18 @@ static void test_pscript_printer_dc(void)
query = DOWNLOADFACE; query = DOWNLOADFACE;
ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL); ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL);
todo_wine
ok(ret == 1, "DOWNLOADFACE is not supported\n"); ok(ret == 1, "DOWNLOADFACE is not supported\n");
query = OPENCHANNEL; query = OPENCHANNEL;
ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL); ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL);
todo_wine
ok(ret == 1, "OPENCHANNEL is not supported\n"); ok(ret == 1, "OPENCHANNEL is not supported\n");
query = DOWNLOADHEADER; query = DOWNLOADHEADER;
ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL); ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL);
todo_wine
ok(ret == 1, "DOWNLOADHEADER is not supported\n"); ok(ret == 1, "DOWNLOADHEADER is not supported\n");
query = CLOSECHANNEL; query = CLOSECHANNEL;
ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL); ret = Escape(hdc, QUERYESCSUPPORT, sizeof(query), (LPCSTR)&query, NULL);
todo_wine
ok(ret == 1, "CLOSECHANNEL is not supported\n"); ok(ret == 1, "CLOSECHANNEL is not supported\n");
query = POSTSCRIPT_PASSTHROUGH; query = POSTSCRIPT_PASSTHROUGH;
@ -1487,7 +1481,6 @@ todo_wine
ok(ret == 1, "POSTSCRIPT_PASSTHROUGH is not supported\n"); ok(ret == 1, "POSTSCRIPT_PASSTHROUGH is not supported\n");
ret = ExtEscape(hdc, GETFACENAME, 0, NULL, sizeof(buf), buf); ret = ExtEscape(hdc, GETFACENAME, 0, NULL, sizeof(buf), buf);
todo_wine
ok(ret == 1, "GETFACENAME failed\n"); ok(ret == 1, "GETFACENAME failed\n");
trace("face name: %s\n", buf); trace("face name: %s\n", buf);

View File

@ -97,14 +97,55 @@ INT PSDRV_ExtEscape( PHYSDEV dev, INT nEscape, INT cbInput, LPCVOID in_data,
case CLIP_TO_PATH: case CLIP_TO_PATH:
case END_PATH: case END_PATH:
/*case DRAWPATTERNRECT:*/ /*case DRAWPATTERNRECT:*/
/* PageMaker checks for it */
case DOWNLOADHEADER:
/* PageMaker doesn't check for DOWNLOADFACE and GETFACENAME but
* uses them, they are supposed to be supported by any PS printer.
*/
case DOWNLOADFACE:
/* PageMaker checks for these as a part of process of detecting
* a "fully compatible" PS printer, but doesn't actually use them.
*/
case OPENCHANNEL:
case CLOSECHANNEL:
return TRUE; return TRUE;
/* Windows PS driver reports 0, but still supports this escape */
case GETFACENAME:
return FALSE; /* suppress the FIXME below */
default: default:
FIXME("QUERYESCSUPPORT(%d) - not supported.\n", num); FIXME("QUERYESCSUPPORT(%d) - not supported.\n", num);
return FALSE; return FALSE;
} }
} }
case OPENCHANNEL:
FIXME("OPENCHANNEL: stub\n");
return 1;
case CLOSECHANNEL:
FIXME("CLOSECHANNEL: stub\n");
return 1;
case DOWNLOADHEADER:
FIXME("DOWNLOADHEADER: stub\n");
/* should return name of the downloaded procset */
*(char *)out_data = 0;
return 1;
case GETFACENAME:
FIXME("GETFACENAME: stub\n");
lstrcpynA(out_data, "Courier", cbOutput);
return 1;
case DOWNLOADFACE:
FIXME("DOWNLOADFACE: stub\n");
return 1;
case MFCOMMENT: case MFCOMMENT:
{ {
FIXME("MFCOMMENT(%p, %d)\n", in_data, cbInput); FIXME("MFCOMMENT(%p, %d)\n", in_data, cbInput);