More Escapes for the PostScript driver.
This commit is contained in:
parent
022d372709
commit
610b001de5
|
@ -30,6 +30,7 @@ INT PSDRV_Escape( DC *dc, INT nEscape, INT cbInput,
|
|||
TRACE(psdrv, "NEXTBAND rect to 0,0 - 0,0\n" );
|
||||
physDev->job.banding = FALSE;
|
||||
} /* Fall through */
|
||||
|
||||
case NEWFRAME:
|
||||
TRACE(psdrv, "NEWFRAME\n");
|
||||
|
||||
|
@ -44,6 +45,46 @@ INT PSDRV_Escape( DC *dc, INT nEscape, INT cbInput,
|
|||
physDev->job.NeedPageHeader = TRUE;
|
||||
return 1;
|
||||
|
||||
case QUERYESCSUPPORT:
|
||||
if(cbInput != 2) {
|
||||
WARN(psdrv, "cbInput != 2 (=%d) for QUERYESCSUPPORT\n", cbInput);
|
||||
return 0;
|
||||
} else {
|
||||
UINT16 num = *(UINT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
TRACE(psdrv, "QUERYESCSUPPORT for %d\n", num);
|
||||
|
||||
switch(num) {
|
||||
case NEWFRAME:
|
||||
case NEXTBAND:
|
||||
case QUERYESCSUPPORT:
|
||||
case SETABORTPROC:
|
||||
case STARTDOC:
|
||||
case ENDDOC:
|
||||
case GETPHYSPAGESIZE:
|
||||
case GETPRINTINGOFFSET:
|
||||
case GETSCALINGFACTOR:
|
||||
case SETCOPYCOUNT:
|
||||
case GETTECHNOLOGY:
|
||||
case SETLINECAP:
|
||||
case SETLINEJOIN:
|
||||
case SETMITERLIMIT:
|
||||
case SETCHARSET:
|
||||
case EXT_DEVICE_CAPS:
|
||||
case SET_BOUNDS:
|
||||
return TRUE;
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
case SETABORTPROC:
|
||||
FIXME(psdrv, "SETABORTPROC: Ignoring\n");
|
||||
|
||||
/* dc->w.lpfnPrint = (FARPROC16)lpInData;
|
||||
*/
|
||||
return 1;
|
||||
|
||||
case STARTDOC:
|
||||
TRACE(psdrv, "STARTDOC\n");
|
||||
if(physDev->job.hJob) {
|
||||
|
@ -67,48 +108,6 @@ INT PSDRV_Escape( DC *dc, INT nEscape, INT cbInput,
|
|||
return 0;
|
||||
return 1;
|
||||
|
||||
case QUERYESCSUPPORT:
|
||||
if(cbInput != 2) {
|
||||
WARN(psdrv, "cbInput != 2 (=%d) for QUERYESCSUPPORT\n", cbInput);
|
||||
return 0;
|
||||
} else {
|
||||
UINT16 num = *(UINT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
TRACE(psdrv, "QUERYESCSUPPORT for %d\n", num);
|
||||
return 0;
|
||||
}
|
||||
|
||||
case SETABORTPROC:
|
||||
FIXME(psdrv, "SETABORTPROC: ignoring\n");
|
||||
return 1;
|
||||
|
||||
case GETPHYSPAGESIZE:
|
||||
{
|
||||
POINT16 *p = (POINT16 *)PTR_SEG_TO_LIN(lpOutData);
|
||||
|
||||
p->x = dc->w.devCaps->horzRes;
|
||||
p->y = dc->w.devCaps->vertRes;
|
||||
TRACE(psdrv, "GETPHYSPAGESIZE: returning %dx%d\n", p->x, p->y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
case GETPRINTINGOFFSET:
|
||||
{
|
||||
POINT16 *p = (POINT16 *)PTR_SEG_TO_LIN(lpOutData);
|
||||
|
||||
p->x = p->y = 0;
|
||||
TRACE(psdrv, "GETPRINTINGOFFSET: returning %dx%d\n", p->x, p->y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
case GETSCALINGFACTOR:
|
||||
{
|
||||
POINT16 *p = (POINT16 *)PTR_SEG_TO_LIN(lpOutData);
|
||||
|
||||
p->x = p->y = 0;
|
||||
TRACE(psdrv, "GETSCALINGFACTOR: returning %dx%d\n", p->x, p->y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
case ENDDOC:
|
||||
TRACE(psdrv, "ENDDOC\n");
|
||||
if(!physDev->job.hJob) {
|
||||
|
@ -128,10 +127,133 @@ INT PSDRV_Escape( DC *dc, INT nEscape, INT cbInput,
|
|||
physDev->job.hJob = 0;
|
||||
return 1;
|
||||
|
||||
case GETPHYSPAGESIZE:
|
||||
{
|
||||
POINT16 *p = (POINT16 *)PTR_SEG_TO_LIN(lpOutData);
|
||||
|
||||
p->x = dc->w.devCaps->horzRes;
|
||||
p->y = dc->w.devCaps->vertRes;
|
||||
TRACE(psdrv, "GETPHYSPAGESIZE: returning %dx%d\n", p->x, p->y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
case GETPRINTINGOFFSET:
|
||||
{
|
||||
POINT16 *p = (POINT16 *)PTR_SEG_TO_LIN(lpOutData);
|
||||
|
||||
p->x = p->y = 0;
|
||||
TRACE(psdrv, "GETPRINTINGOFFSET: returning %dx%d\n", p->x, p->y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
case GETSCALINGFACTOR:
|
||||
{
|
||||
POINT16 *p = (POINT16 *)PTR_SEG_TO_LIN(lpOutData);
|
||||
|
||||
p->x = p->y = 0;
|
||||
TRACE(psdrv, "GETSCALINGFACTOR: returning %dx%d\n", p->x, p->y);
|
||||
return 1;
|
||||
}
|
||||
|
||||
case SETCOPYCOUNT:
|
||||
{
|
||||
INT16 *NumCopies = (INT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
INT16 *ActualCopies = (INT16 *)PTR_SEG_TO_LIN(lpOutData);
|
||||
if(cbInput != 2) {
|
||||
WARN(psdrv, "cbInput != 2 (=%d) for SETCOPYCOUNT\n", cbInput);
|
||||
return 0;
|
||||
}
|
||||
TRACE(psdrv, "SETCOPYCOUNT %d\n", *NumCopies);
|
||||
*ActualCopies = 1;
|
||||
return 1;
|
||||
}
|
||||
|
||||
case GETTECHNOLOGY:
|
||||
{
|
||||
LPSTR p = (LPSTR)PTR_SEG_TO_LIN(lpOutData);
|
||||
strcpy(p, "PostScript");
|
||||
*(p + strlen(p) + 1) = '\0'; /* 2 '\0's at end of string */
|
||||
return 1;
|
||||
}
|
||||
|
||||
case SETLINECAP:
|
||||
{
|
||||
INT16 newCap = *(INT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
if(cbInput != 2) {
|
||||
WARN(psdrv, "cbInput != 2 (=%d) for SETLINECAP\n", cbInput);
|
||||
return 0;
|
||||
}
|
||||
TRACE(psdrv, "SETLINECAP %d\n", newCap);
|
||||
return 0;
|
||||
}
|
||||
|
||||
case SETLINEJOIN:
|
||||
{
|
||||
INT16 newJoin = *(INT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
if(cbInput != 2) {
|
||||
WARN(psdrv, "cbInput != 2 (=%d) for SETLINEJOIN\n", cbInput);
|
||||
return 0;
|
||||
}
|
||||
TRACE(psdrv, "SETLINEJOIN %d\n", newJoin);
|
||||
return 0;
|
||||
}
|
||||
|
||||
case SETMITERLIMIT:
|
||||
{
|
||||
INT16 newLimit = *(INT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
if(cbInput != 2) {
|
||||
WARN(psdrv, "cbInput != 2 (=%d) for SETMITERLIMIT\n", cbInput);
|
||||
return 0;
|
||||
}
|
||||
TRACE(psdrv, "SETMITERLIMIT %d\n", newLimit);
|
||||
return 0;
|
||||
}
|
||||
|
||||
case SETCHARSET:
|
||||
/* Undocumented escape used by winword6.
|
||||
Switches between ANSI and a special charset.
|
||||
If *lpInData == 1 we require that
|
||||
0x91 is quoteleft
|
||||
0x92 is quoteright
|
||||
0x93 is quotedblleft
|
||||
0x94 is quotedblright
|
||||
0x95 is bullet
|
||||
0x96 is endash
|
||||
0x97 is emdash
|
||||
0xa0 is non break space - yeah right.
|
||||
|
||||
If *lpInData == 0 we get ANSI.
|
||||
Since there's nothing else there, let's just make these the default
|
||||
anyway and see what happens...
|
||||
*/
|
||||
return 1;
|
||||
|
||||
case EXT_DEVICE_CAPS:
|
||||
{
|
||||
UINT16 cap = *(UINT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
if(cbInput != 2) {
|
||||
WARN(psdrv, "cbInput != 2 (=%d) for EXT_DEVICE_CAPS\n",
|
||||
cbInput);
|
||||
return 0;
|
||||
}
|
||||
TRACE(psdrv, "EXT_DEVICE_CAPS %d\n", cap);
|
||||
return 0;
|
||||
}
|
||||
|
||||
case SET_BOUNDS:
|
||||
{
|
||||
RECT16 *r = (RECT16 *)PTR_SEG_TO_LIN(lpInData);
|
||||
if(cbInput != 8) {
|
||||
WARN(psdrv, "cbInput != 8 (=%d) for SET_BOUNDS\n", cbInput);
|
||||
return 0;
|
||||
}
|
||||
TRACE(psdrv, "SET_BOUNDS (%d,%d) - (%d,%d)\n", r->left, r->top,
|
||||
r->right, r->bottom);
|
||||
return 0;
|
||||
}
|
||||
|
||||
default:
|
||||
FIXME(psdrv, "Unimplemented code 0x%x\n", nEscape);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue