blob: d217e99417c0b3595ef5822900828caafa4c0666 [file] [log] [blame]
/*
* Exported functions from the Postscript driver.
*
* [Ext]DeviceMode, DeviceCapabilities.
*
* Will need ExtTextOut for winword6 (urgh!)
*
* Copyright 1998 Huw D M Davies
*
*/
#include "windows.h"
#include "psdrv.h"
#include "debug.h"
static DEVMODE16 DefaultDevMode =
{
/* dmDeviceName */ "Wine Postscript Driver",
/* dmSpecVersion */ 0x30a,
/* dmDriverVersion */ 0x001,
/* dmSize */ sizeof(DEVMODE16),
/* dmDriverExtra */ 0,
/* dmFields */ DM_ORIENTATION | DM_PAPERSIZE | DM_PAPERLENGTH |
DM_PAPERWIDTH,
/* dmOrientation */ DMORIENT_PORTRAIT,
/* dmPaperSize */ DMPAPER_A4,
/* dmPaperLength */ 2930,
/* dmPaperWidth */ 2000,
/* dmScale */ 0,
/* dmCopies */ 0,
/* dmDefaultSource */ 0,
/* dmPrintQuality */ 0,
/* dmColor */ 0,
/* dmDuplex */ 0,
/* dmYResolution */ 0,
/* dmTTOption */ 0,
/* dmCollate */ 0,
/* dmFormName */ "",
/* dmUnusedPadding */ 0,
/* dmBitsPerPel */ 0,
/* dmPelsWidth */ 0,
/* dmPelsHeight */ 0,
/* dmDisplayFlags */ 0,
/* dmDisplayFrequency */ 0
};
static char PaperNames[][64] = {"My A4"};
static WORD Papers[] = {DMPAPER_A4};
static POINT16 PaperSizes[] = {{2110, 2975}};
static char BinNames[][24] = {"My Bin"};
static WORD Bins[] = {DMBIN_AUTO};
static LONG Resolutions[][2] = { {600,600} };
/***************************************************************
*
* PSDRV_ExtDeviceMode16 [WINEPS.90]
*
* Just returns default devmode at the moment
*/
INT16 WINAPI PSDRV_ExtDeviceMode16(HWND16 hwnd, HANDLE16 hDriver,
LPDEVMODE16 lpdmOutput, LPSTR lpszDevice, LPSTR lpszPort,
LPDEVMODE16 lpdmInput, LPSTR lpszProfile, WORD fwMode)
{
TRACE(psdrv,
"(hwnd=%04x, hDriver=%04x, devOut=%p, Device='%s', Port='%s', devIn=%p, Profile='%s', Mode=%04x)\n",
hwnd, hDriver, lpdmOutput, lpszDevice, lpszPort, lpdmInput, lpszProfile,
fwMode);
if(!fwMode)
return sizeof(DefaultDevMode);
if(fwMode & DM_COPY)
memcpy(lpdmOutput, &DefaultDevMode, sizeof(DefaultDevMode));
return IDOK;
}
/***************************************************************
*
* PSDRV_DeviceCapabilities16 [WINEPS.91]
*
*/
DWORD WINAPI PSDRV_DeviceCapabilities16(LPSTR lpszDevice, LPSTR lpszPort,
WORD fwCapability, LPSTR lpszOutput, LPDEVMODE16 lpdm)
{
TRACE(psdrv, "Cap=%d\n", fwCapability);
switch(fwCapability) {
case DC_PAPERS:
if(lpszOutput != NULL)
memcpy(lpszOutput, Papers, sizeof(Papers));
return sizeof(Papers) / sizeof(WORD);
case DC_PAPERSIZE:
if(lpszOutput != NULL)
memcpy(lpszOutput, PaperSizes, sizeof(PaperSizes));
return sizeof(PaperSizes) / sizeof(POINT16);
case DC_BINS:
if(lpszOutput != NULL)
memcpy(lpszOutput, Bins, sizeof(Bins));
return sizeof(Bins) / sizeof(WORD);
case DC_BINNAMES:
if(lpszOutput != NULL)
memcpy(lpszOutput, BinNames, sizeof(BinNames));
return sizeof(BinNames) / sizeof(BinNames[0]);
case DC_PAPERNAMES:
if(lpszOutput != NULL)
memcpy(lpszOutput, PaperNames, sizeof(PaperNames));
return sizeof(PaperNames) / sizeof(PaperNames[0]);
case DC_ORIENTATION:
return 90;
case DC_ENUMRESOLUTIONS:
if(lpszOutput != NULL)
memcpy(lpszOutput, Resolutions, sizeof(Resolutions));
return sizeof(Resolutions) / sizeof(Resolutions[0]);
default:
FIXME(psdrv, "Unsupported capability %d\n", fwCapability);
}
return -1;
}
/***************************************************************
*
* PSDRV_DeviceMode16 [WINEPS.13]
*
*/
void WINAPI PSDRV_DeviceMode16(HWND16 hwnd, HANDLE16 hDriver,
LPSTR lpszDevice, LPSTR lpszPort)
{
PSDRV_ExtDeviceMode16( hwnd, hDriver, NULL, lpszDevice, lpszPort, NULL,
NULL, DM_PROMPT );
return;
}