4 * Copyright 1994 Bob Amstadt
5 * Copyright 2001 Alexandre Julliard
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with this library; if not, write to the Free Software
19 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
28 #include "wine/debug.h"
30 WINE_DEFAULT_DEBUG_CHANNEL(driver);
33 /************************************************************************
36 INT WINAPI Escape( HDC hdc, INT escape, INT in_count, LPCSTR in_data, LPVOID out_data )
44 return AbortDoc( hdc );
51 pt->x = GetDeviceCaps( hdc, PHYSICALWIDTH );
52 pt->y = GetDeviceCaps( hdc, PHYSICALHEIGHT );
55 case GETPRINTINGOFFSET:
57 pt->x = GetDeviceCaps( hdc, PHYSICALOFFSETX );
58 pt->y = GetDeviceCaps( hdc, PHYSICALOFFSETY );
61 case GETSCALINGFACTOR:
63 pt->x = GetDeviceCaps( hdc, SCALINGFACTORX );
64 pt->y = GetDeviceCaps( hdc, SCALINGFACTORY );
68 return EndPage( hdc );
71 return SetAbortProc( hdc, (ABORTPROC)in_data );
78 /* in_data may not be 0 terminated so we must copy it */
81 name = HeapAlloc( GetProcessHeap(), 0, in_count+1 );
82 memcpy( name, in_data, in_count );
85 /* out_data is actually a pointer to the DocInfo structure and used as
86 * a second input parameter */
87 if (out_data) doc = *(DOCINFOA *)out_data;
90 doc.cbSize = sizeof(doc);
91 doc.lpszOutput = NULL;
92 doc.lpszDatatype = NULL;
95 doc.lpszDocName = name;
96 ret = StartDocA( hdc, &doc );
97 if (name) HeapFree( GetProcessHeap(), 0, name );
98 if (ret > 0) ret = StartPage( hdc );
102 case QUERYESCSUPPORT:
104 INT *ptr = (INT *)in_data;
105 if (in_count < sizeof(INT)) return 0;
110 case GETPHYSPAGESIZE:
111 case GETPRINTINGOFFSET:
112 case GETSCALINGFACTOR:
114 case QUERYESCSUPPORT:
123 /* if not handled internally, pass it to the driver */
124 return ExtEscape( hdc, escape, in_count, in_data, 0, out_data );
128 /******************************************************************************
129 * ExtEscape [GDI32.@]
132 * hdc [I] Handle to device context
133 * nEscape [I] Escape function
134 * cbInput [I] Number of bytes in input structure
135 * lpszInData [I] Pointer to input structure
136 * cbOutput [I] Number of bytes in output structure
137 * lpszOutData [O] Pointer to output structure
144 INT WINAPI ExtEscape( HDC hdc, INT nEscape, INT cbInput, LPCSTR lpszInData,
145 INT cbOutput, LPSTR lpszOutData )
148 DC * dc = DC_GetDCPtr( hdc );
151 if (dc->funcs->pExtEscape)
152 ret = dc->funcs->pExtEscape( dc->physDev, nEscape, cbInput, lpszInData, cbOutput, lpszOutData );
153 GDI_ReleaseObj( hdc );
159 /*******************************************************************
160 * DrawEscape [GDI32.@]
164 INT WINAPI DrawEscape(HDC hdc, INT nEscape, INT cbInput, LPCSTR lpszInData)
166 FIXME("DrawEscape, stub\n");