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
26 #include "wine/debug.h"
28 WINE_DEFAULT_DEBUG_CHANNEL(driver
);
31 /************************************************************************
34 INT WINAPI
Escape( HDC hdc
, INT escape
, INT in_count
, LPCSTR in_data
, LPVOID out_data
)
42 return AbortDoc( hdc
);
49 pt
->x
= GetDeviceCaps( hdc
, PHYSICALWIDTH
);
50 pt
->y
= GetDeviceCaps( hdc
, PHYSICALHEIGHT
);
53 case GETPRINTINGOFFSET
:
55 pt
->x
= GetDeviceCaps( hdc
, PHYSICALOFFSETX
);
56 pt
->y
= GetDeviceCaps( hdc
, PHYSICALOFFSETY
);
59 case GETSCALINGFACTOR
:
61 pt
->x
= GetDeviceCaps( hdc
, SCALINGFACTORX
);
62 pt
->y
= GetDeviceCaps( hdc
, SCALINGFACTORY
);
66 return EndPage( hdc
);
69 return SetAbortProc( hdc
, (ABORTPROC
)in_data
);
76 /* in_data may not be 0 terminated so we must copy it */
79 name
= HeapAlloc( GetProcessHeap(), 0, in_count
+1 );
80 memcpy( name
, in_data
, in_count
);
83 /* out_data is actually a pointer to the DocInfo structure and used as
84 * a second input parameter */
85 if (out_data
) doc
= *(DOCINFOA
*)out_data
;
88 doc
.cbSize
= sizeof(doc
);
89 doc
.lpszOutput
= NULL
;
90 doc
.lpszDatatype
= NULL
;
93 doc
.lpszDocName
= name
;
94 ret
= StartDocA( hdc
, &doc
);
95 if (name
) HeapFree( GetProcessHeap(), 0, name
);
96 if (ret
> 0) ret
= StartPage( hdc
);
100 case QUERYESCSUPPORT
:
102 INT
*ptr
= (INT
*)in_data
;
103 if (in_count
< sizeof(INT
)) return 0;
108 case GETPHYSPAGESIZE
:
109 case GETPRINTINGOFFSET
:
110 case GETSCALINGFACTOR
:
112 case QUERYESCSUPPORT
:
121 /* if not handled internally, pass it to the driver */
122 return ExtEscape( hdc
, escape
, in_count
, in_data
, 0, out_data
);
126 /******************************************************************************
127 * ExtEscape [GDI32.@]
130 * hdc [I] Handle to device context
131 * nEscape [I] Escape function
132 * cbInput [I] Number of bytes in input structure
133 * lpszInData [I] Pointer to input structure
134 * cbOutput [I] Number of bytes in output structure
135 * lpszOutData [O] Pointer to output structure
142 INT WINAPI
ExtEscape( HDC hdc
, INT nEscape
, INT cbInput
, LPCSTR lpszInData
,
143 INT cbOutput
, LPSTR lpszOutData
)
146 DC
* dc
= DC_GetDCPtr( hdc
);
149 if (dc
->funcs
->pExtEscape
)
150 ret
= dc
->funcs
->pExtEscape( dc
->physDev
, nEscape
, cbInput
, lpszInData
, cbOutput
, lpszOutData
);
151 GDI_ReleaseObj( hdc
);
157 /*******************************************************************
158 * DrawEscape [GDI32.@]
162 INT WINAPI
DrawEscape(HDC hdc
, INT nEscape
, INT cbInput
, LPCSTR lpszInData
)
164 FIXME("DrawEscape, stub\n");