aboutsummaryrefslogtreecommitdiff
path: root/Linux_C_12/cprinter_121.c
diff options
context:
space:
mode:
Diffstat (limited to 'Linux_C_12/cprinter_121.c')
-rw-r--r--Linux_C_12/cprinter_121.c708
1 files changed, 354 insertions, 354 deletions
diff --git a/Linux_C_12/cprinter_121.c b/Linux_C_12/cprinter_121.c
index 8e635a3..83ff63d 100644
--- a/Linux_C_12/cprinter_121.c
+++ b/Linux_C_12/cprinter_121.c
@@ -1,12 +1,12 @@
/********************************************************************************************
- Clean OS Windows library module version 1.2.1.
- This module is part of the Clean Object I/O library and Clean 0.8 I/O library
- for the Windows platform.
+ Clean OS Windows library module version 1.2.1.
+ This module is part of the Clean Object I/O library and Clean 0.8 I/O library
+ for the Windows platform.
********************************************************************************************/
/********************************************************************************************
- About this module:
- Routines related to printing.
+ About this module:
+ Routines related to printing.
********************************************************************************************/
#include "util_121.h"
@@ -37,169 +37,169 @@ typedef char* LPCTSTR;
#define tachtig 80
void getDevmodeSizeC(int *size, HANDLE *phPrinter,
- char **device, char **driver, char **output)
+ char **device, char **driver, char **output)
{
#if 0
- char szPrinter[80];
- char *szDevice, *szDriver, *szOutput;
-
- GetProfileString("windows", "device", ",,,", szPrinter, 80);
- szDevice = strtok(szPrinter,",");
- szDriver = strtok(NULL,", ");
- szOutput = strtok(NULL,", ");
- *device = g_strdup(szDevice);
- *driver = g_strdup(szDriver);
- *output = g_strdup(szOutput);
- if (*szDevice=='\0' || *szDriver=='\0' || *szOutput=='\0')
- {
- *size = 0;
- return;
- };
- OpenPrinter(szDevice,phPrinter,NULL);
- *size = DocumentProperties(NULL,*phPrinter,szDevice,NULL,NULL,0);
+ char szPrinter[80];
+ char *szDevice, *szDriver, *szOutput;
+
+ GetProfileString("windows", "device", ",,,", szPrinter, 80);
+ szDevice = strtok(szPrinter,",");
+ szDriver = strtok(NULL,", ");
+ szOutput = strtok(NULL,", ");
+ *device = g_strdup(szDevice);
+ *driver = g_strdup(szDriver);
+ *output = g_strdup(szOutput);
+ if (*szDevice=='\0' || *szDriver=='\0' || *szOutput=='\0')
+ {
+ *size = 0;
+ return;
+ };
+ OpenPrinter(szDevice,phPrinter,NULL);
+ *size = DocumentProperties(NULL,*phPrinter,szDevice,NULL,NULL,0);
#endif
}
void getDefaultDevmodeC(char *printSetup, LPHANDLE phPrinter, char **device)
{
#if 0
- int size,r1;
+ int size,r1;
- size = ((int*)printSetup)[0];
- printSetup +=4;
- r1 = DocumentProperties(NULL,phPrinter,((char*)device)+4,
- (DEVMODE*)printSetup,NULL,DM_OUT_BUFFER);
- ClosePrinter(phPrinter);
+ size = ((int*)printSetup)[0];
+ printSetup +=4;
+ r1 = DocumentProperties(NULL,phPrinter,((char*)device)+4,
+ (DEVMODE*)printSetup,NULL,DM_OUT_BUFFER);
+ ClosePrinter(phPrinter);
#endif
}
#if 0
static HDC myCreateIC(LPCTSTR driver, LPCTSTR device, DEVMODE *devmode)
{
- HDC icPrint;
+ HDC icPrint;
- icPrint = CreateIC(driver,device,NULL,devmode);
- if (!icPrint)
- icPrint = CreateIC(driver,device,NULL,devmode);
- /* try once again. Adobe printer drivers sometimes need to be told everything twice */
- return icPrint;
+ icPrint = CreateIC(driver,device,NULL,devmode);
+ if (!icPrint)
+ icPrint = CreateIC(driver,device,NULL,devmode);
+ /* try once again. Adobe printer drivers sometimes need to be told everything twice */
+ return icPrint;
}
#endif
#define GetDeviceCapsWithDefault(icPrint, index, defaullt) (icPrint ? GetDeviceCaps(icPrint, index) : defaullt)
void os_getpagedimensionsC( DEVMODE *devmode, char *device, char *driver,
- int emulateScreenRes,
- int *maxX, int *maxY,
- int *leftPaper, int *topPaper,
- int *rightPaper, int *bottomPaper,
- int *xRes, int *yRes
- )
+ int emulateScreenRes,
+ int *maxX, int *maxY,
+ int *leftPaper, int *topPaper,
+ int *rightPaper, int *bottomPaper,
+ int *xRes, int *yRes
+ )
{
#if 0
- HDC icPrint;
- int horPaperPixels, verPaperPixels,
- xResolution,yResolution,
- scNX, scNY, scDX, scDY;
+ HDC icPrint;
+ int horPaperPixels, verPaperPixels,
+ xResolution,yResolution,
+ scNX, scNY, scDX, scDY;
- icPrint = myCreateIC(driver,device, devmode);
+ icPrint = myCreateIC(driver,device, devmode);
- xResolution = GetDeviceCapsWithDefault(icPrint, LOGPIXELSX, 300);
- yResolution = GetDeviceCapsWithDefault(icPrint, LOGPIXELSY, 300);
- if (emulateScreenRes) /* for emulation of the screen resolution */
- {
+ xResolution = GetDeviceCapsWithDefault(icPrint, LOGPIXELSX, 300);
+ yResolution = GetDeviceCapsWithDefault(icPrint, LOGPIXELSY, 300);
+ if (emulateScreenRes) /* for emulation of the screen resolution */
+ {
scNX = WinGetHorzResolution(); /* all the deviceCaps will be scaled */
- scNY = WinGetVertResolution();
- scDX = xResolution;
- scDY = yResolution;
- }
- else
- { scNX = 1; scNY = 1; scDX = 1; scDY = 1; };
+ scNY = WinGetVertResolution();
+ scDX = xResolution;
+ scDY = yResolution;
+ }
+ else
+ { scNX = 1; scNY = 1; scDX = 1; scDY = 1; };
- horPaperPixels = (GetDeviceCapsWithDefault(icPrint, PHYSICALWIDTH, 2246)*scNX)/scDX;
- verPaperPixels = (GetDeviceCapsWithDefault(icPrint, PHYSICALHEIGHT, 3250)*scNY)/scDY;
+ horPaperPixels = (GetDeviceCapsWithDefault(icPrint, PHYSICALWIDTH, 2246)*scNX)/scDX;
+ verPaperPixels = (GetDeviceCapsWithDefault(icPrint, PHYSICALHEIGHT, 3250)*scNY)/scDY;
- *maxX = (GetDeviceCapsWithDefault(icPrint, HORZRES, 2241)*scNX)/scDX;
- *maxY = (GetDeviceCapsWithDefault(icPrint, VERTRES, 3254)*scNY)/scDY;
+ *maxX = (GetDeviceCapsWithDefault(icPrint, HORZRES, 2241)*scNX)/scDX;
+ *maxY = (GetDeviceCapsWithDefault(icPrint, VERTRES, 3254)*scNY)/scDY;
*leftPaper = (-GetDeviceCapsWithDefault(icPrint, PHYSICALOFFSETX, 116)*scNX)/scDX;
- *topPaper = (-GetDeviceCapsWithDefault(icPrint, PHYSICALOFFSETY, 129)*scNY)/scDY;
- *rightPaper = horPaperPixels - *leftPaper;
- *bottomPaper = verPaperPixels - *topPaper;
-
- if (emulateScreenRes)
- { *xRes = scNX; *yRes = scNY; }
- else
- { *xRes = xResolution ; *yRes = yResolution; };
- DeleteDC(icPrint);
+ *topPaper = (-GetDeviceCapsWithDefault(icPrint, PHYSICALOFFSETY, 129)*scNY)/scDY;
+ *rightPaper = horPaperPixels - *leftPaper;
+ *bottomPaper = verPaperPixels - *topPaper;
+
+ if (emulateScreenRes)
+ { *xRes = scNX; *yRes = scNY; }
+ else
+ { *xRes = xResolution ; *yRes = yResolution; };
+ DeleteDC(icPrint);
#endif
}
static HANDLE setupDevnames(int deviceLength,int driverLength,int outputLength,
- char *device,char *driver,char *output)
+ char *device,char *driver,char *output)
{
- HANDLE hDevnames;
+ HANDLE hDevnames;
#if 0
- DEVNAMES *pDevnames;
- hDevnames = (HANDLE) LocalAlloc(LMEM_MOVEABLE, 16+deviceLength+driverLength+outputLength);
- pDevnames = LocalLock(hDevnames);
- pDevnames->wDriverOffset = 16;
- pDevnames->wDeviceOffset = 16+driverLength;
- pDevnames->wOutputOffset = 16+driverLength+deviceLength;
- pDevnames->wDefault = 0;
- strcpy(((char*)pDevnames)+pDevnames->wDriverOffset, driver);
- strcpy(((char*)pDevnames)+pDevnames->wDeviceOffset, device);
- strcpy(((char*)pDevnames)+pDevnames->wOutputOffset, output);
- LocalUnlock(hDevnames);
+ DEVNAMES *pDevnames;
+ hDevnames = (HANDLE) LocalAlloc(LMEM_MOVEABLE, 16+deviceLength+driverLength+outputLength);
+ pDevnames = LocalLock(hDevnames);
+ pDevnames->wDriverOffset = 16;
+ pDevnames->wDeviceOffset = 16+driverLength;
+ pDevnames->wOutputOffset = 16+driverLength+deviceLength;
+ pDevnames->wDefault = 0;
+ strcpy(((char*)pDevnames)+pDevnames->wDriverOffset, driver);
+ strcpy(((char*)pDevnames)+pDevnames->wDeviceOffset, device);
+ strcpy(((char*)pDevnames)+pDevnames->wOutputOffset, output);
+ LocalUnlock(hDevnames);
#endif
- return hDevnames;
+ return hDevnames;
}
static HANDLE setupDevmode(int size, char *pData)
{
- HANDLE hDevmode;
+ HANDLE hDevmode;
#if 0
- DEVMODE *pDevmode;
+ DEVMODE *pDevmode;
- hDevmode = (HANDLE) LocalAlloc(LMEM_MOVEABLE, size);
- pDevmode = LocalLock(hDevmode);
- memcpy((char*)pDevmode, pData, size);
- LocalUnlock(hDevmode);
+ hDevmode = (HANDLE) LocalAlloc(LMEM_MOVEABLE, size);
+ pDevmode = LocalLock(hDevmode);
+ memcpy((char*)pDevmode, pData, size);
+ LocalUnlock(hDevmode);
#endif
- return hDevmode;
+ return hDevmode;
}
void get_printSetup_with_PRINTDLG(PRINTDLG *pd, char **o_devmode,
- char **o_device, char **o_driver, char **o_output)
+ char **o_device, char **o_driver, char **o_output)
{
#if 0
- char *newDriver, *newDevice, *newOutput;
- DEVMODE *pDevmode;
- DEVNAMES *pDevnames;
-
- pDevmode = LocalLock(pd->hDevMode);
- *o_devmode = g_strdup(pDevmode->dmDeviceName);
- LocalUnlock(pd->hDevMode);
- pDevnames = LocalLock(pd->hDevNames);
- newDriver = ((char*)pDevnames)+(pDevnames->wDriverOffset);
- newDevice = ((char*)pDevnames)+(pDevnames->wDeviceOffset);
- newOutput = ((char*)pDevnames)+(pDevnames->wOutputOffset);
- *o_driver = g_strdup(newDriver);
- *o_device = g_strdup(newDevice);
- *o_output = g_strdup(newOutput);
- LocalUnlock(pd->hDevNames);
+ char *newDriver, *newDevice, *newOutput;
+ DEVMODE *pDevmode;
+ DEVNAMES *pDevnames;
+
+ pDevmode = LocalLock(pd->hDevMode);
+ *o_devmode = g_strdup(pDevmode->dmDeviceName);
+ LocalUnlock(pd->hDevMode);
+ pDevnames = LocalLock(pd->hDevNames);
+ newDriver = ((char*)pDevnames)+(pDevnames->wDriverOffset);
+ newDevice = ((char*)pDevnames)+(pDevnames->wDeviceOffset);
+ newOutput = ((char*)pDevnames)+(pDevnames->wOutputOffset);
+ *o_driver = g_strdup(newDriver);
+ *o_device = g_strdup(newDevice);
+ *o_output = g_strdup(newOutput);
+ LocalUnlock(pd->hDevNames);
#endif
}
/* PA: called in Clean. */
int release_memory_handles(PRINTDLG *pd, int os) {
#if 0
- LocalFree(pd->hDevNames);
- LocalFree(pd->hDevMode);
+ LocalFree(pd->hDevNames);
+ LocalFree(pd->hDevMode);
#endif
- return os;
- }
+ return os;
+ }
/*
* This function hooks the Print dialog. It's purpose is to set the dialog in
@@ -209,66 +209,66 @@ static UINT APIENTRY DialogToFrontHook(HWND hdl, UINT msg, WPARAM wParam, LPARAM
{
#if 0
if (msg==WM_INITDIALOG)
- { SetForegroundWindow(hdl);
- };
+ { SetForegroundWindow(hdl);
+ };
#endif
- return FALSE;
+ return FALSE;
}
void printSetup(int calledFromCleanThread, int devmodeSize,
- char *devmode, char *device, char *driver, char *output,
- int *ok, PRINTDLG **pdPtr)
+ char *devmode, char *device, char *driver, char *output,
+ int *ok, PRINTDLG **pdPtr)
{
#if 0
- int deviceLength, driverLength, outputLength;
- HANDLE hDevnames,hDevmode;
- static PRINTDLG pd;
+ int deviceLength, driverLength, outputLength;
+ HANDLE hDevnames,hDevmode;
+ static PRINTDLG pd;
- /* Set up DEVNAMES structure */
+ /* Set up DEVNAMES structure */
- /*rMessageBox(NULL, MB_APPLMODAL, "in printSetup", ""); */
- deviceLength = strlen(device)+1;
- driverLength = strlen(driver)+1;
- outputLength = strlen(output)+1;
+ /*rMessageBox(NULL, MB_APPLMODAL, "in printSetup", ""); */
+ deviceLength = strlen(device)+1;
+ driverLength = strlen(driver)+1;
+ outputLength = strlen(output)+1;
- hDevnames = setupDevnames(deviceLength,driverLength,outputLength,device,driver,output);
+ hDevnames = setupDevnames(deviceLength,driverLength,outputLength,device,driver,output);
- /* Set up DEVMODE structure */
- hDevmode = setupDevmode(devmodeSize,devmode);
+ /* Set up DEVMODE structure */
+ hDevmode = setupDevmode(devmodeSize,devmode);
- /* Set up print dialog record */
- pd.lStructSize = sizeof(PRINTDLG);
- pd.hwndOwner = calledFromCleanThread ? NULL : ghMainWindow; /* (NULL = desktop) */
+ /* Set up print dialog record */
+ pd.lStructSize = sizeof(PRINTDLG);
+ pd.hwndOwner = calledFromCleanThread ? NULL : ghMainWindow; /* (NULL = desktop) */
/* pd.hwndOwner = NULL; // (NULL = desktop) */
- /*
+ /*
* The handle must belong to the active thread, otherwise PrintDlg
* will crash. When this function is called from the Clean thread,
* ghMainWindow will not belong to the active thread.
*/
- pd.hDevMode = hDevmode;
- pd.hDevNames = hDevnames;
- pd.hDC = NULL;
- pd.Flags = PD_PRINTSETUP | PD_ENABLESETUPHOOK;
- pd.nFromPage = 1;
- pd.nToPage = 1;
- pd.nMinPage = 1;
- pd.nMaxPage = USHRT_MAX;
- pd.nCopies = 1;
- pd.hInstance = NULL;
- pd.lCustData = 0L;
- pd.lpfnPrintHook = NULL;
- pd.lpfnSetupHook = DialogToFrontHook;
- pd.lpPrintTemplateName = NULL;
- pd.lpSetupTemplateName = NULL;
- pd.hPrintTemplate = NULL;
- pd.hSetupTemplate = NULL;
-
- /* Open print dialog */
- *ok = PrintDlg(&pd);
- *pdPtr = &pd;
-
- if (hDevnames!=pd.hDevNames) LocalFree(hDevnames);
- if (hDevmode!=pd.hDevMode) LocalFree(hDevmode);
+ pd.hDevMode = hDevmode;
+ pd.hDevNames = hDevnames;
+ pd.hDC = NULL;
+ pd.Flags = PD_PRINTSETUP | PD_ENABLESETUPHOOK;
+ pd.nFromPage = 1;
+ pd.nToPage = 1;
+ pd.nMinPage = 1;
+ pd.nMaxPage = USHRT_MAX;
+ pd.nCopies = 1;
+ pd.hInstance = NULL;
+ pd.lCustData = 0L;
+ pd.lpfnPrintHook = NULL;
+ pd.lpfnSetupHook = DialogToFrontHook;
+ pd.lpPrintTemplateName = NULL;
+ pd.lpSetupTemplateName = NULL;
+ pd.hPrintTemplate = NULL;
+ pd.hSetupTemplate = NULL;
+
+ /* Open print dialog */
+ *ok = PrintDlg(&pd);
+ *pdPtr = &pd;
+
+ if (hDevnames!=pd.hDevNames) LocalFree(hDevnames);
+ if (hDevmode!=pd.hDevMode) LocalFree(hDevmode);
#endif
}
@@ -276,8 +276,8 @@ void printSetup(int calledFromCleanThread, int devmodeSize,
int startPage(int hdc)
{
#if 0
- /*rMessageBox(NULL, MB_APPLMODAL, "in startPage", ""); */
- return StartPage((HDC) hdc) > 0;
+ /*rMessageBox(NULL, MB_APPLMODAL, "in startPage", ""); */
+ return StartPage((HDC) hdc) > 0;
#else
return 0;
#endif
@@ -286,23 +286,23 @@ int startPage(int hdc)
int endPage(int hdc)
{
#if 0
- /*rMessageBox(NULL, MB_APPLMODAL, "in endPage", ""); */
- return EndPage((HDC) hdc) > 0;
+ /*rMessageBox(NULL, MB_APPLMODAL, "in endPage", ""); */
+ return EndPage((HDC) hdc) > 0;
#else
return 0;
#endif
}
int startDoc(int hdc)
- /* err code: >0:no error, <=0: user cancelled file dialog */
+ /* err code: >0:no error, <=0: user cancelled file dialog */
{
#if 0
- static DOCINFO docInfo = { sizeof (DOCINFO), "Clean", NULL, NULL, 0 } ;
+ static DOCINFO docInfo = { sizeof (DOCINFO), "Clean", NULL, NULL, 0 } ;
- /*rMessageBox(NULL, MB_APPLMODAL, "in startDoc", "");*/
- bUserAbort = FALSE ;
+ /*rMessageBox(NULL, MB_APPLMODAL, "in startDoc", "");*/
+ bUserAbort = FALSE ;
- return StartDoc((HDC) hdc, &docInfo);
+ return StartDoc((HDC) hdc, &docInfo);
#else
return 0;
#endif
@@ -311,27 +311,27 @@ int startDoc(int hdc)
void endDoc(int hdc)
{
#if 0
- /*rMessageBox(NULL, MB_APPLMODAL, "in endDoc", ""); */
- if (bUserAbort)
- AbortDoc((HDC) hdc);
- else
- EndDoc((HDC) hdc);
+ /*rMessageBox(NULL, MB_APPLMODAL, "in endDoc", ""); */
+ if (bUserAbort)
+ AbortDoc((HDC) hdc);
+ else
+ EndDoc((HDC) hdc);
#endif
}
void deleteDC(int hdc)
{
#if 0
- /*rMessageBox(NULL, MB_APPLMODAL, "in deleteDC", ""); */
- DeleteDC((HDC) hdc);
+ /*rMessageBox(NULL, MB_APPLMODAL, "in deleteDC", ""); */
+ DeleteDC((HDC) hdc);
#endif
}
int wasCanceled(void)
{
#if 0
- /*rMessageBox(NULL, MB_APPLMODAL, "in wasCanceled", ""); */
- return bUserAbort;
+ /*rMessageBox(NULL, MB_APPLMODAL, "in wasCanceled", ""); */
+ return bUserAbort;
#else
return 0;
#endif
@@ -343,116 +343,116 @@ int wasCanceled(void)
/* c-strings are passed to this function ! */
void getDC( int doDialog, int emulateScreen, int calledFromCleanThread, int devmodeLength,
- char *devmode,char *device,char *driver,char *output,
- int *err,
- int *first, int *last, int *copies,
- PRINTDLG **ppPrintDlg,
- int *deviceContext
- )
- /* err code: -1:no error, others: non fatal error */
+ char *devmode,char *device,char *driver,char *output,
+ int *err,
+ int *first, int *last, int *copies,
+ PRINTDLG **ppPrintDlg,
+ int *deviceContext
+ )
+ /* err code: -1:no error, others: non fatal error */
{
#if 0
- static PRINTDLG pd;
- HDC hdcPrint;
- int ok;
+ static PRINTDLG pd;
+ HDC hdcPrint;
+ int ok;
- *err = -1;
+ *err = -1;
- if (doDialog)
- { /* Set up print dialog record */
- HANDLE hDevnames, hDevmode;
- int deviceLength,driverLength,outputLength;
+ if (doDialog)
+ { /* Set up print dialog record */
+ HANDLE hDevnames, hDevmode;
+ int deviceLength,driverLength,outputLength;
- deviceLength = strlen(device)+1;
- driverLength = strlen(driver)+1;
- outputLength = strlen(output)+1;
+ deviceLength = strlen(device)+1;
+ driverLength = strlen(driver)+1;
+ outputLength = strlen(output)+1;
- hDevnames = setupDevnames(deviceLength,driverLength,outputLength,
- device,driver,output);
- hDevmode = setupDevmode(devmodeLength,devmode);
+ hDevnames = setupDevnames(deviceLength,driverLength,outputLength,
+ device,driver,output);
+ hDevmode = setupDevmode(devmodeLength,devmode);
- pd.lStructSize = sizeof(PRINTDLG);
- pd.hwndOwner = calledFromCleanThread ? NULL : ghMainWindow; /* (NULL = desktop) */
- /*
+ pd.lStructSize = sizeof(PRINTDLG);
+ pd.hwndOwner = calledFromCleanThread ? NULL : ghMainWindow; /* (NULL = desktop) */
+ /*
* The handle must belong to the active thread, otherwise PrintDlg
* will crash. When this function is called from the Clean thread,
* ghMainWindow will not belong to the active thread.
*/
- pd.hDevMode = hDevmode;
- pd.hDevNames = hDevnames;
- pd.hDC = NULL;
- pd.Flags = PD_ALLPAGES | PD_COLLATE | PD_RETURNDC | PD_NOSELECTION
- | PD_ENABLEPRINTHOOK;
- /* hide some options from print dialog */
- pd.nFromPage = 1;
- pd.nToPage = 1;
- pd.nMinPage = 1;
- pd.nMaxPage = USHRT_MAX;
- pd.nCopies = 1;
- pd.hInstance = NULL;
- pd.lCustData = 0L;
- pd.lpfnPrintHook = DialogToFrontHook;
- pd.lpfnSetupHook = NULL;
- pd.lpPrintTemplateName = NULL;
- pd.lpSetupTemplateName = NULL;
- pd.hPrintTemplate = NULL;
- pd.hSetupTemplate = NULL;
-
- /* Open print dialog */
-
- ok = PrintDlg(&pd);
-
- if (hDevnames!=pd.hDevNames) LocalFree(hDevnames);
- if (hDevmode!=pd.hDevMode) LocalFree(hDevmode);
-
- if (!ok)
- {
- *err = CommDlgExtendedError(); /* will return 0 iff user canceled, otherwise positive value */
- release_memory_handles(&pd, 0);
- return;
- }
-
-
- if (pd.Flags & PD_PAGENUMS)
- { *first = pd.nFromPage;
- *last = pd.nToPage;
- }
- else
- { *first = 1;
- *last = 9999;
- };
- *copies = pd.nCopies;
- *ppPrintDlg = &pd;
- hdcPrint = pd.hDC;
- }
-
- else
-
- {
- hdcPrint = CreateDC(driver, device, output, NULL);
- if (hdcPrint==NULL)
- { *err = 0; /* non fatal error, iff e.g. no printer driver is installed */
- return;
- };
- *first = 1;
- *last = 9999;
- *copies = 1;
- *ppPrintDlg = NULL;
- };
-
- if (emulateScreen)
- { int pXdpi,pYdpi,sXdpi,sYdpi;
- pXdpi = GetDeviceCaps(hdcPrint, LOGPIXELSX);
- pYdpi = GetDeviceCaps(hdcPrint, LOGPIXELSY);
- sXdpi = WinGetHorzResolution();
- sYdpi = WinGetVertResolution();
- SetMapMode(hdcPrint, MM_ISOTROPIC);
- SetWindowExtEx (hdcPrint,sXdpi, sYdpi, NULL);
- SetViewportExtEx(hdcPrint,pXdpi, pYdpi, NULL);
- };
-
- *deviceContext = (int) hdcPrint;
- /*rMessageBox(NULL, MB_APPLMODAL, "leaving getDC","");*/
+ pd.hDevMode = hDevmode;
+ pd.hDevNames = hDevnames;
+ pd.hDC = NULL;
+ pd.Flags = PD_ALLPAGES | PD_COLLATE | PD_RETURNDC | PD_NOSELECTION
+ | PD_ENABLEPRINTHOOK;
+ /* hide some options from print dialog */
+ pd.nFromPage = 1;
+ pd.nToPage = 1;
+ pd.nMinPage = 1;
+ pd.nMaxPage = USHRT_MAX;
+ pd.nCopies = 1;
+ pd.hInstance = NULL;
+ pd.lCustData = 0L;
+ pd.lpfnPrintHook = DialogToFrontHook;
+ pd.lpfnSetupHook = NULL;
+ pd.lpPrintTemplateName = NULL;
+ pd.lpSetupTemplateName = NULL;
+ pd.hPrintTemplate = NULL;
+ pd.hSetupTemplate = NULL;
+
+ /* Open print dialog */
+
+ ok = PrintDlg(&pd);
+
+ if (hDevnames!=pd.hDevNames) LocalFree(hDevnames);
+ if (hDevmode!=pd.hDevMode) LocalFree(hDevmode);
+
+ if (!ok)
+ {
+ *err = CommDlgExtendedError(); /* will return 0 iff user canceled, otherwise positive value */
+ release_memory_handles(&pd, 0);
+ return;
+ }
+
+
+ if (pd.Flags & PD_PAGENUMS)
+ { *first = pd.nFromPage;
+ *last = pd.nToPage;
+ }
+ else
+ { *first = 1;
+ *last = 9999;
+ };
+ *copies = pd.nCopies;
+ *ppPrintDlg = &pd;
+ hdcPrint = pd.hDC;
+ }
+
+ else
+
+ {
+ hdcPrint = CreateDC(driver, device, output, NULL);
+ if (hdcPrint==NULL)
+ { *err = 0; /* non fatal error, iff e.g. no printer driver is installed */
+ return;
+ };
+ *first = 1;
+ *last = 9999;
+ *copies = 1;
+ *ppPrintDlg = NULL;
+ };
+
+ if (emulateScreen)
+ { int pXdpi,pYdpi,sXdpi,sYdpi;
+ pXdpi = GetDeviceCaps(hdcPrint, LOGPIXELSX);
+ pYdpi = GetDeviceCaps(hdcPrint, LOGPIXELSY);
+ sXdpi = WinGetHorzResolution();
+ sYdpi = WinGetVertResolution();
+ SetMapMode(hdcPrint, MM_ISOTROPIC);
+ SetWindowExtEx (hdcPrint,sXdpi, sYdpi, NULL);
+ SetViewportExtEx(hdcPrint,pXdpi, pYdpi, NULL);
+ };
+
+ *deviceContext = (int) hdcPrint;
+ /*rMessageBox(NULL, MB_APPLMODAL, "leaving getDC","");*/
#endif
}
@@ -474,7 +474,7 @@ BOOL CALLBACK PrintDlgProc (HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
return TRUE ;
}
return FALSE;
- }
+ }
BOOL CALLBACK AbortProc (HDC hdcPrn, int iCode)
{
@@ -495,106 +495,106 @@ BOOL CALLBACK AbortProc (HDC hdcPrn, int iCode)
#define DIALOG_WIDTH 100
#define DIALOG_HEIGHT 60
- /* in dialog units */
+ /* in dialog units */
#if 0
HWND CreateCancelDialog(void)
{
- HWND hwndButton,dlgHdl;
-
- WORD *p, *pdlgtemplate,baseunitX,baseunitY;
- int nchar;
- int scrnWidth,scrnHeight;
- int buttonX, buttonY, buttonWidth, buttonHeight;
- int textX, textY, textWidth, textHeight;
- DWORD lStyle,baseunits;
- HDC screen;
- LOGFONT lf;
-
- /* allocate some memory to play with */
- pdlgtemplate = p = (PWORD) rmalloc (1000);
-
- screen = CreateDC ("DISPLAY", NULL, NULL, NULL);
- scrnWidth = GetDeviceCaps (screen, HORZRES);
- scrnHeight = GetDeviceCaps (screen, VERTRES);
- DeleteDC (screen);
- baseunits = GetDialogBaseUnits();
-
- /* start to fill in the dlgtemplate information. addressing by WORDs */
- lStyle = WS_CAPTION | DS_MODALFRAME | WS_SYSMENU;
-
- baseunitX=LOWORD(baseunits);
- baseunitY=HIWORD(baseunits);
-
- *p++ = LOWORD (lStyle);
- *p++ = HIWORD (lStyle);
- *p++ = 0; /* LOWORD (lExtendedStyle) */
- *p++ = 0; /* HIWORD (lExtendedStyle) */
- *p++ = 0; /* NumberOfItems */
- *p++ = ((scrnWidth*4)/3)/baseunitX; /* x */
- *p++ = ((scrnHeight*8)/3)/baseunitY; /* y */
- *p++ = DIALOG_WIDTH; /* cx */
- *p++ = DIALOG_HEIGHT; /* cy */
- *p++ = 0; /* Menu */
- *p++ = 0; /* Class */
-
- /* copy the title of the dialog */
- nchar = NULL; /*nCopyAnsiToWideChar (p, (char *) "Printing in Progress");*/
- p += nchar;
-
- dlgHdl = CreateDialogIndirectParam (ghInst, (LPDLGTEMPLATE) pdlgtemplate, ghMainWindow,
- (DLGPROC) PrintDlgProc, (LPARAM) 0);
-
- rfree(pdlgtemplate);
-
- /* Add a text field */
- textWidth = 19*baseunitX;
- textHeight = baseunitY;
- textX = (((DIALOG_WIDTH*baseunitX)/4) - textWidth)
- / 2;
- textY = (((DIALOG_HEIGHT*baseunitY)/8) - textHeight)
- / 4;
- hwndText = CreateWindow ("static", "",WS_VISIBLE | WS_CHILD | SS_CENTER,
- textX, textY, textWidth, textHeight,
- dlgHdl, (HMENU) 0, ghInst, 0);
-
-
- /* Add a Cancel button: */
- buttonWidth = 10*baseunitX;
- buttonHeight = (3*baseunitY)/2;
- buttonX = (((DIALOG_WIDTH*baseunitX)/4) - buttonWidth)
- / 2;
- buttonY = (3 * (((DIALOG_HEIGHT*baseunitY)/8) - buttonHeight))
- / 5;
- hwndButton = CreateWindow ("button", "Cancel", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
- buttonX, buttonY, buttonWidth, buttonHeight,
- dlgHdl, (HMENU) 0, ghInst, 0);
+ HWND hwndButton,dlgHdl;
+
+ WORD *p, *pdlgtemplate,baseunitX,baseunitY;
+ int nchar;
+ int scrnWidth,scrnHeight;
+ int buttonX, buttonY, buttonWidth, buttonHeight;
+ int textX, textY, textWidth, textHeight;
+ DWORD lStyle,baseunits;
+ HDC screen;
+ LOGFONT lf;
+
+ /* allocate some memory to play with */
+ pdlgtemplate = p = (PWORD) rmalloc (1000);
+
+ screen = CreateDC ("DISPLAY", NULL, NULL, NULL);
+ scrnWidth = GetDeviceCaps (screen, HORZRES);
+ scrnHeight = GetDeviceCaps (screen, VERTRES);
+ DeleteDC (screen);
+ baseunits = GetDialogBaseUnits();
+
+ /* start to fill in the dlgtemplate information. addressing by WORDs */
+ lStyle = WS_CAPTION | DS_MODALFRAME | WS_SYSMENU;
+
+ baseunitX=LOWORD(baseunits);
+ baseunitY=HIWORD(baseunits);
+
+ *p++ = LOWORD (lStyle);
+ *p++ = HIWORD (lStyle);
+ *p++ = 0; /* LOWORD (lExtendedStyle) */
+ *p++ = 0; /* HIWORD (lExtendedStyle) */
+ *p++ = 0; /* NumberOfItems */
+ *p++ = ((scrnWidth*4)/3)/baseunitX; /* x */
+ *p++ = ((scrnHeight*8)/3)/baseunitY; /* y */
+ *p++ = DIALOG_WIDTH; /* cx */
+ *p++ = DIALOG_HEIGHT; /* cy */
+ *p++ = 0; /* Menu */
+ *p++ = 0; /* Class */
+
+ /* copy the title of the dialog */
+ nchar = NULL; /*nCopyAnsiToWideChar (p, (char *) "Printing in Progress");*/
+ p += nchar;
+
+ dlgHdl = CreateDialogIndirectParam (ghInst, (LPDLGTEMPLATE) pdlgtemplate, ghMainWindow,
+ (DLGPROC) PrintDlgProc, (LPARAM) 0);
+
+ rfree(pdlgtemplate);
+
+ /* Add a text field */
+ textWidth = 19*baseunitX;
+ textHeight = baseunitY;
+ textX = (((DIALOG_WIDTH*baseunitX)/4) - textWidth)
+ / 2;
+ textY = (((DIALOG_HEIGHT*baseunitY)/8) - textHeight)
+ / 4;
+ hwndText = CreateWindow ("static", "",WS_VISIBLE | WS_CHILD | SS_CENTER,
+ textX, textY, textWidth, textHeight,
+ dlgHdl, (HMENU) 0, ghInst, 0);
+
+
+ /* Add a Cancel button: */
+ buttonWidth = 10*baseunitX;
+ buttonHeight = (3*baseunitY)/2;
+ buttonX = (((DIALOG_WIDTH*baseunitX)/4) - buttonWidth)
+ / 2;
+ buttonY = (3 * (((DIALOG_HEIGHT*baseunitY)/8) - buttonHeight))
+ / 5;
+ hwndButton = CreateWindow ("button", "Cancel", WS_VISIBLE | WS_CHILD | BS_PUSHBUTTON,
+ buttonX, buttonY, buttonWidth, buttonHeight,
+ dlgHdl, (HMENU) 0, ghInst, 0);
/* WinSetFont (&lf,"MS Sans Serif",0,8); */
- SendMessage(hwndButton,WM_SETFONT,(WPARAM)CreateFontIndirect (&lf),MAKELPARAM (TRUE,0));
- SendMessage(hwndText,WM_SETFONT,(WPARAM)CreateFontIndirect (&lf),MAKELPARAM (TRUE,0));
+ SendMessage(hwndButton,WM_SETFONT,(WPARAM)CreateFontIndirect (&lf),MAKELPARAM (TRUE,0));
+ SendMessage(hwndText,WM_SETFONT,(WPARAM)CreateFontIndirect (&lf),MAKELPARAM (TRUE,0));
- ShowWindow (dlgHdl,SW_SHOWNORMAL);
- return dlgHdl;
+ ShowWindow (dlgHdl,SW_SHOWNORMAL);
+ return dlgHdl;
}
#endif
/* PA: Called in Clean. */
int addSemaphor(int add)
{
- int old=semaphor;
- semaphor+=add;
- return old;
+ int old=semaphor;
+ semaphor+=add;
+ return old;
}
int os_printsetupvalidC(DEVMODE *devmode, char *device, char *driver)
{
#if 0
- HDC icPrint;
+ HDC icPrint;
- icPrint = myCreateIC(driver,device,devmode);
- if (icPrint)
- DeleteDC(icPrint);
- return icPrint!=NULL;
+ icPrint = myCreateIC(driver,device,devmode);
+ if (icPrint)
+ DeleteDC(icPrint);
+ return icPrint!=NULL;
#else
return 0;
#endif