summaryrefslogtreecommitdiff
path: root/src/win32/cdwprn.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/win32/cdwprn.c')
-rw-r--r--src/win32/cdwprn.c41
1 files changed, 31 insertions, 10 deletions
diff --git a/src/win32/cdwprn.c b/src/win32/cdwprn.c
index 95e4aca..1b3e1e0 100644
--- a/src/win32/cdwprn.c
+++ b/src/win32/cdwprn.c
@@ -28,6 +28,9 @@ static void cdkillcanvas (cdCtxCanvas *ctxcanvas)
cdwKillCanvas(ctxcanvas);
DeleteDC(ctxcanvas->hDC);
+
+ if (ctxcanvas->filename)
+ free(ctxcanvas->filename);
memset(ctxcanvas, 0, sizeof(cdCtxCanvas));
free(ctxcanvas);
@@ -46,6 +49,18 @@ static void cdflush(cdCtxCanvas *ctxcanvas)
cdwRestoreDC(ctxcanvas);
}
+static char* get_printername_attrib(cdCtxCanvas* ctxcanvas)
+{
+ return ctxcanvas->filename;
+}
+
+static cdAttribute printername_attrib =
+{
+ "PRINTERNAME",
+ NULL,
+ get_printername_attrib
+};
+
/*
%F cdCreateCanvas para Impresora.
Usa a impressora default.
@@ -123,24 +138,30 @@ static void cdcreatecanvas(cdCanvas* canvas, void *data)
canvas->w = GetDeviceCaps(hDC, HORZRES);
canvas->h = GetDeviceCaps(hDC, VERTRES);
- canvas->w_mm = (double) GetDeviceCaps(hDC, HORZSIZE);
- canvas->h_mm = (double) GetDeviceCaps(hDC, VERTSIZE);
+ canvas->w_mm = (double)GetDeviceCaps(hDC, HORZSIZE);
+ canvas->h_mm = (double)GetDeviceCaps(hDC, VERTSIZE);
canvas->bpp = GetDeviceCaps(hDC, BITSPIXEL);
- canvas->xres = canvas->w / canvas->w_mm;
- canvas->yres = canvas->h / canvas->h_mm;
+ canvas->xres = (double)canvas->w / canvas->w_mm;
+ canvas->yres = (double)canvas->h / canvas->h_mm;
ctxcanvas->clip_pnt[2].x = ctxcanvas->clip_pnt[1].x = canvas->w - 1;
ctxcanvas->clip_pnt[3].y = ctxcanvas->clip_pnt[2].y = canvas->h - 1;
- /* PDF Writer returns bpp=1, so we check if color is supported and overwrite this value */
- if (canvas->bpp==1 && pd.hDevNames)
+ if (pd.hDevNames)
{
unsigned char* devnames = (unsigned char*)GlobalLock(pd.hDevNames);
DEVNAMES* dn = (DEVNAMES*)devnames;
- char* name = (char*)(devnames + dn->wDeviceOffset);
- char* port = (char*)(devnames + dn->wOutputOffset);
+ char* device = (char*)(devnames + dn->wDeviceOffset);
+
+ ctxcanvas->filename = cdStrDup(device);
+ cdRegisterAttribute(canvas, &printername_attrib);
- if (DeviceCapabilities(name, port, DC_COLORDEVICE, NULL, NULL))
- canvas->bpp = 24;
+ /* PDF Writer returns bpp=1, so we check if color is supported and overwrite this value */
+ if (canvas->bpp==1)
+ {
+ char* port = (char*)(devnames + dn->wOutputOffset);
+ if (DeviceCapabilities(device, port, DC_COLORDEVICE, NULL, NULL))
+ canvas->bpp = 24;
+ }
GlobalUnlock(pd.hDevNames);
}