source: trunk/src/gdi32/gdi32.cpp@ 1533

Last change on this file since 1533 was 1533, checked in by achimha, 26 years ago

Added DIB changes from Markus Montkowski to return initalized DIB structure + various bug fixes in DIB handling

File size: 127.5 KB
Line 
1/* $Id: gdi32.cpp,v 1.12 1999-10-31 21:38:17 achimha Exp $ */
2
3/*
4 * GDI32 apis
5 *
6 * Copyright 1998 Sander van Leeuwen (sandervl@xs4all.nl)
7 * Copyright 1998 Patrick Haller
8 *
9 * Project Odin Software License can be found in LICENSE.TXT
10 *
11 */
12#include <os2win.h>
13#include <stdlib.h>
14#include <stdarg.h>
15#include <string.h>
16#include "misc.h"
17#include "callback.h"
18#include "unicode.h"
19#include "dibsect.h"
20
21
22typedef struct _POLYTEXTA
23{
24 int x;
25 int y;
26 UINT n;
27 LPCSTR lpstr;
28 UINT uiFlags;
29 RECT rcl;
30 int *pdx;
31} POLYTEXTA;
32
33
34typedef struct _POLYTEXTW
35{
36 int x;
37 int y;
38 UINT n;
39 LPCWSTR lpstr;
40 UINT uiFlags;
41 RECT rcl;
42 int *pdx;
43} POLYTEXTW;
44
45
46static ULONG QueryPaletteSize(BITMAPINFOHEADER *pBHdr)
47{
48 ULONG cbPalette;
49
50 switch (pBHdr->biBitCount)
51 {
52 case 1:
53 case 4:
54 case 8:
55 cbPalette = (1 << pBHdr->biBitCount) * sizeof(RGBQUAD);
56 break;
57
58 case 16:
59 case 24:
60 case 32:
61 cbPalette = 0;
62 break;
63
64 default:
65 dprintf(("QueryPaletteSize: error pBHdr->biBitCount = %d", pBHdr->biBitCount));
66 cbPalette = -1;
67 }
68
69 return cbPalette;
70}
71
72static ULONG CalcBitmapSize(ULONG cBits, LONG cx, LONG cy)
73{
74 ULONG alignment;
75 ULONG factor;
76 BOOL flag = TRUE; //true: '*' false: '/'
77
78 cy = cy < 0 ? -cy : cy;
79
80 switch(cBits)
81 {
82 case 1:
83 factor = 8;
84 flag = FALSE;
85 break;
86
87 case 4:
88 factor = 2;
89 flag = FALSE;
90 break;
91
92 case 8:
93 factor = 1;
94 break;
95
96 case 16:
97 factor = 2;
98 break;
99
100 case 24:
101 factor = 3;
102 break;
103
104 case 32:
105 return cx*cy;
106
107 default:
108 return 0;
109 }
110
111 if (flag)
112 alignment = (cx = (cx*factor)) % 4;
113 else
114 alignment = (cx = ((cx+factor-1)/factor)) % 4;
115
116 if (alignment != 0)
117 cx += 4 - alignment;
118
119 return cx*cy;
120}
121
122//******************************************************************************
123//******************************************************************************
124BOOL WIN32API GetTextExtentPointA(HDC hdc, LPCSTR lpsz, int cbString, LPSIZE lpSize)
125{
126 BOOL rc;
127
128 lpSize->cx = lpSize->cy = 0;
129 rc = O32_GetTextExtentPoint(hdc, lpsz, cbString, lpSize);
130 dprintf(("GDI32: GetTextExtentPointA of %s returned %d\n", lpsz, rc));
131 return(rc);
132}
133//******************************************************************************
134//******************************************************************************
135COLORREF WIN32API SetBkColor(HDC hdc, COLORREF crColor)
136{
137 dprintf(("GDI32: SetBkColor to %X\n", crColor));
138 return(O32_SetBkColor(hdc, crColor));
139}
140//******************************************************************************
141//******************************************************************************
142COLORREF WIN32API SetTextColor(HDC hdc, COLORREF crColor)
143{
144 COLORREF clr;
145
146 clr = O32_SetTextColor(hdc, crColor);
147 dprintf(("GDI32: SetTextColor from %X to %X\n", clr, crColor));
148 return(clr);
149}
150//******************************************************************************
151//******************************************************************************
152BOOL WIN32API TextOutA(HDC hdc, int nXStart, int nYStart,
153 LPCSTR lpszString, int cbString)
154{
155 BOOL rc;
156
157 rc = O32_TextOut(hdc, nXStart, nYStart, lpszString, cbString);
158 dprintf(("GDI32: TextOut %s returned %d\n", lpszString, rc));
159 return(rc);
160}
161//******************************************************************************
162//******************************************************************************
163HGDIOBJ WIN32API GetStockObject(int arg1)
164{
165 HGDIOBJ obj;
166
167 switch(arg1) {
168 case DEFAULT_GUI_FONT:
169 obj = NULL;
170 break;
171 default:
172 obj = O32_GetStockObject(arg1);
173 break;
174 }
175 dprintf(("GDI32: GetStockObject %d returned %X\n", arg1, obj));
176 return(obj);
177}
178//******************************************************************************
179//******************************************************************************
180UINT WIN32API RealizePalette( HDC arg1)
181{
182 dprintf(("GDI32: RealizePalette\n"));
183 return O32_RealizePalette(arg1);
184}
185//******************************************************************************
186//******************************************************************************
187int WIN32API GetObjectA( HGDIOBJ arg1, int arg2, void * arg3)
188{
189
190 if(DIBSection::getSection() != NULL)
191 {
192 DIBSection *dsect = DIBSection::find(arg1);
193 if(dsect)
194 {
195 return dsect->GetDIBSection(arg2, (DIBSECTION*)arg3);
196 }
197 }
198
199 dprintf(("GDI32: GetObject %X %X %X\n", arg1, arg2, arg3));
200 return O32_GetObject(arg1, arg2, arg3);
201}
202//******************************************************************************
203//******************************************************************************
204DWORD WIN32API GetObjectType( HGDIOBJ arg1)
205{
206 dprintf(("GDI32: GetObjectType\n"));
207 return O32_GetObjectType(arg1);
208}
209//******************************************************************************
210//******************************************************************************
211BOOL WIN32API DeleteObject(HANDLE hObj)
212{
213 dprintf(("GDI32: DeleteObject\n"));
214 DIBSection::deleteSection((DWORD)hObj);
215 return O32_DeleteObject(hObj);
216}
217//******************************************************************************
218//******************************************************************************
219BOOL WIN32API DeleteDC( HDC arg1)
220{
221 dprintf(("GDI32: DeleteDC\n"));
222 return O32_DeleteDC(arg1);
223}
224//******************************************************************************
225//******************************************************************************
226HPALETTE WIN32API CreatePalette( const LOGPALETTE * arg1)
227{
228 dprintf(("GDI32: CreatePalette\n"));
229 return O32_CreatePalette(arg1);
230}
231//******************************************************************************
232//******************************************************************************
233HBRUSH WIN32API CreatePatternBrush(HBITMAP arg1)
234{
235 HBRUSH brush;
236
237 brush = O32_CreatePatternBrush(arg1);
238 dprintf(("GDI32: CreatePatternBrush from bitmap %X returned %X\n", arg1, brush));
239 return(brush);
240}
241//******************************************************************************
242//******************************************************************************
243HPEN WIN32API CreatePen( int arg1, int arg2, COLORREF arg3)
244{
245 dprintf(("GDI32: CreatePen\n"));
246 return O32_CreatePen(arg1, arg2, arg3);
247}
248//******************************************************************************
249//******************************************************************************
250HPEN WIN32API CreatePenIndirect( const LOGPEN * arg1)
251{
252 dprintf(("GDI32: CreatePenIndirect\n"));
253 return O32_CreatePenIndirect(arg1);
254}
255//******************************************************************************
256//******************************************************************************
257HRGN WIN32API CreatePolyPolygonRgn( const POINT * arg1, const INT * arg2, int arg3, int arg4)
258{
259 dprintf(("GDI32: CreatePolyPolygonRgn\n"));
260 return O32_CreatePolyPolygonRgn(arg1, arg2, arg3, arg4);
261}
262//******************************************************************************
263//******************************************************************************
264HRGN WIN32API CreatePolygonRgn(const POINT * arg1, int arg2, int arg3)
265{
266 dprintf(("GDI32: CreatePolygonRgn"));
267 return O32_CreatePolygonRgn(arg1, arg2, arg3);
268}
269//******************************************************************************
270//******************************************************************************
271HBRUSH WIN32API CreateDIBPatternBrushPt( const VOID * arg1, UINT arg2)
272{
273 dprintf(("GDI32: CreateDIBPatternBrushPt\n"));
274 return O32_CreateDIBPatternBrushPt(arg1, arg2);
275}
276//******************************************************************************
277//******************************************************************************
278HBITMAP WIN32API CreateDIBitmap(HDC arg1, const BITMAPINFOHEADER * arg2, DWORD arg3, const void * arg4, const BITMAPINFO * arg5, UINT arg6)
279{
280 dprintf(("GDI32: CreateDIBitmap\n"));
281 return O32_CreateDIBitmap(arg1, arg2, arg3, arg4, arg5, arg6);
282}
283//******************************************************************************
284//******************************************************************************
285HBITMAP WIN32API CreateCompatibleBitmap( HDC arg1, int arg2, int arg3)
286{
287 dprintf(("GDI32: CreateCompatibleBitmap\n"));
288 return O32_CreateCompatibleBitmap(arg1, arg2, arg3);
289}
290//******************************************************************************
291//******************************************************************************
292HDC WIN32API CreateCompatibleDC( HDC arg1)
293{
294 dprintf(("GDI32: CreateCompatibleDC %X\n", arg1));
295 return O32_CreateCompatibleDC(arg1);
296}
297//******************************************************************************
298//******************************************************************************
299int WIN32API StretchDIBits( HDC arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9, const void * arg10, const BITMAPINFO *arg11, UINT arg12, DWORD arg13)
300{
301 dprintf(("GDI32: StretchDIBits\n"));
302 return O32_StretchDIBits(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, (void *)arg10, (PBITMAPINFO)arg11, arg12, arg13);
303}
304//******************************************************************************
305//******************************************************************************
306BOOL WIN32API StretchBlt(HDC hdcDest, int nXOriginDest, int nYOriginDest,
307 int nWidthDest, int nHeightDest,
308 HDC hdcSrc, int nXOriginSrc, int nYOriginSrc,
309 int nWidthSrc, int nHeightSrc, DWORD dwRop)
310{
311 dprintf(("GDI32: StretchBlt Dest: (%d, %d) size (%d, %d)\n", nXOriginDest, nYOriginDest, nWidthDest, nHeightDest));
312 dprintf(("GDI32: StretchBlt Src : (%d, %d) size (%d, %d)\n", nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc));
313 return O32_StretchBlt(hdcDest, nXOriginDest, nYOriginDest, nWidthDest, nHeightDest, hdcSrc, nXOriginSrc, nYOriginSrc, nWidthSrc, nHeightSrc, dwRop);
314}
315//******************************************************************************
316//******************************************************************************
317BOOL WIN32API StrokeAndFillPath( HDC arg1)
318{
319 dprintf(("GDI32: StrokeAndFillPath\n"));
320 return O32_StrokeAndFillPath(arg1);
321}
322//******************************************************************************
323//******************************************************************************
324BOOL WIN32API StrokePath( HDC arg1)
325{
326 dprintf(("GDI32: StrokePath\n"));
327 return O32_StrokePath(arg1);
328}
329//******************************************************************************
330//******************************************************************************
331int WIN32API SetStretchBltMode( HDC arg1, int arg2)
332{
333 dprintf(("GDI32: SetStretchBltMode\n"));
334 return O32_SetStretchBltMode(arg1, arg2);
335}
336//******************************************************************************
337//******************************************************************************
338HGDIOBJ WIN32API SelectObject(HDC hdc, HGDIOBJ hObj)
339{
340 HGDIOBJ rc;
341
342//// dprintf(("GDI32: SelectObject\n"));
343
344 if(DIBSection::getSection() != NULL) {
345 DIBSection *dsect;
346
347 dsect = DIBSection::find(hdc);
348 if(dsect) {//remove previously selected dibsection
349 dsect->UnSelectDIBObject();
350 }
351 dsect = DIBSection::find((DWORD)hObj);
352 if(dsect) {
353 dsect->SelectDIBObject(hdc);
354 }
355 }
356 rc = O32_SelectObject(hdc, hObj);
357 if(rc != 0 && DIBSection::getSection != NULL) {
358 DIBSection *dsect = DIBSection::find((DWORD)rc);
359 if(dsect) {
360 dsect->UnSelectDIBObject();
361 }
362 }
363 return(rc);
364}
365//******************************************************************************
366//******************************************************************************
367HPALETTE WIN32API SelectPalette(HDC arg1, HPALETTE arg2, BOOL arg3)
368{
369 dprintf(("GDI32: SelectPalette\n"));
370 return O32_SelectPalette(arg1, arg2, arg3);
371}
372//******************************************************************************
373//******************************************************************************
374int WIN32API SetBkMode( HDC arg1, int arg2)
375{
376 dprintf(("GDI32: SetBkMode\n"));
377 return O32_SetBkMode(arg1, arg2);
378}
379//******************************************************************************
380//******************************************************************************
381BOOL WIN32API ExtTextOutA(HDC hdc, int X, int Y, UINT fuOptions, CONST RECT *lprc,
382 LPCSTR lpszString, UINT cbCount, CONST INT *lpDx)
383{
384 if(lpszString && strlen(lpszString) > cbCount)
385 ((LPSTR)lpszString)[cbCount] = 0;
386 dprintf(("GDI32: ExtTextOutA %s\n", lpszString));
387 return(O32_ExtTextOut(hdc, X, Y, fuOptions, lprc, lpszString, cbCount, lpDx));
388}
389//******************************************************************************
390//******************************************************************************
391COLORREF WIN32API GetPixel( HDC arg1, int arg2, int arg3)
392{
393//// dprintf(("GDI32: GetPixel\n"));
394 return O32_GetPixel(arg1, arg2, arg3);
395}
396//******************************************************************************
397//******************************************************************************
398COLORREF WIN32API SetPixel( HDC arg1, int arg2, int arg3, COLORREF arg4)
399{
400//// dprintf(("GDI32: SetPixel\n"));
401 return O32_SetPixel(arg1, arg2, arg3, arg4);
402}
403//******************************************************************************
404//Faster version of SetPixel (since it doesn't need to return the original color)
405//Just use SetPixel for now
406//******************************************************************************
407BOOL WIN32API SetPixelV(HDC arg1, int arg2, int arg3, COLORREF arg4)
408{
409 COLORREF rc;
410
411//// dprintf(("GDI32: SetPixelV\n"));
412 rc = O32_SetPixel(arg1, arg2, arg3, arg4);
413 if(rc == GDI_ERROR) // || rc == COLOR_INVALID)
414 return(FALSE);
415 return(TRUE);
416}
417//******************************************************************************
418//******************************************************************************
419BOOL WIN32API GetDCOrgEx(HDC arg1, PPOINT arg2)
420{
421 dprintf(("GDI32: GetDCOrgEx\n"));
422 return O32_GetDCOrgEx(arg1, arg2);
423}
424//******************************************************************************
425//******************************************************************************
426BOOL WIN32API GetWindowExtEx(HDC arg1, PSIZE arg2)
427{
428 dprintf(("GDI32: GetWindowExtEx\n"));
429 return O32_GetWindowExtEx(arg1, arg2);
430}
431//******************************************************************************
432//******************************************************************************
433int WIN32API AbortDoc( HDC arg1)
434{
435 dprintf(("GDI32: OS2AbortDoc"));
436 return O32_AbortDoc(arg1);
437}
438//******************************************************************************
439//******************************************************************************
440BOOL WIN32API AbortPath( HDC arg1)
441{
442 dprintf(("GDI32: OS2AbortPath"));
443 return O32_AbortPath(arg1);
444}
445//******************************************************************************
446//******************************************************************************
447BOOL WIN32API AngleArc( HDC arg1, int arg2, int arg3, DWORD arg4, float arg5, float arg6)
448{
449 dprintf(("GDI32: OS2AngleArc"));
450 return O32_AngleArc(arg1, arg2, arg3, arg4, arg5, arg6);
451}
452//******************************************************************************
453//******************************************************************************
454BOOL WIN32API AnimatePalette( HPALETTE arg1, UINT arg2, UINT arg3, const PALETTEENTRY * arg4)
455{
456 dprintf(("GDI32: OS2AnimatePalette"));
457 return O32_AnimatePalette(arg1, arg2, arg3, arg4);
458}
459//******************************************************************************
460//******************************************************************************
461BOOL WIN32API Arc( HDC arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9)
462{
463 dprintf(("GDI32: OS2Arc"));
464 return O32_Arc(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
465}
466//******************************************************************************
467//******************************************************************************
468BOOL WIN32API ArcTo( HDC arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9)
469{
470 dprintf(("GDI32: OS2ArcTo"));
471 return O32_ArcTo(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
472}
473//******************************************************************************
474//******************************************************************************
475BOOL WIN32API BeginPath( HDC arg1)
476{
477 dprintf(("GDI32: OS2BeginPath"));
478 return O32_BeginPath(arg1);
479}
480//******************************************************************************
481//******************************************************************************
482BOOL WIN32API BitBlt(HDC hdcDest, int arg2, int arg3, int arg4, int arg5, HDC hdcSrc, int arg7, int arg8, DWORD arg9)
483{
484 if(DIBSection::getSection() != NULL) {
485 DIBSection *dsect = DIBSection::findHDC(hdcSrc);
486 if(dsect) {
487 return(dsect->BitBlt(hdcDest, O32_WindowFromDC(hdcDest), arg2, arg3, arg4,
488 arg5, arg7, arg8, arg9));
489 }
490 }
491 dprintf(("GDI32: OS2BitBlt to hdc %X from (%d,%d) to (%d,%d), (%d,%d) rop %X\n", hdcDest, arg7, arg8, arg2, arg3, arg4, arg5, arg9));
492 return O32_BitBlt(hdcDest, arg2, arg3, arg4, arg5, hdcSrc, arg7, arg8, arg9);
493}
494//******************************************************************************
495//******************************************************************************
496BOOL WIN32API Chord( HDC arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7, int arg8, int arg9)
497{
498 dprintf(("GDI32: OS2Chord"));
499 return O32_Chord(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9);
500}
501//******************************************************************************
502//******************************************************************************
503HENHMETAFILE WIN32API CloseEnhMetaFile( HDC arg1)
504{
505 dprintf(("GDI32: OS2CloseEnhMetaFile"));
506 return O32_CloseEnhMetaFile(arg1);
507}
508//******************************************************************************
509//******************************************************************************
510BOOL WIN32API CloseFigure( HDC arg1)
511{
512 dprintf(("GDI32: OS2CloseFigure"));
513 return O32_CloseFigure(arg1);
514}
515//******************************************************************************
516//******************************************************************************
517HMETAFILE WIN32API CloseMetaFile( HDC arg1)
518{
519 dprintf(("GDI32: OS2CloseMetaFile"));
520 return O32_CloseMetaFile(arg1);
521}
522//******************************************************************************
523//******************************************************************************
524int WIN32API CombineRgn( HRGN arg1, HRGN arg2, HRGN arg3, int arg4)
525{
526 dprintf(("GDI32: OS2CombineRgn"));
527 return O32_CombineRgn(arg1, arg2, arg3, arg4);
528}
529//******************************************************************************
530//******************************************************************************
531HENHMETAFILE WIN32API CopyEnhMetaFileA( HENHMETAFILE arg1, LPCSTR arg2)
532{
533 dprintf(("GDI32: OS2CopyEnhMetaFileA"));
534 return O32_CopyEnhMetaFile(arg1, arg2);
535}
536//******************************************************************************
537//******************************************************************************
538HENHMETAFILE WIN32API CopyEnhMetaFileW( HENHMETAFILE arg1, LPCWSTR arg2)
539{
540 char *astring = UnicodeToAsciiString((LPWSTR)arg2);
541 HENHMETAFILE rc;
542
543 dprintf(("GDI32: OS2CopyEnhMetaFileW"));
544 rc = O32_CopyEnhMetaFile(arg1, astring);
545 FreeAsciiString(astring);
546 return rc;
547}
548//******************************************************************************
549//******************************************************************************
550HMETAFILE WIN32API CopyMetaFileA( HMETAFILE arg1, LPCSTR arg2)
551{
552 dprintf(("GDI32: OS2CopyMetaFileA"));
553 return O32_CopyMetaFile(arg1, arg2);
554}
555//******************************************************************************
556//******************************************************************************
557HMETAFILE WIN32API CopyMetaFileW( HMETAFILE arg1, LPCWSTR arg2)
558{
559 char *astring = UnicodeToAsciiString((LPWSTR)arg2);
560 HMETAFILE rc;
561
562 dprintf(("GDI32: OS2CopyMetaFileW"));
563 rc = O32_CopyMetaFile(arg1, astring);
564 FreeAsciiString(astring);
565 return rc;
566}
567//******************************************************************************
568//******************************************************************************
569HBITMAP WIN32API CreateBitmap(int nWidth, int nHeight, UINT cPlanes,
570 UINT cBitsPerPel, const void *lpvBits)
571{
572 HBITMAP rc;
573
574 rc = O32_CreateBitmap(nWidth, nHeight, cPlanes, cBitsPerPel, lpvBits);
575 dprintf(("GDI32: OS2CreateBitmap (%d,%d) bps %d returned %d\n", nWidth, nHeight, cBitsPerPel, rc));
576 return(rc);
577}
578//******************************************************************************
579//******************************************************************************
580HBITMAP WIN32API CreateBitmapIndirect( const BITMAP * arg1)
581{
582 dprintf(("GDI32: OS2CreateBitmapIndirect"));
583 return O32_CreateBitmapIndirect(arg1);
584}
585//******************************************************************************
586//******************************************************************************
587HBRUSH WIN32API CreateBrushIndirect( const LOGBRUSH * arg1)
588{
589 dprintf(("GDI32: OS2CreateBrushIndirect"));
590 return O32_CreateBrushIndirect((LPLOGBRUSH)arg1);
591}
592//******************************************************************************
593//******************************************************************************
594HDC WIN32API CreateDCA( LPCSTR arg1, LPCSTR arg2, LPCSTR arg3, const DEVMODEA * arg4)
595{
596 dprintf(("GDI32: OS2CreateDCA"));
597 return O32_CreateDC(arg1, arg2, arg3, arg4);
598}
599//******************************************************************************
600//******************************************************************************
601HDC WIN32API CreateDCW( LPCWSTR arg1, LPCWSTR arg2, LPCWSTR arg3, const DEVMODEW * arg4)
602{
603 dprintf(("GDI32: OS2CreateDCW STUB"));
604 // NOTE: This will not work as is (needs UNICODE support)
605// return O32_CreateDC(arg1, arg2, arg3, arg4);
606 return 0;
607}
608//******************************************************************************
609//******************************************************************************
610HRGN WIN32API CreateEllipticRgn( int arg1, int arg2, int arg3, int arg4)
611{
612 dprintf(("GDI32: OS2CreateEllipticRgn"));
613 return O32_CreateEllipticRgn(arg1, arg2, arg3, arg4);
614}
615//******************************************************************************
616//******************************************************************************
617HRGN WIN32API CreateEllipticRgnIndirect( const RECT * arg1)
618{
619 dprintf(("GDI32: OS2CreateEllipticRgnIndirect"));
620 return O32_CreateEllipticRgnIndirect(arg1);
621}
622//******************************************************************************
623//******************************************************************************
624HENHMETAFILE WIN32API CreateEnhMetaFileA( HDC arg1, LPCSTR arg2, const RECT * arg3, LPCSTR arg4)
625{
626 dprintf(("GDI32: OS2CreateEnhMetaFileA"));
627 return O32_CreateEnhMetaFile(arg1, arg2, arg3, arg4);
628}
629//******************************************************************************
630//******************************************************************************
631HENHMETAFILE WIN32API CreateEnhMetaFileW( HDC arg1, LPCWSTR arg2, const RECT * arg3, LPCWSTR arg4)
632{
633 dprintf(("GDI32: OS2CreateEnhMetaFileW STUB"));
634 // NOTE: This will not work as is (needs UNICODE support)
635// return O32_CreateEnhMetaFile(arg1, arg2, arg3, arg4);
636 return 0;
637}
638//******************************************************************************
639//******************************************************************************
640//******************************************************************************
641//******************************************************************************
642HBRUSH WIN32API CreateHatchBrush( int arg1, COLORREF arg2)
643{
644 dprintf(("GDI32: OS2CreateHatchBrush"));
645 return O32_CreateHatchBrush(arg1, arg2);
646}
647//******************************************************************************
648//******************************************************************************
649HDC WIN32API CreateICA( LPCSTR arg1, LPCSTR arg2, LPCSTR arg3, const DEVMODEA * arg4)
650{
651 dprintf(("GDI32: OS2CreateICA"));
652 return O32_CreateIC(arg1, arg2, arg3, arg4);
653}
654//******************************************************************************
655//******************************************************************************
656HDC WIN32API CreateICW( LPCWSTR arg1, LPCWSTR arg2, LPCWSTR arg3, const DEVMODEW * arg4)
657{
658 dprintf(("GDI32: OS2CreateICW STUB"));
659 // NOTE: This will not work as is (needs UNICODE support)
660// return O32_CreateIC(arg1, arg2, arg3, arg4);
661 return 0;
662}
663//******************************************************************************
664//******************************************************************************
665HDC WIN32API CreateMetaFileA( LPCSTR arg1)
666{
667 dprintf(("GDI32: OS2CreateMetaFileA"));
668 return O32_CreateMetaFile(arg1);
669}
670//******************************************************************************
671//******************************************************************************
672HDC WIN32API CreateMetaFileW( LPCWSTR arg1)
673{
674 char *astring = UnicodeToAsciiString((LPWSTR)arg1);
675 HDC rc;
676
677 dprintf(("GDI32: OS2CreateMetaFileW"));
678 rc = O32_CreateMetaFile(astring);
679 FreeAsciiString(astring);
680 return rc;
681}
682//******************************************************************************
683//******************************************************************************
684HRGN WIN32API CreateRectRgn( int arg1, int arg2, int arg3, int arg4)
685{
686 dprintf(("GDI32: OS2CreateRectRgn"));
687 return O32_CreateRectRgn(arg1, arg2, arg3, arg4);
688}
689//******************************************************************************
690//******************************************************************************
691HRGN WIN32API CreateRectRgnIndirect( const RECT * arg1)
692{
693 dprintf(("GDI32: OS2CreateRectRgnIndirect"));
694 return O32_CreateRectRgnIndirect(arg1);
695}
696//******************************************************************************
697//******************************************************************************
698HRGN WIN32API CreateRoundRectRgn( int arg1, int arg2, int arg3, int arg4, int arg5, int arg6)
699{
700 dprintf(("GDI32: OS2CreateRoundRectRgn"));
701 return O32_CreateRoundRectRgn(arg1, arg2, arg3, arg4, arg5, arg6);
702}
703//******************************************************************************
704//******************************************************************************
705HBRUSH WIN32API CreateSolidBrush( COLORREF arg1)
706{
707 dprintf(("GDI32: OS2CreateSolidBrush\n"));
708 return O32_CreateSolidBrush(arg1);
709}
710//******************************************************************************
711//******************************************************************************
712BOOL WIN32API DPtoLP( HDC arg1, PPOINT arg2, int arg3)
713{
714 dprintf(("GDI32: OS2DPtoLP\n"));
715 return O32_DPtoLP(arg1, arg2, arg3);
716}
717//******************************************************************************
718//******************************************************************************
719BOOL WIN32API DeleteEnhMetaFile( HENHMETAFILE arg1)
720{
721 dprintf(("GDI32: OS2DeleteEnhMetaFile\n"));
722 return O32_DeleteEnhMetaFile(arg1);
723}
724//******************************************************************************
725//******************************************************************************
726BOOL WIN32API DeleteMetaFile( HMETAFILE arg1)
727{
728 dprintf(("GDI32: OS2DeleteMetaFile"));
729 return O32_DeleteMetaFile(arg1);
730}
731//******************************************************************************
732//******************************************************************************
733BOOL WIN32API Ellipse( HDC arg1, int arg2, int arg3, int arg4, int arg5)
734{
735 dprintf(("GDI32: OS2Ellipse"));
736 return O32_Ellipse(arg1, arg2, arg3, arg4, arg5);
737}
738//******************************************************************************
739//******************************************************************************
740int WIN32API EndDoc( HDC arg1)
741{
742 dprintf(("GDI32: OS2EndDoc"));
743 return O32_EndDoc(arg1);
744}
745//******************************************************************************
746//******************************************************************************
747int WIN32API EndPage( HDC arg1)
748{
749 dprintf(("GDI32: OS2EndPage"));
750 return O32_EndPage(arg1);
751}
752//******************************************************************************
753//******************************************************************************
754BOOL WIN32API EndPath( HDC arg1)
755{
756 dprintf(("GDI32: OS2EndPath"));
757 return O32_EndPath(arg1);
758}
759//******************************************************************************
760//******************************************************************************
761BOOL WIN32API EnumEnhMetaFile( HDC arg1, HENHMETAFILE arg2, ENHMFENUMPROC arg3, PVOID arg4, const RECT * arg5)
762{
763 dprintf(("GDI32: OS2EnumEnhMetaFile DOESN'T WORK!"));
764// return O32_EnumEnhMetaFile(arg1, arg2, arg3, arg4, arg5);
765 return 0;
766}
767//******************************************************************************
768//******************************************************************************
769BOOL WIN32API LineTo( HDC arg1, int arg2, int arg3)
770{
771 dprintf(("GDI32: OS2LineTo"));
772 return O32_LineTo(arg1, arg2, arg3);
773}
774//******************************************************************************
775//******************************************************************************
776BOOL WIN32API MoveToEx( HDC arg1, int arg2, int arg3, PPOINT arg4)
777{
778 dprintf(("GDI32: OS2MoveToEx\n"));
779 return O32_MoveToEx(arg1, arg2, arg3, arg4);
780}
781//******************************************************************************
782//******************************************************************************
783BOOL WIN32API PatBlt( HDC arg1, int arg2, int arg3, int arg4, int arg5, DWORD arg6)
784{
785 BOOL rc;
786
787 rc = O32_PatBlt(arg1, arg2, arg3, arg4, arg5, arg6);
788 dprintf(("GDI32: OS2PatBlt (%d,%d) (%d,%d) returned %d\n", arg2, arg3, arg4, arg5, rc));
789 return(rc);
790}
791//******************************************************************************
792//******************************************************************************
793BOOL WIN32API Rectangle( HDC arg1, int arg2, int arg3, int arg4, int arg5)
794{
795 dprintf(("GDI32: OS2Rectangle\n"));
796 return O32_Rectangle(arg1, arg2, arg3, arg4, arg5);
797}
798//******************************************************************************
799//******************************************************************************
800int WIN32API SetROP2( HDC arg1, int arg2)
801{
802 dprintf(("GDI32: OS2SetROP2"));
803 return O32_SetROP2(arg1, arg2);
804}
805//******************************************************************************
806//TODO: Callback
807//******************************************************************************
808BOOL WIN32API EnumMetaFile( HDC arg1, HMETAFILE arg2, MFENUMPROC arg3, LPARAM arg4)
809{
810 dprintf(("GDI32: OS2EnumMetaFile STUB"));
811 //calling convention differences
812// return O32_EnumMetaFile(arg1, arg2, arg3, arg4);
813 return 0;
814}
815//******************************************************************************
816//******************************************************************************
817int WIN32API EnumObjects( HDC arg1, int arg2, GOBJENUMPROC arg3, LPARAM arg4)
818{
819 dprintf(("GDI32: OS2EnumObjects STUB"));
820 //calling convention differences
821// return O32_EnumObjects(arg1, arg2, arg3, arg4);
822 return 0;
823}
824//******************************************************************************
825//******************************************************************************
826BOOL WIN32API EqualRgn( HRGN arg1, HRGN arg2)
827{
828 dprintf(("GDI32: OS2EqualRgn"));
829 return O32_EqualRgn(arg1, arg2);
830}
831//******************************************************************************
832//******************************************************************************
833int WIN32API Escape( HDC arg1, int arg2, int arg3, LPCSTR arg4, PVOID arg5)
834{
835 dprintf(("GDI32: OS2Escape"));
836 return O32_Escape(arg1, arg2, arg3, arg4, arg5);
837}
838//******************************************************************************
839//******************************************************************************
840int WIN32API ExcludeClipRect( HDC arg1, int arg2, int arg3, int arg4, int arg5)
841{
842 dprintf(("GDI32: OS2ExcludeClipRect"));
843 return O32_ExcludeClipRect(arg1, arg2, arg3, arg4, arg5);
844}
845//******************************************************************************
846//******************************************************************************
847HPEN WIN32API ExtCreatePen( DWORD arg1, DWORD arg2, const LOGBRUSH * arg3, DWORD arg4, const DWORD * arg5)
848{
849 dprintf(("GDI32: OS2ExtCreatePen"));
850 return O32_ExtCreatePen(arg1, arg2, arg3, arg4, arg5);
851}
852//******************************************************************************
853//******************************************************************************
854HRGN WIN32API ExtCreateRegion( const XFORM * arg1, DWORD arg2, const RGNDATA * arg3)
855{
856 dprintf(("GDI32: OS2ExtCreateRegion"));
857 return O32_ExtCreateRegion(arg1, arg2, arg3);
858}
859//******************************************************************************
860//******************************************************************************
861BOOL WIN32API ExtFloodFill( HDC arg1, int arg2, int arg3, COLORREF arg4, UINT arg5)
862{
863 dprintf(("GDI32: OS2ExtFloodFill"));
864 return O32_ExtFloodFill(arg1, arg2, arg3, arg4, arg5);
865}
866//******************************************************************************
867//******************************************************************************
868int WIN32API ExtSelectClipRgn( HDC arg1, HRGN arg2, int arg3)
869{
870 dprintf(("GDI32: OS2ExtSelectClipRgn"));
871 return O32_ExtSelectClipRgn(arg1, arg2, arg3);
872}
873//******************************************************************************
874//******************************************************************************
875BOOL WIN32API ExtTextOutW(HDC hdc, int X, int Y, UINT fuOptions,
876 const RECT *lprc, LPCWSTR lpString, UINT cbCount,
877 const int *lpDx)
878{
879 char *astring = UnicodeToAsciiString((LPWSTR)lpString);
880 BOOL rc;
881
882 if(lprc)
883 dprintf(("GDI32: OS2ExtTextOutW (%d,%d) %X, (%d,%d)(%d,%d)\n", X, Y, fuOptions, lprc->left, lprc->top, lprc->right, lprc->bottom));
884 else dprintf(("GDI32: OS2ExtTextOutW (%d,%d) %X\n", X, Y, fuOptions));
885 rc = O32_ExtTextOut(hdc, X, Y, fuOptions, lprc, astring, cbCount, lpDx);
886 dprintf(("GDI32: OS2ExtTextOutW %s (%X) length %d rc %d\n", astring, lpString, cbCount, rc));
887 FreeAsciiString(astring);
888 return(rc);
889}
890//******************************************************************************
891//******************************************************************************
892BOOL WIN32API FillPath( HDC arg1)
893{
894 dprintf(("GDI32: OS2FillPath"));
895 return O32_FillPath(arg1);
896}
897//******************************************************************************
898//******************************************************************************
899BOOL WIN32API FillRgn( HDC arg1, HRGN arg2, HBRUSH arg3)
900{
901 dprintf(("GDI32: OS2FillRgn"));
902 return O32_FillRgn(arg1, arg2, arg3);
903}
904//******************************************************************************
905//******************************************************************************
906BOOL WIN32API FlattenPath( HDC arg1)
907{
908 dprintf(("GDI32: OS2FlattenPath"));
909 return O32_FlattenPath(arg1);
910}
911//******************************************************************************
912//******************************************************************************
913BOOL WIN32API FloodFill(HDC arg1, int arg2, int arg3, COLORREF arg4)
914{
915 dprintf(("GDI32: OS2FloodFill"));
916 return O32_FloodFill(arg1, arg2, arg3, arg4);
917}
918//******************************************************************************
919//******************************************************************************
920BOOL WIN32API FrameRgn( HDC arg1, HRGN arg2, HBRUSH arg3, int arg4, int arg5)
921{
922 dprintf(("GDI32: OS2FrameRgn"));
923 return O32_FrameRgn(arg1, arg2, arg3, arg4, arg5);
924}
925//******************************************************************************
926//******************************************************************************
927int WIN32API GetArcDirection( HDC arg1)
928{
929 dprintf(("GDI32: OS2GetArcDirection"));
930 return O32_GetArcDirection(arg1);
931}
932//******************************************************************************
933//******************************************************************************
934BOOL WIN32API GetAspectRatioFilterEx( HDC arg1, PSIZE arg2)
935{
936 dprintf(("GDI32: OS2GetAspectRatioFilterEx"));
937 return O32_GetAspectRatioFilterEx(arg1, arg2);
938}
939//******************************************************************************
940//******************************************************************************
941LONG WIN32API GetBitmapBits( HBITMAP arg1, LONG arg2, PVOID arg3)
942{
943 dprintf(("GDI32: OS2GetBitmapBits"));
944 return O32_GetBitmapBits(arg1, arg2, arg3);
945}
946//******************************************************************************
947//******************************************************************************
948BOOL WIN32API GetBitmapDimensionEx( HBITMAP arg1, PSIZE arg2)
949{
950 dprintf(("GDI32: OS2GetBitmapDimensionEx"));
951 return O32_GetBitmapDimensionEx(arg1, arg2);
952}
953//******************************************************************************
954//******************************************************************************
955COLORREF WIN32API GetBkColor( HDC arg1)
956{
957 dprintf(("GDI32: OS2GetBkColor"));
958 return O32_GetBkColor(arg1);
959}
960//******************************************************************************
961//******************************************************************************
962int WIN32API GetBkMode( HDC arg1)
963{
964 dprintf(("GDI32: OS2GetBkMode"));
965 return O32_GetBkMode(arg1);
966}
967//******************************************************************************
968//******************************************************************************
969UINT WIN32API GetBoundsRect( HDC arg1, PRECT arg2, UINT arg3)
970{
971 dprintf(("GDI32: OS2GetBoundsRect"));
972 return O32_GetBoundsRect(arg1, arg2, arg3);
973}
974//******************************************************************************
975//******************************************************************************
976BOOL WIN32API GetBrushOrgEx( HDC arg1, PPOINT arg2)
977{
978 dprintf(("GDI32: OS2GetBrushOrgEx"));
979 return O32_GetBrushOrgEx(arg1, arg2);
980}
981//******************************************************************************
982//******************************************************************************
983BOOL WIN32API GetCharABCWidthsA( HDC arg1, UINT arg2, UINT arg3, LPABC arg4)
984{
985 dprintf(("GDI32: OS2GetCharABCWidthsA"));
986 return O32_GetCharABCWidths(arg1, arg2, arg3, arg4);
987}
988//******************************************************************************
989//******************************************************************************
990BOOL WIN32API GetCharABCWidthsW( HDC arg1, UINT arg2, UINT arg3, LPABC arg4)
991{
992 dprintf(("GDI32: OS2GetCharABCWidthsW not properly implemented."));
993 // NOTE: This will not work as is (needs UNICODE support)
994 return O32_GetCharABCWidths(arg1, arg2, arg3, arg4);
995}
996//******************************************************************************
997//******************************************************************************
998BOOL WIN32API GetCharWidthA( HDC arg1, UINT arg2, UINT arg3, PINT arg4)
999{
1000 dprintf(("GDI32: OS2GetCharWidthA"));
1001 return O32_GetCharWidth(arg1, arg2, arg3, arg4);
1002}
1003//******************************************************************************
1004//TODO: Cut off Unicode chars?
1005//******************************************************************************
1006BOOL WIN32API GetCharWidthW(HDC arg1, UINT iFirstChar, UINT iLastChar, PINT arg4)
1007{
1008 dprintf(("GDI32: OS2GetCharWidthW, not properly implemented"));
1009 return O32_GetCharWidth(arg1, iFirstChar, iLastChar, arg4);
1010}
1011//******************************************************************************
1012//******************************************************************************
1013int WIN32API GetClipBox( HDC arg1, PRECT arg2)
1014{
1015 int rc;
1016
1017 rc = O32_GetClipBox(arg1, arg2);
1018 dprintf(("GDI32: OS2GetClipBox of %X returned %d\n", arg1, rc));
1019 return(rc);
1020}
1021//******************************************************************************
1022//******************************************************************************
1023int WIN32API GetClipRgn( HDC arg1, HRGN arg2)
1024{
1025 dprintf(("GDI32: OS2GetClipRgn"));
1026 return O32_GetClipRgn(arg1, arg2);
1027}
1028//******************************************************************************
1029//******************************************************************************
1030HANDLE WIN32API GetCurrentObject( HDC arg1, UINT arg2)
1031{
1032 dprintf(("GDI32: OS2GetCurrentObject"));
1033 return (HANDLE)O32_GetCurrentObject(arg1, arg2);
1034}
1035//******************************************************************************
1036//******************************************************************************
1037BOOL WIN32API GetCurrentPositionEx( HDC arg1, PPOINT arg2)
1038{
1039 dprintf(("GDI32: OS2GetCurrentPositionEx"));
1040 return O32_GetCurrentPositionEx(arg1, arg2);
1041}
1042//******************************************************************************
1043//******************************************************************************
1044int WIN32API GetDIBits( HDC arg1, HBITMAP arg2, UINT arg3, UINT arg4, void * arg5, PBITMAPINFO arg6, UINT arg7)
1045{
1046 dprintf(("GDI32: OS2GetDIBits"));
1047 return O32_GetDIBits(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1048}
1049//******************************************************************************
1050//******************************************************************************
1051int WIN32API GetDeviceCaps(HDC hdc, int nIndex)
1052{
1053 int rc;
1054
1055 rc = O32_GetDeviceCaps(hdc, nIndex);
1056 dprintf(("GDI32: OS2GetDeviceCaps %X, %d returned %d\n", hdc, nIndex, rc));
1057 //SvL: 13-9-'98: NT returns -1 when using 16 bits colors, NOT 65536!
1058 if(nIndex == NUMCOLORS && rc > 256)
1059 return -1;
1060 return(rc);
1061}
1062//******************************************************************************
1063//******************************************************************************
1064HENHMETAFILE WIN32API GetEnhMetaFileA( LPCSTR arg1)
1065{
1066 dprintf(("GDI32: OS2GetEnhMetaFileA"));
1067 return O32_GetEnhMetaFile(arg1);
1068}
1069//******************************************************************************
1070//******************************************************************************
1071UINT WIN32API GetEnhMetaFileBits( HENHMETAFILE arg1, UINT arg2, PBYTE arg3)
1072{
1073 dprintf(("GDI32: OS2GetEnhMetaFileBits"));
1074 return O32_GetEnhMetaFileBits(arg1, arg2, arg3);
1075}
1076//******************************************************************************
1077//******************************************************************************
1078UINT WIN32API GetEnhMetaFileHeader( HENHMETAFILE arg1, UINT arg2, LPENHMETAHEADER arg3)
1079{
1080 dprintf(("GDI32: OS2GetEnhMetaFileHeader"));
1081 return O32_GetEnhMetaFileHeader(arg1, arg2, arg3);
1082}
1083//******************************************************************************
1084//******************************************************************************
1085UINT WIN32API GetEnhMetaFilePaletteEntries( HENHMETAFILE arg1, UINT arg2, PPALETTEENTRY arg3)
1086{
1087 dprintf(("GDI32: OS2GetEnhMetaFilePaletteEntries"));
1088 return O32_GetEnhMetaFilePaletteEntries(arg1, arg2, arg3);
1089}
1090//******************************************************************************
1091//******************************************************************************
1092HENHMETAFILE WIN32API GetEnhMetaFileW( LPCWSTR arg1)
1093{
1094 char *astring = UnicodeToAsciiString((LPWSTR)arg1);
1095 HENHMETAFILE rc;
1096
1097 dprintf(("GDI32: OS2GetEnhMetaFileW"));
1098 // NOTE: This will not work as is (needs UNICODE support)
1099 rc = O32_GetEnhMetaFile(astring);
1100 FreeAsciiString(astring);
1101 return rc;
1102}
1103//******************************************************************************
1104//******************************************************************************
1105int WIN32API GetGraphicsMode(HDC arg1)
1106{
1107 dprintf(("GDI32: OS2GetGraphicsMode"));
1108 return O32_GetGraphicsMode(arg1);
1109}
1110//******************************************************************************
1111//******************************************************************************
1112DWORD WIN32API GetKerningPairsA( HDC arg1, DWORD arg2, LPKERNINGPAIR arg3)
1113{
1114 dprintf(("GDI32: OS2GetKerningPairsA"));
1115 return O32_GetKerningPairs(arg1, arg2, arg3);
1116}
1117//******************************************************************************
1118//******************************************************************************
1119DWORD WIN32API GetKerningPairsW( HDC arg1, DWORD arg2, LPKERNINGPAIR arg3)
1120{
1121 dprintf(("GDI32: OS2GetKerningPairsW"));
1122 // NOTE: This will not work as is (needs UNICODE support)
1123 return O32_GetKerningPairs(arg1, arg2, arg3);
1124}
1125//******************************************************************************
1126//******************************************************************************
1127int WIN32API GetMapMode( HDC arg1)
1128{
1129 dprintf(("GDI32: OS2GetMapMode"));
1130 return O32_GetMapMode(arg1);
1131}
1132//******************************************************************************
1133//******************************************************************************
1134HMETAFILE WIN32API GetMetaFileA( LPCSTR arg1)
1135{
1136 dprintf(("GDI32: OS2GetMetaFileA"));
1137 return O32_GetMetaFile(arg1);
1138}
1139//******************************************************************************
1140//******************************************************************************
1141UINT WIN32API GetMetaFileBitsEx( HMETAFILE arg1, UINT arg2, LPVOID arg3)
1142{
1143 dprintf(("GDI32: OS2GetMetaFileBitsEx"));
1144 return O32_GetMetaFileBitsEx(arg1, arg2, arg3);
1145}
1146//******************************************************************************
1147//******************************************************************************
1148HMETAFILE WIN32API GetMetaFileW( LPCWSTR arg1)
1149{
1150 char *astring = UnicodeToAsciiString((LPWSTR)arg1);
1151 HENHMETAFILE rc;
1152
1153 dprintf(("GDI32: OS2GetMetaFileW"));
1154 rc = O32_GetMetaFile(astring);
1155 FreeAsciiString(astring);
1156 return rc;
1157
1158}
1159//******************************************************************************
1160//******************************************************************************
1161BOOL WIN32API GetMiterLimit( HDC arg1, float * arg2)
1162{
1163 dprintf(("GDI32: OS2GetMiterLimit"));
1164 return O32_GetMiterLimit(arg1, arg2);
1165}
1166//******************************************************************************
1167//******************************************************************************
1168COLORREF WIN32API GetNearestColor( HDC arg1, COLORREF arg2)
1169{
1170 dprintf(("GDI32: OS2GetNearestColor\n"));
1171 return O32_GetNearestColor(arg1, arg2);
1172}
1173//******************************************************************************
1174//******************************************************************************
1175UINT WIN32API GetNearestPaletteIndex( HPALETTE arg1, COLORREF arg2)
1176{
1177 dprintf(("GDI32: OS2GetNearestPaletteIndex\n"));
1178 return O32_GetNearestPaletteIndex(arg1, arg2);
1179}
1180//******************************************************************************
1181//******************************************************************************
1182int WIN32API GetObjectW( HGDIOBJ arg1, int arg2, void * arg3)
1183{
1184 dprintf(("GDI32: OS2GetObjectW %X, %d %X\n", arg1, arg2, arg3));
1185 // NOTE: This will not work as is (needs UNICODE support)
1186 return O32_GetObject(arg1, arg2, arg3);
1187}
1188//******************************************************************************
1189//******************************************************************************
1190UINT WIN32API GetOutlineTextMetricsA( HDC arg1, UINT arg2, LPOUTLINETEXTMETRICA arg3)
1191{
1192 dprintf(("GDI32: OS2GetOutlineTextMetricsA"));
1193 return O32_GetOutlineTextMetrics(arg1, arg2, arg3);
1194}
1195//******************************************************************************
1196//******************************************************************************
1197UINT WIN32API GetOutlineTextMetricsW( HDC arg1, UINT arg2, LPOUTLINETEXTMETRICW arg3)
1198{
1199 dprintf(("GDI32: OS2GetOutlineTextMetricsW STUB"));
1200 // NOTE: This will not work as is (needs UNICODE support)
1201// return O32_GetOutlineTextMetrics(arg1, arg2, arg3);
1202 return 0;
1203}
1204//******************************************************************************
1205//******************************************************************************
1206UINT WIN32API GetPaletteEntries( HPALETTE arg1, UINT arg2, UINT arg3, PPALETTEENTRY arg4)
1207{
1208 dprintf(("GDI32: OS2GetPaletteEntries"));
1209 return O32_GetPaletteEntries(arg1, arg2, arg3, arg4);
1210}
1211//******************************************************************************
1212//******************************************************************************
1213INT WIN32API GetPath( HDC arg1, PPOINT arg2, PBYTE arg3, int arg4)
1214{
1215 dprintf(("GDI32: OS2GetPath"));
1216 return O32_GetPath(arg1, arg2, arg3, arg4);
1217}
1218//******************************************************************************
1219//******************************************************************************
1220int WIN32API GetPolyFillMode( HDC arg1)
1221{
1222 dprintf(("GDI32: OS2GetPolyFillMode"));
1223 return O32_GetPolyFillMode(arg1);
1224}
1225//******************************************************************************
1226//******************************************************************************
1227int WIN32API GetROP2( HDC arg1)
1228{
1229 dprintf(("GDI32: OS2GetROP2"));
1230 return O32_GetROP2(arg1);
1231}
1232//******************************************************************************
1233//******************************************************************************
1234BOOL WIN32API GetRasterizerCaps(LPRASTERIZER_STATUS arg1, UINT arg2)
1235{
1236 dprintf(("GDI32: OS2GetRasterizerCaps"));
1237 return O32_GetRasterizerCaps(arg1, arg2);
1238}
1239//******************************************************************************
1240//******************************************************************************
1241DWORD WIN32API GetRegionData( HRGN arg1, DWORD arg2, PRGNDATA arg3)
1242{
1243 dprintf(("GDI32: OS2GetRegionData"));
1244 return O32_GetRegionData(arg1, arg2, arg3);
1245}
1246//******************************************************************************
1247//******************************************************************************
1248int WIN32API GetRgnBox( HRGN arg1, PRECT arg2)
1249{
1250 dprintf(("GDI32: OS2GetRgnBox"));
1251 return O32_GetRgnBox(arg1, arg2);
1252}
1253//******************************************************************************
1254//******************************************************************************
1255int WIN32API GetStretchBltMode( HDC arg1)
1256{
1257 dprintf(("GDI32: OS2GetStretchBltMode"));
1258 return O32_GetStretchBltMode(arg1);
1259}
1260//******************************************************************************
1261//******************************************************************************
1262UINT WIN32API GetSystemPaletteEntries( HDC arg1, UINT arg2, UINT arg3, PPALETTEENTRY arg4)
1263{
1264 UINT rc;
1265
1266 dprintf(("GDI32: OS2GetSystemPaletteEntries start %d nr %d pal ptr %X", arg2, arg3, arg4));
1267 rc = O32_GetSystemPaletteEntries(arg1, arg2, arg3, arg4);
1268 dprintf((" GetSystemPaletteEntries returned %d", rc));
1269 return(rc);
1270}
1271//******************************************************************************
1272//******************************************************************************
1273UINT WIN32API GetTextAlign( HDC arg1)
1274{
1275 dprintf(("GDI32: OS2GetTextAlign"));
1276 return O32_GetTextAlign(arg1);
1277}
1278//******************************************************************************
1279//******************************************************************************
1280int WIN32API GetTextCharacterExtra( HDC arg1)
1281{
1282 dprintf(("GDI32: OS2GetTextCharacterExtra"));
1283 return O32_GetTextCharacterExtra(arg1);
1284}
1285//******************************************************************************
1286//******************************************************************************
1287COLORREF WIN32API GetTextColor( HDC arg1)
1288{
1289 dprintf(("GDI32: OS2GetTextColor"));
1290 return O32_GetTextColor(arg1);
1291}
1292//******************************************************************************
1293//******************************************************************************
1294BOOL WIN32API GetTextExtentPoint32A( HDC arg1, LPCSTR arg2, int arg3, PSIZE lpSize)
1295{
1296 dprintf(("GDI32: OS2GetTextExtentPoint32A"));
1297 lpSize->cx = lpSize->cy = 0;
1298 return O32_GetTextExtentPoint32(arg1, arg2, arg3, lpSize);
1299}
1300//******************************************************************************
1301//******************************************************************************
1302BOOL WIN32API GetTextExtentPoint32W(HDC arg1, LPCWSTR arg2, int arg3, PSIZE lpSize)
1303{
1304 char *astring = UnicodeToAsciiString((LPWSTR)arg2);
1305 BOOL rc;
1306
1307 dprintf(("GDI32: OS2GetTextExtentPoint32W %s\n", astring));
1308 lpSize->cx = lpSize->cy = 0;
1309 rc = O32_GetTextExtentPoint32(arg1, astring, arg3, lpSize);
1310 FreeAsciiString(astring);
1311 return(rc);
1312}
1313//******************************************************************************
1314//******************************************************************************
1315BOOL WIN32API GetTextExtentPointW(HDC hdc,
1316 LPCWSTR lpString,
1317 int cbString,
1318 PSIZE lpSize)
1319{
1320 char *astring = UnicodeToAsciiString((LPWSTR)lpString);
1321 BOOL rc;
1322
1323 lpSize->cx = lpSize->cy = 0;
1324 rc = O32_GetTextExtentPoint(hdc,
1325 astring,
1326 cbString,
1327 lpSize);
1328 dprintf(("GDI32: OS2GetTextExtentPointW %X %s (size %08xh) returned %d\n", hdc, astring, cbString, rc));
1329 dprintf(("GDI32: OS2GetTextExtentPointW (%d,%d)\n", lpSize->cx, lpSize->cy));
1330
1331 FreeAsciiString(astring);
1332 return(rc);
1333}
1334//******************************************************************************
1335//******************************************************************************
1336int WIN32API GetTextFaceA( HDC arg1, int arg2, LPSTR arg3)
1337{
1338 dprintf(("GDI32: OS2GetTextFaceA"));
1339 return O32_GetTextFace(arg1, arg2, arg3);
1340}
1341//******************************************************************************
1342//******************************************************************************
1343int WIN32API GetTextFaceW( HDC arg1, int arg2, LPWSTR arg3)
1344{
1345 char *astring = (char *)malloc(arg2+1);
1346 int rc;
1347
1348 dprintf(("GDI32: OS2GetTextFaceW"));
1349 rc = O32_GetTextFace(arg1, arg2, astring);
1350 AsciiToUnicode(astring, arg3);
1351 return rc;
1352}
1353//******************************************************************************
1354//******************************************************************************
1355BOOL WIN32API GetTextMetricsA( HDC arg1, LPTEXTMETRICA arg2)
1356{
1357 BOOL rc;
1358
1359 rc = O32_GetTextMetrics(arg1, arg2);
1360 dprintf(("GDI32: OS2GetTextMetricsA returned %d\n", rc));
1361 return(rc);
1362}
1363//******************************************************************************
1364//******************************************************************************
1365BOOL WIN32API GetTextMetricsW( HDC arg1, LPTEXTMETRICW pwtm)
1366{
1367 BOOL rc;
1368 TEXTMETRICA atm;
1369
1370 dprintf(("GDI32: OS2GetTextMetricsW"));
1371
1372 rc = O32_GetTextMetrics(arg1, &atm);
1373 pwtm->tmHeight = atm.tmHeight;
1374 pwtm->tmAscent = atm.tmAscent;
1375 pwtm->tmDescent = atm.tmDescent;
1376 pwtm->tmInternalLeading = atm.tmInternalLeading;
1377 pwtm->tmExternalLeading = atm.tmExternalLeading;
1378 pwtm->tmAveCharWidth = atm.tmAveCharWidth;
1379 pwtm->tmMaxCharWidth = atm.tmMaxCharWidth;
1380 pwtm->tmWeight = atm.tmWeight;
1381 pwtm->tmOverhang = atm.tmOverhang;
1382 pwtm->tmDigitizedAspectX = atm.tmDigitizedAspectX;
1383 pwtm->tmDigitizedAspectY = atm.tmDigitizedAspectY;
1384 pwtm->tmFirstChar = atm.tmFirstChar;
1385 pwtm->tmLastChar = atm.tmLastChar;
1386 pwtm->tmDefaultChar = atm.tmDefaultChar;
1387 pwtm->tmBreakChar = atm.tmBreakChar;
1388 pwtm->tmItalic = atm.tmItalic;
1389 pwtm->tmUnderlined = atm.tmUnderlined;
1390 pwtm->tmStruckOut = atm.tmStruckOut;
1391 pwtm->tmPitchAndFamily = atm.tmPitchAndFamily;
1392 pwtm->tmCharSet = atm.tmCharSet;
1393 return(rc);
1394}
1395//******************************************************************************
1396//******************************************************************************
1397BOOL WIN32API GetViewportExtEx( HDC arg1, PSIZE arg2)
1398{
1399 dprintf(("GDI32: OS2GetViewportExtEx"));
1400 return O32_GetViewportExtEx(arg1, arg2);
1401}
1402//******************************************************************************
1403//******************************************************************************
1404BOOL WIN32API GetViewportOrgEx( HDC arg1, PPOINT arg2)
1405{
1406 dprintf(("GDI32: OS2GetViewportOrgEx"));
1407 return O32_GetViewportOrgEx(arg1, arg2);
1408}
1409//******************************************************************************
1410//******************************************************************************
1411UINT WIN32API GetWinMetaFileBits( HENHMETAFILE arg1, UINT arg2, PBYTE arg3, int arg4, HDC arg5)
1412{
1413 dprintf(("GDI32: OS2GetWinMetaFileBits"));
1414 return O32_GetWinMetaFileBits(arg1, arg2, arg3, arg4, arg5);
1415}
1416//******************************************************************************
1417//******************************************************************************
1418BOOL WIN32API GetWindowOrgEx( HDC arg1, PPOINT arg2)
1419{
1420 dprintf(("GDI32: OS2GetWindowOrgEx"));
1421 return O32_GetWindowOrgEx(arg1, arg2);
1422}
1423//******************************************************************************
1424//******************************************************************************
1425BOOL WIN32API GetWorldTransform( HDC arg1, LPXFORM arg2)
1426{
1427 dprintf(("GDI32: OS2GetWorldTransform"));
1428 return O32_GetWorldTransform(arg1, arg2);
1429}
1430//******************************************************************************
1431//******************************************************************************
1432int WIN32API IntersectClipRect(HDC arg1, int arg2, int arg3, int arg4, int arg5)
1433{
1434 int rc;
1435
1436 rc = O32_IntersectClipRect(arg1, arg2, arg3, arg4, arg5);
1437 dprintf(("GDI32: OS2IntersectClipRect returned %d\n", rc));
1438 return(rc);
1439}
1440//******************************************************************************
1441//******************************************************************************
1442BOOL WIN32API InvertRgn( HDC arg1, HRGN arg2)
1443{
1444 dprintf(("GDI32: OS2InvertRgn"));
1445 return O32_InvertRgn(arg1, arg2);
1446}
1447//******************************************************************************
1448//******************************************************************************
1449BOOL WIN32API LPtoDP( HDC arg1, PPOINT arg2, int arg3)
1450{
1451 dprintf(("GDI32: OS2LPtoDP"));
1452 return O32_LPtoDP(arg1, arg2, arg3);
1453}
1454//******************************************************************************
1455//******************************************************************************
1456BOOL WIN32API LineDDA( int arg1, int arg2, int arg3, int arg4, LINEDDAPROC lpLineFunc, LPARAM lpData)
1457{
1458 BOOL rc;
1459 LineDDAProcCallback *callback = new LineDDAProcCallback(lpLineFunc, lpData);
1460
1461 dprintf(("GDI32: OS2LineDDA\n"));
1462 rc = O32_LineDDA(arg1, arg2, arg3, arg4, callback->GetOS2Callback(), (LPARAM)callback);
1463 if(callback)
1464 delete callback;
1465 return(rc);
1466}
1467//******************************************************************************
1468//******************************************************************************
1469BOOL WIN32API MaskBlt( HDC arg1, int arg2, int arg3, int arg4, int arg5, HDC arg6, int arg7, int arg8, HBITMAP arg9, int arg10, int arg11, DWORD arg12)
1470{
1471 dprintf(("GDI32: OS2MaskBlt"));
1472 return O32_MaskBlt(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, arg10, arg11, arg12);
1473}
1474//******************************************************************************
1475//******************************************************************************
1476BOOL WIN32API ModifyWorldTransform( HDC arg1, const XFORM *arg2, DWORD arg3)
1477{
1478 dprintf(("GDI32: OS2ModifyWorldTransform"));
1479 return O32_ModifyWorldTransform(arg1, (LPXFORM)arg2, arg3);
1480}
1481//******************************************************************************
1482//******************************************************************************
1483int WIN32API OffsetClipRgn( HDC arg1, int arg2, int arg3)
1484{
1485 dprintf(("GDI32: OS2OffsetClipRgn"));
1486 return O32_OffsetClipRgn(arg1, arg2, arg3);
1487}
1488//******************************************************************************
1489//******************************************************************************
1490int WIN32API OffsetRgn( HRGN arg1, int arg2, int arg3)
1491{
1492 dprintf(("GDI32: OS2OffsetRgn"));
1493 return O32_OffsetRgn(arg1, arg2, arg3);
1494}
1495//******************************************************************************
1496//******************************************************************************
1497BOOL WIN32API OffsetViewportOrgEx( HDC arg1, int arg2, int arg3, PPOINT arg4)
1498{
1499 dprintf(("GDI32: OS2OffsetViewportOrgEx"));
1500 return O32_OffsetViewportOrgEx(arg1, arg2, arg3, arg4);
1501}
1502//******************************************************************************
1503//******************************************************************************
1504BOOL WIN32API OffsetWindowOrgEx( HDC arg1, int arg2, int arg3, PPOINT arg4)
1505{
1506 dprintf(("GDI32: OS2OffsetWindowOrgEx"));
1507 return O32_OffsetWindowOrgEx(arg1, arg2, arg3, arg4);
1508}
1509//******************************************************************************
1510//******************************************************************************
1511BOOL WIN32API PaintRgn( HDC arg1, HRGN arg2)
1512{
1513 dprintf(("GDI32: OS2PaintRgn"));
1514 return O32_PaintRgn(arg1, arg2);
1515}
1516//******************************************************************************
1517//******************************************************************************
1518HRGN WIN32API PathToRegion( HDC arg1)
1519{
1520 dprintf(("GDI32: OS2PathToRegion"));
1521 return O32_PathToRegion(arg1);
1522}
1523//******************************************************************************
1524//******************************************************************************
1525BOOL WIN32API Pie(HDC hdc, int nLeftRect, int nTopRect, int nRightRect,
1526 int nBottomRect, int nXRadial1, int nYRadial1, int nXRadial2,
1527 int nYRadial2)
1528{
1529 dprintf(("GDI32: OS2Pie"));
1530 //CB: bug in O32_Pie
1531 if (nXRadial1 == nXRadial2 && nYRadial1 == nYRadial2)
1532 return O32_Ellipse(hdc,nLeftRect,nTopRect,nRightRect,nBottomRect);
1533 else
1534 return O32_Pie(hdc,nLeftRect,nTopRect,nRightRect,nBottomRect,nXRadial1,nYRadial1,nXRadial2,nYRadial2);
1535}
1536//******************************************************************************
1537//******************************************************************************
1538BOOL WIN32API PlayEnhMetaFile( HDC arg1, HENHMETAFILE arg2, const RECT * arg3)
1539{
1540 dprintf(("GDI32: OS2PlayEnhMetaFile"));
1541 return O32_PlayEnhMetaFile(arg1, arg2, arg3);
1542}
1543//******************************************************************************
1544//******************************************************************************
1545BOOL WIN32API PlayMetaFile( HDC arg1, HMETAFILE arg2)
1546{
1547 dprintf(("GDI32: OS2PlayMetaFile"));
1548 return O32_PlayMetaFile(arg1, arg2);
1549}
1550//******************************************************************************
1551//******************************************************************************
1552BOOL WIN32API PlayMetaFileRecord( HDC arg1, LPHANDLETABLE arg2, LPMETARECORD arg3, UINT arg4)
1553{
1554 dprintf(("GDI32: OS2PlayMetaFileRecord"));
1555 return O32_PlayMetaFileRecord(arg1, arg2, arg3, (int)arg4);
1556}
1557//******************************************************************************
1558//******************************************************************************
1559BOOL WIN32API PolyBezier( HDC arg1, const POINT * arg2, DWORD arg3)
1560{
1561 dprintf(("GDI32: OS2PolyBezier"));
1562 return O32_PolyBezier(arg1, arg2, (int)arg3);
1563}
1564//******************************************************************************
1565//******************************************************************************
1566BOOL WIN32API PolyBezierTo( HDC arg1, const POINT * arg2, DWORD arg3)
1567{
1568 dprintf(("GDI32: OS2PolyBezierTo"));
1569 return O32_PolyBezierTo(arg1, arg2, arg3);
1570}
1571//******************************************************************************
1572//******************************************************************************
1573BOOL WIN32API PolyDraw( HDC arg1, const POINT * arg2, const BYTE * arg3, DWORD arg4)
1574{
1575 dprintf(("GDI32: OS2PolyDraw"));
1576 return O32_PolyDraw(arg1, arg2, arg3, arg4);
1577}
1578//******************************************************************************
1579//******************************************************************************
1580BOOL WIN32API PolyPolygon( HDC arg1, const POINT * arg2, const INT * arg3, UINT arg4)
1581{
1582 dprintf(("GDI32: OS2PolyPolygon"));
1583 return O32_PolyPolygon(arg1, arg2, arg3, arg4);
1584}
1585//******************************************************************************
1586//******************************************************************************
1587BOOL WIN32API PolyPolyline( HDC arg1, const POINT * arg2, const DWORD * arg3, DWORD arg4)
1588{
1589 dprintf(("GDI32: OS2PolyPolyline"));
1590 return O32_PolyPolyline(arg1, arg2, arg3, arg4);
1591}
1592//******************************************************************************
1593//******************************************************************************
1594BOOL WIN32API Polygon( HDC arg1, const POINT * arg2, int arg3)
1595{
1596 dprintf(("GDI32: OS2Polygon"));
1597 return O32_Polygon(arg1, arg2, arg3);
1598}
1599//******************************************************************************
1600//******************************************************************************
1601BOOL WIN32API Polyline( HDC arg1, const POINT * arg2, int arg3)
1602{
1603 dprintf(("GDI32: OS2Polyline"));
1604 return O32_Polyline(arg1, arg2, arg3);
1605}
1606//******************************************************************************
1607//******************************************************************************
1608BOOL WIN32API PolylineTo( HDC arg1, const POINT * arg2, DWORD arg3)
1609{
1610 dprintf(("GDI32: OS2PolylineTo"));
1611 return O32_PolylineTo(arg1, arg2, arg3);
1612}
1613//******************************************************************************
1614//******************************************************************************
1615BOOL WIN32API PtInRegion( HRGN arg1, int arg2, int arg3)
1616{
1617 dprintf(("GDI32: OS2PtInRegion"));
1618 return O32_PtInRegion(arg1, arg2, arg3);
1619}
1620//******************************************************************************
1621//******************************************************************************
1622BOOL WIN32API PtVisible( HDC arg1, int arg2, int arg3)
1623{
1624 dprintf(("GDI32: OS2PtVisible"));
1625 return O32_PtVisible(arg1, arg2, arg3);
1626}
1627//******************************************************************************
1628//******************************************************************************
1629BOOL WIN32API RectInRegion( HRGN arg1, const RECT * arg2)
1630{
1631 dprintf(("GDI32: OS2RectInRegion"));
1632 return O32_RectInRegion(arg1, arg2);
1633}
1634//******************************************************************************
1635//******************************************************************************
1636BOOL WIN32API RectVisible( HDC arg1, const RECT * arg2)
1637{
1638 dprintf(("GDI32: OS2RectVisible\n"));
1639 return O32_RectVisible(arg1, arg2);
1640}
1641//******************************************************************************
1642//******************************************************************************
1643HDC WIN32API ResetDCA( HDC arg1, const DEVMODEA * arg2)
1644{
1645 dprintf(("GDI32: OS2ResetDCA\n"));
1646 return (HDC)O32_ResetDC(arg1, arg2);
1647}
1648//******************************************************************************
1649//******************************************************************************
1650HDC WIN32API ResetDCW( HDC arg1, const DEVMODEW * arg2)
1651{
1652 dprintf(("GDI32: OS2ResetDCW\n"));
1653 // NOTE: This will not work as is (needs UNICODE support)
1654 return (HDC)O32_ResetDC(arg1, (const DEVMODEA *)arg2);
1655}
1656//******************************************************************************
1657//******************************************************************************
1658BOOL WIN32API ResizePalette( HPALETTE arg1, UINT arg2)
1659{
1660 dprintf(("GDI32: OS2ResizePalette\n"));
1661 return O32_ResizePalette(arg1, arg2);
1662}
1663//******************************************************************************
1664//******************************************************************************
1665BOOL WIN32API RestoreDC( HDC arg1, int arg2)
1666{
1667 dprintf(("GDI32: OS2RestoreDC\n"));
1668 return O32_RestoreDC(arg1, arg2);
1669}
1670//******************************************************************************
1671//******************************************************************************
1672BOOL WIN32API RoundRect( HDC arg1, int arg2, int arg3, int arg4, int arg5, int arg6, int arg7)
1673{
1674 dprintf(("GDI32: OS2RoundRect"));
1675 return O32_RoundRect(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1676}
1677//******************************************************************************
1678//******************************************************************************
1679int WIN32API SaveDC( HDC arg1)
1680{
1681 dprintf(("GDI32: OS2SaveDC"));
1682 return O32_SaveDC(arg1);
1683}
1684//******************************************************************************
1685//******************************************************************************
1686BOOL WIN32API ScaleViewportExtEx( HDC arg1, int arg2, int arg3, int arg4, int arg5, PSIZE arg6)
1687{
1688 dprintf(("GDI32: OS2ScaleViewportExtEx"));
1689 return O32_ScaleViewportExtEx(arg1, arg2, arg3, arg4, arg5, arg6);
1690}
1691//******************************************************************************
1692//******************************************************************************
1693BOOL WIN32API ScaleWindowExtEx( HDC arg1, int arg2, int arg3, int arg4, int arg5, PSIZE arg6)
1694{
1695 dprintf(("GDI32: OS2ScaleWindowExtEx"));
1696 return O32_ScaleWindowExtEx(arg1, arg2, arg3, arg4, arg5, arg6);
1697}
1698//******************************************************************************
1699//******************************************************************************
1700int WIN32API SelectClipRgn( HDC arg1, HRGN arg2)
1701{
1702 dprintf(("GDI32: OS2SelectClipRgn"));
1703 return O32_SelectClipRgn(arg1, arg2);
1704}
1705//******************************************************************************
1706//******************************************************************************
1707int WIN32API SetArcDirection( HDC arg1, int arg2)
1708{
1709 dprintf(("GDI32: OS2SetArcDirection"));
1710 return O32_SetArcDirection(arg1, arg2);
1711}
1712//******************************************************************************
1713//******************************************************************************
1714LONG WIN32API SetBitmapBits( HBITMAP arg1, LONG arg2, const VOID * arg3)
1715{
1716 dprintf(("GDI32: OS2SetBitmapBits"));
1717 return O32_SetBitmapBits(arg1, (DWORD)arg2, arg3);
1718}
1719//******************************************************************************
1720//******************************************************************************
1721BOOL WIN32API SetBitmapDimensionEx( HBITMAP arg1, int arg2, int arg3, PSIZE arg4)
1722{
1723 dprintf(("GDI32: OS2SetBitmapDimensionEx"));
1724 return O32_SetBitmapDimensionEx(arg1, arg2, arg3, arg4);
1725}
1726//******************************************************************************
1727//******************************************************************************
1728UINT WIN32API SetBoundsRect( HDC arg1, const RECT * arg2, UINT arg3)
1729{
1730 dprintf(("GDI32: OS2SetBoundsRect"));
1731 return O32_SetBoundsRect(arg1, arg2, arg3);
1732}
1733//******************************************************************************
1734//******************************************************************************
1735BOOL WIN32API SetBrushOrgEx( HDC arg1, int arg2, int arg3, PPOINT arg4)
1736{
1737 BOOL rc;
1738
1739 rc = O32_SetBrushOrgEx(arg1, arg2, arg3, arg4);
1740 dprintf(("GDI32: OS2SetBrushOrgEx returned %d\n", rc));
1741 return(rc);
1742}
1743//******************************************************************************
1744//******************************************************************************
1745int WIN32API SetDIBits( HDC arg1, HBITMAP arg2, UINT arg3, UINT arg4, const VOID * arg5, const BITMAPINFO * arg6, UINT arg7)
1746{
1747 dprintf(("GDI32: OS2SetDIBits\n"));
1748 return O32_SetDIBits(arg1, arg2, arg3, arg4, arg5, arg6, arg7);
1749}
1750//******************************************************************************
1751//******************************************************************************
1752INT WIN32API SetDIBitsToDevice(HDC hdc, INT xDest, INT yDest, DWORD cx, DWORD cy, INT xSrc, INT ySrc, UINT startscan, UINT lines, LPCVOID bits, const BITMAPINFO *info, UINT coloruse)
1753{
1754 INT result, imgsize, palsize;
1755 char *ptr;
1756
1757 dprintf(("GDI32: OS2SetDIBitsToDevice hdc:%X xDest:%d yDest:%d, cx:%d, cy:%d, xSrc:%d, ySrc:%d, startscan:%d, lines:%d, bits:%X, info%X, coloruse:%d",
1758 hdc, xDest, yDest, cx, cy, xSrc, ySrc, startscan, lines, (LPVOID) bits, (PBITMAPINFO)info, coloruse));
1759
1760 // EB: ->>> Crazy. Nobody seen this Open32 bug ?
1761 // Dont't like dirty pointers, but Open32 needs a bit help.
1762 // Only tested with winmine.
1763 palsize = QueryPaletteSize((BITMAPINFOHEADER*)&info->bmiHeader);
1764 imgsize = CalcBitmapSize(info->bmiHeader.biBitCount,
1765 info->bmiHeader.biWidth, info->bmiHeader.biHeight);
1766 ptr = ((char *)info) + palsize + sizeof(BITMAPINFOHEADER);
1767 if(bits >= ptr && bits < ptr + imgsize)
1768 {
1769 bits = (char *)bits - imgsize +
1770 CalcBitmapSize(info->bmiHeader.biBitCount,
1771 info->bmiHeader.biWidth, lines);
1772 }
1773 // EB: <<<-
1774
1775 result = O32_SetDIBitsToDevice(hdc, xDest, yDest, cx, cy, xSrc, ySrc, startscan, lines, (PVOID) bits, (PBITMAPINFO)info, coloruse);
1776 return result;
1777}
1778//******************************************************************************
1779//******************************************************************************
1780HENHMETAFILE WIN32API SetEnhMetaFileBits( UINT arg1, const BYTE * arg2)
1781{
1782 dprintf(("GDI32: OS2SetEnhMetaFileBits"));
1783 return O32_SetEnhMetaFileBits(arg1, arg2);
1784}
1785//******************************************************************************
1786//******************************************************************************
1787int WIN32API SetGraphicsMode(HDC arg1, int arg2)
1788{
1789 dprintf(("GDI32: OS2SetGraphicsMode"));
1790 return O32_SetGraphicsMode(arg1, arg2);
1791}
1792//******************************************************************************
1793//******************************************************************************
1794int WIN32API SetMapMode( HDC arg1, int arg2)
1795{
1796 dprintf(("GDI32: OS2SetMapMode"));
1797 return O32_SetMapMode(arg1, arg2);
1798}
1799//******************************************************************************
1800//******************************************************************************
1801DWORD WIN32API SetMapperFlags( HDC arg1, DWORD arg2)
1802{
1803 dprintf(("GDI32: OS2SetMapperFlags"));
1804 return O32_SetMapperFlags(arg1, arg2);
1805}
1806//******************************************************************************
1807//******************************************************************************
1808HMETAFILE WIN32API SetMetaFileBitsEx( UINT arg1, const BYTE * arg2)
1809{
1810 dprintf(("GDI32: OS2SetMetaFileBitsEx"));
1811 return O32_SetMetaFileBitsEx(arg1, (PBYTE)arg2);
1812}
1813//******************************************************************************
1814//******************************************************************************
1815BOOL WIN32API SetMiterLimit( HDC arg1, float arg2, float * arg3)
1816{
1817 dprintf(("GDI32: OS2SetMiterLimit"));
1818 return O32_SetMiterLimit(arg1, arg2, arg3);
1819}
1820//******************************************************************************
1821//******************************************************************************
1822UINT WIN32API SetPaletteEntries( HPALETTE arg1, UINT arg2, UINT arg3, PALETTEENTRY * arg4)
1823{
1824 dprintf(("GDI32: OS2SetPaletteEntries"));
1825 return O32_SetPaletteEntries(arg1, arg2, arg3, (const PALETTEENTRY *)arg4);
1826}
1827//******************************************************************************
1828//******************************************************************************
1829int WIN32API SetPolyFillMode( HDC arg1, int arg2)
1830{
1831 dprintf(("GDI32: OS2SetPolyFillMode"));
1832 return O32_SetPolyFillMode(arg1, arg2);
1833}
1834//******************************************************************************
1835//******************************************************************************
1836BOOL WIN32API SetRectRgn( HRGN arg1, int arg2, int arg3, int arg4, int arg5)
1837{
1838 dprintf(("GDI32: OS2SetRectRgn"));
1839 return O32_SetRectRgn(arg1, arg2, arg3, arg4, arg5);
1840}
1841//******************************************************************************
1842//******************************************************************************
1843UINT WIN32API SetTextAlign( HDC arg1, UINT arg2)
1844{
1845 dprintf(("GDI32: OS2SetTextAlign"));
1846 return O32_SetTextAlign(arg1, arg2);
1847}
1848//******************************************************************************
1849//******************************************************************************
1850int WIN32API SetTextCharacterExtra( HDC arg1, int arg2)
1851{
1852 dprintf(("GDI32: OS2SetTextCharacterExtra"));
1853 return O32_SetTextCharacterExtra(arg1, arg2);
1854}
1855//******************************************************************************
1856//******************************************************************************
1857BOOL WIN32API SetTextJustification( HDC arg1, int arg2, int arg3)
1858{
1859 dprintf(("GDI32: OS2SetTextJustification"));
1860 return O32_SetTextJustification(arg1, arg2, arg3);
1861}
1862//******************************************************************************
1863//******************************************************************************
1864BOOL WIN32API SetViewportExtEx( HDC arg1, int arg2, int arg3, PSIZE arg4)
1865{
1866 dprintf(("GDI32: OS2SetViewportExtEx"));
1867 return O32_SetViewportExtEx(arg1, arg2, arg3, arg4);
1868}
1869//******************************************************************************
1870//******************************************************************************
1871BOOL WIN32API SetViewportOrgEx( HDC arg1, int arg2, int arg3, PPOINT arg4)
1872{
1873 dprintf(("GDI32: OS2SetViewportOrgEx"));
1874 return O32_SetViewportOrgEx(arg1, arg2, arg3, arg4);
1875}
1876//******************************************************************************
1877//******************************************************************************
1878HENHMETAFILE WIN32API SetWinMetaFileBits( UINT arg1, const BYTE * arg2, HDC arg3, const METAFILEPICT * arg4)
1879{
1880 dprintf(("GDI32: OS2SetWinMetaFileBits"));
1881 return O32_SetWinMetaFileBits(arg1, arg2, arg3, arg4);
1882}
1883//******************************************************************************
1884//******************************************************************************
1885BOOL WIN32API SetWindowExtEx( HDC arg1, int arg2, int arg3, PSIZE arg4)
1886{
1887 dprintf(("GDI32: OS2SetWindowExtEx"));
1888 return O32_SetWindowExtEx(arg1, arg2, arg3, arg4);
1889}
1890//******************************************************************************
1891//******************************************************************************
1892BOOL WIN32API SetWindowOrgEx( HDC arg1, int arg2, int arg3, PPOINT arg4)
1893{
1894 dprintf(("GDI32: OS2SetWindowOrgEx"));
1895 return O32_SetWindowOrgEx(arg1, arg2, arg3, arg4);
1896}
1897//******************************************************************************
1898//******************************************************************************
1899BOOL WIN32API SetWorldTransform( HDC arg1, const XFORM *arg2)
1900{
1901 dprintf(("GDI32: OS2SetWorldTransform"));
1902 return O32_SetWorldTransform(arg1, (LPXFORM)arg2);
1903}
1904//******************************************************************************
1905//******************************************************************************
1906INT WIN32API StartDocA( HDC arg1, const DOCINFOA *arg2)
1907{
1908 dprintf(("GDI32: OS2StartDocA"));
1909 return O32_StartDoc(arg1, (LPDOCINFOA)arg2);
1910}
1911//******************************************************************************
1912//******************************************************************************
1913INT WIN32API StartDocW( HDC arg1, const DOCINFOW *arg2)
1914{
1915 dprintf(("GDI32: OS2StartDocW STUB"));
1916 // NOTE: This will not work as is (needs UNICODE support)
1917// return O32_StartDoc(arg1, arg2);
1918 return 0;
1919}
1920//******************************************************************************
1921//******************************************************************************
1922int WIN32API StartPage( HDC arg1)
1923{
1924 dprintf(("GDI32: OS2StartPage"));
1925 return O32_StartPage(arg1);
1926}
1927//******************************************************************************
1928//******************************************************************************
1929BOOL WIN32API TextOutW( HDC arg1, int arg2, int arg3, LPCWSTR arg4, int arg5)
1930{
1931 char *astring = UnicodeToAsciiString((LPWSTR)arg4);
1932 BOOL rc;
1933
1934 dprintf(("GDI32: OS2TextOutW"));
1935 // NOTE: This will not work as is (needs UNICODE support)
1936 rc = O32_TextOut(arg1, arg2, arg3, astring, arg5);
1937 FreeAsciiString(astring);
1938 return rc;
1939}
1940//******************************************************************************
1941//******************************************************************************
1942BOOL WIN32API UnrealizeObject( HGDIOBJ arg1)
1943{
1944 dprintf(("GDI32: OS2UnrealizeObject"));
1945 return O32_UnrealizeObject(arg1);
1946}
1947//******************************************************************************
1948//******************************************************************************
1949BOOL WIN32API WidenPath( HDC arg1)
1950{
1951 dprintf(("GDI32: OS2WidenPath"));
1952 return O32_WidenPath(arg1);
1953}
1954//******************************************************************************
1955//CreateDisardableBitmap is obsolete and can be replaced by CreateCompatibleBitmap
1956//******************************************************************************
1957HBITMAP WIN32API CreateDiscardableBitmap(HDC hDC, int nWidth, int nHeight)
1958{
1959 dprintf(("GDI32: OS2CreateDisardableBitmap\n"));
1960 return O32_CreateCompatibleBitmap(hDC, nWidth, nHeight);
1961}
1962//******************************************************************************
1963//TODO: Not implemented
1964//******************************************************************************
1965int WIN32API SetAbortProc(HDC hdc, ABORTPROC lpAbortProc)
1966{
1967 dprintf(("GDI32: OS2SetAbortProc - stub (1)w\n"));
1968 return(1);
1969}
1970//******************************************************************************
1971//TODO:
1972//Should return the character set of the font currently selected into the hdc
1973//******************************************************************************
1974UINT WIN32API GetTextCharset(HDC hdc)
1975{
1976 dprintf(("GDI32: OS2GetTextCharset, not complete\n"));
1977 return(ANSI_CHARSET);
1978}
1979//******************************************************************************
1980//Selects the current path as a clipping region for a device context, combining
1981//any existing clipping region by using the specified mode
1982//TODO: Can be emulated with SelectClipRegion??
1983//******************************************************************************
1984BOOL WIN32API SelectClipPath(HDC hdc, int iMode)
1985{
1986 dprintf(("GDI32: OS2SelectClipPath, not implemented!(TRUE)\n"));
1987 return(TRUE);
1988}
1989//******************************************************************************
1990//TODO: Sets the color adjustment values for a device context. (used to adjust
1991// the input color of the src bitmap for calls of StretchBlt & StretchDIBits
1992// functions when HALFTONE mode is set
1993//******************************************************************************
1994BOOL WIN32API SetColorAdjustment(HDC hdc, CONST COLORADJUSTMENT *lpca)
1995{
1996 dprintf(("GDI32: OS2SetColorAdjustment, not implemented!(TRUE)\n"));
1997 return(TRUE);
1998}
1999//******************************************************************************
2000//WINE: OBJECTS\DIB.C
2001//******************************************************************************
2002HBITMAP WIN32API CreateDIBSection(HDC hdc, BITMAPINFO *pbmi, UINT iUsage,
2003 VOID **ppvBits, HANDLE hSection, DWORD dwOffset)
2004{
2005 HBITMAP res = 0;
2006 BOOL fFlip = 0;
2007
2008 dprintf(("GDI32: OS2CreateDIBSection, partly implemented!\n"));
2009 if(hSection) {
2010 dprintf(("GDI32: OS2CreateDIBSection, hSection != NULL, not supported!\n"));
2011 return NULL;
2012 }
2013
2014 //SvL: 13-9-98: StarCraft uses bitmap with negative height
2015 if(pbmi->bmiHeader.biWidth < 0) {
2016 pbmi->bmiHeader.biWidth = -pbmi->bmiHeader.biWidth;
2017 fFlip = FLIP_HOR;
2018 }
2019 if(pbmi->bmiHeader.biHeight < 0) {
2020 pbmi->bmiHeader.biHeight = -pbmi->bmiHeader.biHeight;
2021 fFlip |= FLIP_VERT;
2022 }
2023
2024 res = O32_CreateDIBitmap(hdc, &pbmi->bmiHeader, 0, NULL, pbmi, 0);
2025 if (res)
2026 {
2027 DIBSection *dsect = new DIBSection((WINBITMAPINFOHEADER *)&pbmi->bmiHeader, (DWORD)res, fFlip);
2028 dprintf(("Constructor returned\n",res));
2029 if(ppvBits!=NULL)
2030 *ppvBits = dsect->GetDIBObject();
2031 dprintf(("GDI32: return %08X\n",res));
2032 return(res);
2033 }
2034
2035 /* Error. */
2036 if (res) DeleteObject(res);
2037 *ppvBits = NULL;
2038#ifdef DEBUG
2039 dprintf(("GDI32: CreateDIBSection, error!\n"));
2040 dprintf(("pbmi->biWidth %d", pbmi->bmiHeader.biWidth));
2041 dprintf(("pbmi->biHeight %d", pbmi->bmiHeader.biHeight));
2042 dprintf(("pbmi->biBitCount %d", pbmi->bmiHeader.biBitCount));
2043#endif
2044
2045 return 0;
2046}
2047//******************************************************************************
2048//******************************************************************************
2049UINT WIN32API GetDIBColorTable(HDC hdc, UINT uStartIndex, UINT cEntries,
2050 RGBQUAD *pColors)
2051{
2052 HPALETTE hpal = O32_GetCurrentObject(hdc, OBJ_PAL);
2053 UINT rc;
2054 int i;
2055
2056 dprintf(("GDI32: OS2GetDIBColorTable, not implemented?\n"));
2057 rc = O32_GetPaletteEntries(hpal,
2058 uStartIndex,
2059 cEntries,
2060 (PALETTEENTRY *)pColors);
2061 for(i=0;
2062 i<cEntries;
2063 i++)
2064 {
2065 pColors[i].rgbReserved = 0;
2066 }
2067 dprintf(("GDI32: GetDIBColor returns %d\n", rc));
2068 return(rc);
2069}
2070//******************************************************************************
2071//******************************************************************************
2072UINT WIN32API SetDIBColorTable(HDC hdc, UINT uStartIndex, UINT cEntries,
2073 RGBQUAD *pColors)
2074{
2075 DIBSection *dsect = DIBSection::findHDC(hdc);
2076
2077 dprintf(("GDI32: OS2SetDIBColorTable\n"));
2078 if(dsect) {
2079 return(dsect->SetDIBColorTable(uStartIndex, cEntries, pColors));
2080 }
2081 else return(0);
2082}
2083//******************************************************************************
2084//******************************************************************************
2085HPALETTE WIN32API CreateHalftonePalette(HDC hdc)
2086{
2087 dprintf(("GDI32: OS2CreateHalftonePalette, not implemented\n"));
2088 return(NULL);
2089}
2090//******************************************************************************
2091//******************************************************************************
2092UINT WIN32API TranslateCharsetInfo(DWORD *lpSrc, LPCHARSETINFO lpCs, DWORD dwFlags)
2093{
2094 dprintf(("GDI32: OS2TranslateCharsetInfo, not implemented\n"));
2095 return(0);
2096}
2097//******************************************************************************
2098//Maps colors to system palette; faster way to update window (instead of redrawing)
2099//We just redraw
2100//******************************************************************************
2101BOOL WIN32API UpdateColors(HDC hdc)
2102{
2103 dprintf(("GDI32: OS2UpdateColors\n"));
2104 return O32_InvalidateRect(O32_WindowFromDC(hdc), NULL, FALSE);
2105}
2106//******************************************************************************
2107//******************************************************************************
2108BOOL WIN32API GdiFlush()
2109{
2110 dprintf(("GDI32: GdiFlush, not implemented (TRUE)\n"));
2111 return(TRUE);
2112}
2113//******************************************************************************
2114//******************************************************************************
2115BOOL WIN32API GdiComment(HDC hdc, UINT cbSize, CONST BYTE *lpData)
2116{
2117 dprintf(("GDI32: GdiComment, not implemented (TRUE)\n"));
2118 return(TRUE);
2119}
2120//******************************************************************************
2121//******************************************************************************
2122BOOL WIN32API GetCharWidthFloatA(HDC hdc, UINT iFirstChar, UINT iLastChar, PFLOAT pxBUffer)
2123{
2124 dprintf(("GDI32: GetCharWidthFloatA, not implemented\n"));
2125 return(FALSE);
2126}
2127//******************************************************************************
2128//******************************************************************************
2129BOOL WIN32API GetCharWidthFloatW(HDC hdc, UINT iFirstChar, UINT iLastChar, PFLOAT pxBUffer)
2130{
2131 dprintf(("GDI32: GetCharWidthFloatW, not implemented\n"));
2132 return(FALSE);
2133}
2134//******************************************************************************
2135//******************************************************************************
2136BOOL WIN32API GetCharABCWidthsFloatA(HDC hdc, UINT iFirstChar, UINT iLastChar, LPABCFLOAT pxBUffer)
2137{
2138 dprintf(("GDI32: GetCharABCWidthsFloatA, not implemented\n"));
2139 return(FALSE);
2140}
2141//******************************************************************************
2142//******************************************************************************
2143BOOL WIN32API GetCharABCWidthsFloatW(HDC hdc,
2144 UINT iFirstChar,
2145 UINT iLastChar,
2146 LPABCFLOAT pxBUffer)
2147{
2148 dprintf(("GDI32: GetCharABCWidthsFloatA, not implemented\n"));
2149 return(FALSE);
2150}
2151//******************************************************************************
2152//******************************************************************************
2153INT WIN32API ExtEscape(HDC hdc, INT nEscape, INT cbInput, LPCSTR lpszInData,
2154 INT cbOutput, LPSTR lpszOutData)
2155{
2156 dprintf(("GDI32: ExtEscape, not implemented\n"));
2157 return(0);
2158}
2159//******************************************************************************
2160//******************************************************************************
2161int WIN32API DrawEscape(HDC hdc, int nEscape, int cbInput, LPCSTR lpszInData)
2162{
2163 dprintf(("GDI32: DrawEscape, not implemented\n"));
2164 return(0);
2165}
2166//******************************************************************************
2167//******************************************************************************
2168BOOL WIN32API GetColorAdjustment(HDC hdc, COLORADJUSTMENT *lpca)
2169{
2170 dprintf(("GDI32: GetColorAdjustment, not implemented\n"));
2171 return(FALSE);
2172}
2173//******************************************************************************
2174//******************************************************************************
2175BOOL WIN32API PlgBlt(HDC hdcDest, CONST POINT *lpPoint, HDC hdcSrc, int nXSrc,
2176 int nYSrc, int nWidth, int nHeight, HBITMAP hbmMask,
2177 int xMast, int yMask)
2178{
2179 dprintf(("GDI32: PlgBlt, not implemented\n"));
2180 return(FALSE);
2181}
2182//******************************************************************************
2183//******************************************************************************
2184DWORD WIN32API GetGlyphOutlineA(HDC hdc, UINT uChar, UINT uFormat, LPGLYPHMETRICS lpgm,
2185 DWORD cbBuffer, LPVOID lpvBuffer, CONST MAT2 *lpmat2)
2186{
2187 dprintf(("GDI32: GetGlyphOutLineA, not implemented (GDI_ERROR)\n"));
2188 return(GDI_ERROR);
2189}
2190//******************************************************************************
2191
2192//******************************************************************************
2193/*KSO Thu 21.05.1998*/
2194DWORD WIN32API GetGlyphOutlineW(HDC hdc, UINT uChar, UINT uFormat, LPGLYPHMETRICS lpgm,
2195 DWORD cbBuffer, LPVOID lpvBuffer, CONST MAT2 *lpmat2)
2196{
2197 dprintf(("GDI32: GetGlyphOutLineW, not implemented\n"));
2198 return(GDI_ERROR);
2199}
2200//******************************************************************************
2201
2202//******************************************************************************
2203int WIN32API DescribePixelFormat(HDC, int, UINT, LPPIXELFORMATDESCRIPTOR)
2204{
2205 dprintf(("GDI32: DescribePixelFormat, not implemented (GDI_ERROR)\n"));
2206 return(GDI_ERROR);
2207}
2208//******************************************************************************
2209//******************************************************************************
2210UINT WIN32API SetSystemPaletteUse(HDC hdc, UINT flags)
2211{
2212 dprintf(("GDI32: SetSystemPaletteUse %X %X, not implemented (GDI_ERROR)\n", hdc, flags));
2213 return(GDI_ERROR);
2214}
2215//******************************************************************************
2216//******************************************************************************
2217BOOL WIN32API SetObjectOwner( HGDIOBJ arg1, int arg2 )
2218{
2219 // Here is a guess for a undocumented entry
2220 dprintf(("GDI32: SetObjectOwner - stub (TRUE)\n"));
2221 return TRUE;
2222}
2223//******************************************************************************
2224
2225
2226/* Office 97 stubs - KSO Thu 21.05.1998*/
2227//******************************************************************************
2228BOOL WIN32API GetTextExtentExPointA(/*KSO Thu 21.05.1998*/
2229 HDC hdc,
2230 LPCSTR str,
2231 int count,
2232 int maxExt,
2233 LPINT lpnFit,
2234 LPINT alpDx,
2235 LPSIZE size)
2236{
2237 int index, nFit, extent;
2238 SIZE tSize;
2239
2240 dprintf(("GDI32: GetTextExtendExPointA\n"));
2241
2242 size->cx = size->cy = nFit = extent = 0;
2243 for(index = 0; index < count; index++)
2244 {
2245 if(!O32_GetTextExtentPoint( hdc, str, 1, &tSize )) return FALSE;
2246 if( extent+tSize.cx < maxExt )
2247 {
2248 extent+=tSize.cx;
2249 nFit++;
2250 str++;
2251 if( alpDx )
2252 alpDx[index] = extent;
2253 if( tSize.cy > size->cy ) size->cy = tSize.cy;
2254 }
2255 else break;
2256 }
2257 size->cx = extent;
2258
2259 if (lpnFit != NULL) // check if result is desired
2260 *lpnFit = nFit;
2261
2262 dprintf(("GDI32: GetTextExtendExPointA(%08x '%.*s' %d) returning %d %d %d\n",
2263 hdc,count,str,maxExt,nFit, size->cx,size->cy));
2264 return TRUE;
2265}
2266//******************************************************************************
2267//******************************************************************************
2268BOOL WIN32API GetTextExtentExPointW( /*KSO Thu 21.05.1998*/
2269 HDC arg1,
2270 LPCWSTR arg2,
2271 int arg3,
2272 int arg4,
2273 LPINT arg5,
2274 LPINT arg6,
2275 LPSIZE arg7
2276 )
2277{
2278 char *astring = UnicodeToAsciiString((LPWSTR)arg2);
2279 BOOL rc;
2280
2281 dprintf(("GDI32: GetTextExtendExPointW\n"));
2282 rc = GetTextExtentExPointA(arg1, astring, arg3, arg4, arg5, arg6, arg7);
2283 FreeAsciiString(astring);
2284 return rc;
2285}
2286//******************************************************************************
2287//******************************************************************************
2288UINT WIN32API GetTextCharsetInfo( /*KSO Thu 21.05.1998*/
2289 HDC hdc,
2290 LPFONTSIGNATURE lpSig,
2291 DWORD dwFlags
2292 )
2293{
2294 dprintf(("GDI32: GetTextCharsetInfo - stub\n"));
2295 return FALSE;
2296}
2297//******************************************************************************
2298//******************************************************************************
2299UINT WIN32API GetSystemPaletteUse( /*KSO Thu 21.05.1998*/
2300 HDC hdc
2301 )
2302{
2303 dprintf(("GDI32: GetSystemPaletteUse - stub\n"));
2304 return FALSE; /*?*/
2305}
2306//******************************************************************************
2307//******************************************************************************
2308BOOL WIN32API PlayEnhMetaFileRecord( /*KSO Thu 21.05.1998*/
2309 HDC arg1,
2310 LPHANDLETABLE arg2,
2311 CONST ENHMETARECORD *arg3,
2312 UINT arg4
2313 )
2314{
2315 dprintf(("GDI32: PlayEnhMetaFileRecord - stub\n"));
2316 return FALSE;
2317}
2318//******************************************************************************
2319UINT WIN32API GetEnhMetaFileDescriptionA( /*KSO Thu 21.05.1998*/
2320 HENHMETAFILE arg1,
2321 UINT arg2,
2322 LPSTR arg3
2323 )
2324{
2325 dprintf(("GDI32: GetEnhMetaFileDescriptionA - stub\n"));
2326 return FALSE;
2327}
2328//******************************************************************************
2329//******************************************************************************
2330UINT WIN32API GetEnhMetaFileDescriptionW( /*KSO Thu 21.05.1998*/
2331 HENHMETAFILE arg1,
2332 UINT arg2,
2333 LPWSTR arg3
2334 )
2335{
2336 dprintf(("GDI32: GetEnhMetaFileDescriptionW - stub\n"));
2337 return FALSE;
2338}
2339//******************************************************************************
2340//******************************************************************************
2341UINT WIN32API DeleteColorSpace( /*KSO Thu 21.05.1998*/
2342 HCOLORSPACE hColorSpace
2343 )
2344{
2345 dprintf(("GDI32: DeleteColorSpace - stub\n"));
2346 return FALSE;
2347}
2348//******************************************************************************
2349//******************************************************************************
2350BOOL WIN32API SetColorSpace( /*KSO Thu 21.05.1998*/
2351 HDC hdc,
2352 HCOLORSPACE hColorSpace
2353 )
2354{
2355 dprintf(("GDI32: SetColorSpace - stub\n"));
2356 return FALSE;
2357}
2358//******************************************************************************
2359//******************************************************************************
2360 HCOLORSPACE WIN32API CreateColorSpaceA( /*KSO Thu 21.05.1998*/
2361 LPLOGCOLORSPACEA lpLogColorSpace
2362 )
2363{
2364 dprintf(("GDI32: CreateColorSpaceA - stub\n"));
2365 return 0;
2366}
2367//******************************************************************************
2368//******************************************************************************
2369HCOLORSPACE WIN32API CreateColorSpaceW( /*KSO Thu 21.05.1998*/
2370 LPLOGCOLORSPACEW lpwLogColorSpace
2371 )
2372{
2373 dprintf(("GDI32: CreateColorSpaceW - stub\n"));
2374 return 0;
2375}
2376//******************************************************************************
2377//******************************************************************************
2378HANDLE WIN32API GetColorSpace( /*KSO Thu 21.05.1998*/
2379 HDC hdc
2380 )
2381{
2382 dprintf(("GDI32: GetColorSpace - stub\n"));
2383 return 0;
2384}
2385//******************************************************************************
2386//******************************************************************************
2387int WIN32API SetICMMode( /*KSO Thu 21.05.1998*/
2388 HDC hdc,
2389 int mode
2390 )
2391{
2392 dprintf(("GDI32: SetICMMode - stub\n"));
2393 return 0;
2394}
2395//******************************************************************************
2396
2397
2398
2399
2400/*****************************************************************************
2401 * Name : BOOL CancelDC
2402 * Purpose : The CancelDC function cancels any pending operation on the
2403 * specified device context (DC).
2404 * Parameters: HDC hdc handle of device context
2405 * Variables :
2406 * Result : TRUE / FALSE
2407 * Remark :
2408 * Status : UNTESTED STUB
2409 *
2410 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2411 *****************************************************************************/
2412
2413BOOL WIN32API CancelDC(HDC hdc)
2414{
2415 dprintf(("GDI32: CancelDC(%08xh) not implemented.\n",
2416 hdc));
2417
2418 return (FALSE);
2419}
2420
2421
2422/*****************************************************************************
2423 * Name : BOOL CheckColorsInGamut
2424 * Purpose : The CheckColorsInGamut function indicates whether the specified
2425 * color values are within the gamut of the specified device.
2426 * Parameters: HDC hdc handle of device context
2427 * LPVOID lpaRGBQuad
2428 * LPVOID lpResult
2429 * DWORD dwResult
2430 * Variables :
2431 * Result : TRUE / FALSE
2432 * Remark :
2433 * Status : UNTESTED STUB
2434 *
2435 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2436 *****************************************************************************/
2437
2438BOOL WIN32API CheckColorsInGamut(HDC hdc,
2439 LPVOID lpaRGBQuad,
2440 LPVOID lpResult,
2441 DWORD dwResult)
2442{
2443 dprintf(("GDI32: CheckColorsInGamut(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2444 hdc,
2445 lpaRGBQuad,
2446 lpResult,
2447 dwResult));
2448
2449 return (FALSE);
2450}
2451
2452
2453/*****************************************************************************
2454 * Name : BOOL ColorMatchToTarget
2455 * Purpose : The ColorMatchToTarget function enables or disables preview for
2456 * the specified device context. When preview is enabled, colors
2457 * in subsequent output to the specified device context are
2458 * displayed as they would appear on the target device. This is
2459 * useful for checking how well the target maps the specified
2460 * colors in an image. To enable preview, image color matching
2461 * must be enabled for both the target and the preview device context.
2462 * Parameters: HDC hdc handle of device context
2463 * HDC hdcTarget handle of target device context
2464 * DWORD uiAction
2465 * Variables :
2466 * Result : TRUE / FALSE
2467 * Remark :
2468 * Status : UNTESTED STUB
2469 *
2470 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2471 *****************************************************************************/
2472
2473BOOL WIN32API ColorMatchToTarget(HDC hdc,
2474 HDC hdcTarget,
2475 DWORD uiAction)
2476{
2477 dprintf(("GDI32: ColorMatchToTarget(%08xh,%08xh,%08xh) not implemented.\n",
2478 hdc,
2479 hdcTarget,
2480 uiAction));
2481
2482 return (FALSE);
2483}
2484
2485
2486/*****************************************************************************
2487 * Name : BOOL CombineTransform
2488 * Purpose : The CombineTransform function concatenates two world-space to
2489 * page-space transformations.
2490 * Parameters: LLPXFORM lLPXFORMResult address of combined transformation
2491 * XFORM *lLPXFORM1 address of 1st transformation
2492 * XFORM *lLPXFORM2 address of 2nd transformation
2493 * Variables :
2494 * Result : TRUE / FALSE
2495 * Remark :
2496 * Status : UNTESTED STUB
2497 *
2498 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2499 *****************************************************************************/
2500
2501BOOL WIN32API CombineTransform(LPXFORM lLPXFORMResult,
2502 CONST XFORM *lLPXFORM1,
2503 CONST XFORM *lLPXFORM2)
2504{
2505 dprintf(("GDI32: CombineTransform(%08xh,%08xh,%08xh) not implemented.\n",
2506 lLPXFORMResult,
2507 lLPXFORM1,
2508 lLPXFORM2));
2509
2510 return (FALSE);
2511}
2512
2513
2514
2515/*****************************************************************************
2516 * Name : HBRUSH CreateDIBPatternBrush
2517 * Purpose : The CreateDIBPatternBrush function creates a logical brush that
2518 * has the pattern specified by the specified device-independent
2519 * bitmap (DIB). The brush can subsequently be selected into any
2520 * device context that is associated with a device that supports
2521 * raster operations.
2522 * This function is provided only for compatibility with applications
2523 * written for versions of Windows earlier than 3.0. For Win32-based
2524 * applications, use the CreateDIBPatternBrushPt function.
2525 * Parameters: HGLOBAL hglbDIBPacked handle of device-independent bitmap
2526 * UINT fuColorSpec color table data
2527 * Variables :
2528 * Result : TRUE / FALSE
2529 * Remark :
2530 * Status : UNTESTED STUB
2531 *
2532 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2533 *****************************************************************************/
2534
2535HBRUSH WIN32API CreateDIBPatternBrush(HGLOBAL hglbDIBPacked,
2536 UINT fuColorSpec)
2537{
2538 dprintf(("GDI32: CreateDIBPatternBrush(%08xh, %08xh) not implemented.\n",
2539 hglbDIBPacked,
2540 fuColorSpec));
2541
2542 return (0);
2543}
2544
2545
2546
2547
2548/*****************************************************************************
2549 * Name : int EnumICMProfilesA
2550 * Purpose : The EnumICMProfilesA function enumerates the different color
2551 * profiles that the system supports for the specified device context.
2552 * Parameters: HDC hdc
2553 * ICMENUMPROC lpICMEnumFunc
2554 * LPARAM lParam
2555 * Variables :
2556 * Result : TRUE / FALSE
2557 * Remark :
2558 * Status : UNTESTED STUB
2559 *
2560 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2561 *****************************************************************************/
2562
2563int WIN32API EnumICMProfilesA(HDC hdc,
2564 ICMENUMPROCA lpICMEnumProc,
2565 LPARAM lParam)
2566{
2567 dprintf(("GDI32: EnumICMProfilesA(%08xh, %08xh, %08xh) not implemented(-1).\n",
2568 hdc,
2569 lpICMEnumProc,
2570 lParam));
2571
2572 return (-1);
2573}
2574
2575
2576/*****************************************************************************
2577 * Name : int EnumICMProfilesW
2578 * Purpose : The EnumICMProfilesW function enumerates the different color
2579 * profiles that the system supports for the specified device context.
2580 * Parameters: HDC hdc
2581 * ICMENUMPROC lpICMEnumFunc
2582 * LPARAM lParam
2583 * Variables :
2584 * Result : TRUE / FALSE
2585 * Remark :
2586 * Status : UNTESTED STUB
2587 *
2588 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2589 *****************************************************************************/
2590
2591int WIN32API EnumICMProfilesW(HDC hdc,
2592 ICMENUMPROCW lpICMEnumProc,
2593 LPARAM lParam)
2594{
2595 dprintf(("GDI32: EnumICMProfilesW(%08xh, %08xh, %08xh) not implemented (-1).\n",
2596 hdc,
2597 lpICMEnumProc,
2598 lParam));
2599
2600 return (-1);
2601}
2602
2603
2604/*****************************************************************************
2605 * Name : BOOL FixBrushOrgEx
2606 * Purpose : The FixBrushOrgEx function is not implemented in the Win32 API.
2607 * It is provided for compatibility with Win32s. If called, the
2608 * function does nothing, and returns FALSE.
2609 * Parameters: HDC, int, int, LPPOINT
2610 * Variables :
2611 * Result : TRUE / FALSE
2612 * Remark : not implemented in Win32
2613 * Status : UNTESTED STUB
2614 *
2615 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2616 *****************************************************************************/
2617
2618BOOL WIN32API FixBrushOrgEx(HDC hdc,
2619 int iDummy1,
2620 int iDummy2,
2621 LPPOINT lpPoint)
2622{
2623 dprintf(("GDI32: FixBrushOrgEx(%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2624 hdc,
2625 iDummy1,
2626 iDummy2,
2627 lpPoint));
2628
2629 return (FALSE);
2630}
2631
2632
2633/*****************************************************************************
2634 * Name : DWORD GdiGetBatchLimit
2635 * Purpose : The GdiGetBatchLimit function returns the maximum number of
2636 * function calls that can be accumulated in the calling thread's
2637 * current batch. The system flushes the current batch whenever
2638 * this limit is exceeded.
2639 * Parameters:
2640 * Variables :
2641 * Result : 1
2642 * Remark :
2643 * Status : UNTESTED STUB
2644 *
2645 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2646 *****************************************************************************/
2647
2648DWORD WIN32API GdiGetBatchLimit(VOID)
2649{
2650 dprintf(("GDI32: GdiGetBatchLimit() not implemented (1).\n"));
2651
2652 return (1);
2653}
2654
2655
2656/*****************************************************************************
2657 * Name : DWORD GdiSetBatchLimit
2658 * Purpose : The GdiSetBatchLimit function sets the maximum number of
2659 * functions that can be accumulated in the calling thread's current
2660 * batch. The system flushes the current batch whenever this limit
2661 * is exceeded.
2662 * Parameters: DWORD dwLimit
2663 * Variables :
2664 * Result :
2665 * Remark :
2666 * Status : UNTESTED STUB
2667 *
2668 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2669 *****************************************************************************/
2670
2671DWORD WIN32API GdiSetBatchLimit(DWORD dwLimit)
2672{
2673 dprintf(("GDI32: GdiSetBatchLimit(%08xh) not implemented (1).\n",
2674 dwLimit));
2675
2676 return (1);
2677}
2678
2679
2680/*****************************************************************************
2681 * Name : DWORD GetCharacterPlacementA
2682 * Purpose : The GetCharacterPlacementA function retrieves information about
2683 * a character string, such as character widths, caret positioning,
2684 * ordering within the string, and glyph rendering. The type of
2685 * information returned depends on the dwFlags parameter and is
2686 * based on the currently selected font in the given display context.
2687 * The function copies the information to the specified GCP_RESULTSA
2688 * structure or to one or more arrays specified by the structure.
2689 * Parameters: HDC hdc handle to device context
2690 * LPCSTR lpString pointer to string
2691 * int nCount number of characters in string
2692 * int nMaxExtent maximum extent for displayed string
2693 * LPGCP_RESULTSA *lpResults pointer to buffer for placement result
2694 * DWORD dwFlags placement flags
2695 * Variables :
2696 * Result :
2697 * Remark :
2698 * Status : UNTESTED STUB
2699 *
2700 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2701 *****************************************************************************/
2702
2703DWORD WIN32API GetCharacterPlacementA(HDC hdc,
2704 LPCSTR lpString,
2705 int nCount,
2706 int nMaxExtent,
2707 GCP_RESULTSA * lpResults,
2708 DWORD dwFlags)
2709{
2710 dprintf(("GDI32: GetCharacterPlacementA(%08xh,%s,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2711 hdc,
2712 lpString,
2713 nCount,
2714 nMaxExtent,
2715 lpResults,
2716 dwFlags));
2717
2718 return (0);
2719}
2720
2721
2722/*****************************************************************************
2723 * Name : DWORD GetCharacterPlacementW
2724 * Purpose : The GetCharacterPlacementW function retrieves information about
2725 * a character string, such as character widths, caret positioning,
2726 * ordering within the string, and glyph rendering. The type of
2727 * information returned depends on the dwFlags parameter and is
2728 * based on the currently selected font in the given display context.
2729 * The function copies the information to the specified GCP_RESULTSW
2730 * structure or to one or more arrays specified by the structure.
2731 * Parameters: HDC hdc handle to device context
2732 * LPCSTR lpString pointer to string
2733 * int nCount number of characters in string
2734 * int nMaxExtent maximum extent for displayed string
2735 * GCP_RESULTSW *lpResults pointer to buffer for placement result
2736 * DWORD dwFlags placement flags
2737 * Variables :
2738 * Result :
2739 * Remark :
2740 * Status : UNTESTED STUB
2741 *
2742 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2743 *****************************************************************************/
2744
2745DWORD WIN32API GetCharacterPlacementW(HDC hdc,
2746 LPCWSTR lpString,
2747 int nCount,
2748 int nMaxExtent,
2749 GCP_RESULTSW *lpResults,
2750 DWORD dwFlags)
2751{
2752 dprintf(("GDI32: GetCharacterPlacementW(%08xh,%s,%08xh,%08xh,%08xh,%08xh) not implemented.\n",
2753 hdc,
2754 lpString,
2755 nCount,
2756 nMaxExtent,
2757 lpResults,
2758 dwFlags));
2759
2760 return (0);
2761}
2762
2763
2764/*****************************************************************************
2765 * Name : DWORD GetDeviceGammaRamp
2766 * Purpose : The GetDeviceGammaRamp function retrieves the gamma ramp on
2767 * direct color display boards.
2768 * Parameters: HDC hdc handle to device context
2769 * LPVOID lpRamp Gamma ramp array
2770 * Variables :
2771 * Result :
2772 * Remark :
2773 * Status : UNTESTED STUB
2774 *
2775 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2776 *****************************************************************************/
2777
2778DWORD WIN32API GetDeviceGammaRamp(HDC hdc,
2779 LPVOID lpRamp)
2780{
2781 dprintf(("GDI32: GetDeviceGammaRamp(%08xh, %08xh) not implemented.\n",
2782 hdc,
2783 lpRamp));
2784
2785 return (FALSE);
2786}
2787
2788
2789
2790
2791/*****************************************************************************
2792 * Name : BOOL GetICMProfileA
2793 * Purpose : The GetICMProfileA function retrieves the name of the color
2794 * profile file for the device associated with the specified device
2795 * context.
2796 * Parameters: HDC hdc handle to device context
2797 * DWORD cbName
2798 * LPTSTR lpszFilename
2799 * Variables :
2800 * Result : TRUE / FALSE
2801 * Remark :
2802 * Status : UNTESTED STUB
2803 *
2804 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2805 *****************************************************************************/
2806
2807BOOL WIN32API GetICMProfileA(HDC hdc,
2808 DWORD cbName,
2809 LPTSTR lpszFilename)
2810{
2811 dprintf(("GDI32: GetICMProfileA(%08xh, %08xh, %08xh) not implemented.\n",
2812 hdc,
2813 cbName,
2814 lpszFilename));
2815
2816 return (FALSE);
2817}
2818
2819
2820/*****************************************************************************
2821 * Name : BOOL GetICMProfileW
2822 * Purpose : The GetICMProfileW function retrieves the name of the color
2823 * profile file for the device associated with the specified device
2824 * context.
2825 * Parameters: HDC hdc handle to device context
2826 * DWORD cbName
2827 * LPWSTR lpszFilename
2828 * Variables :
2829 * Result : TRUE / FALSE
2830 * Remark :
2831 * Status : UNTESTED STUB
2832 *
2833 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2834 *****************************************************************************/
2835
2836BOOL WIN32API GetICMProfileW(HDC hdc,
2837 DWORD cbName,
2838 LPTSTR lpszFilename)
2839{
2840 dprintf(("GDI32: GetICMProfileW(%08xh, %08xh, %08xh) not implemented.\n",
2841 hdc,
2842 cbName,
2843 lpszFilename));
2844
2845 return (FALSE);
2846}
2847
2848
2849/*****************************************************************************
2850 * Name : BOOL GetLogColorSpaceA
2851 * Purpose : The GetLogColorSpace function retrieves information about the
2852 * logical color space identified by the specified handle.
2853 * Parameters: HCOLORSPACE hColorSpace
2854 * LPLOGCOLORSPACE lpbuffer
2855 * DWORD nSize
2856 * Variables :
2857 * Result : TRUE / FALSE
2858 * Remark :
2859 * Status : UNTESTED STUB
2860 *
2861 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2862 *****************************************************************************/
2863
2864#define LPLOGCOLORSPACE LPVOID
2865BOOL WIN32API GetLogColorSpaceA(HCOLORSPACE hColorSpace,
2866 LPLOGCOLORSPACE lpBuffer,
2867 DWORD nSize)
2868{
2869 dprintf(("GDI32: GetLogColorSpaceA(%08xh, %08xh, %08xh) not implemented.\n",
2870 hColorSpace,
2871 lpBuffer,
2872 nSize));
2873
2874 return (FALSE);
2875}
2876
2877
2878/*****************************************************************************
2879 * Name : BOOL GetLogColorSpaceW
2880 * Purpose : The GetLogColorSpace function retrieves information about the
2881 * logical color space identified by the specified handle.
2882 * Parameters: HCOLORSPACE hColorSpace
2883 * LPLOGCOLORSPACE lpbuffer
2884 * DWORD nSize
2885 * Variables :
2886 * Result : TRUE / FALSE
2887 * Remark :
2888 * Status : UNTESTED STUB
2889 *
2890 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2891 *****************************************************************************/
2892
2893BOOL WIN32API GetLogColorSpaceW(HCOLORSPACE hColorSpace,
2894 LPLOGCOLORSPACE lpBuffer,
2895 DWORD nSize)
2896{
2897 dprintf(("GDI32: GetLogColorSpaceW(%08xh, %08xh, %08xh) not implemented.\n",
2898 hColorSpace,
2899 lpBuffer,
2900 nSize));
2901
2902 return (FALSE);
2903}
2904
2905
2906/*****************************************************************************
2907 * Name : int GetMetaRgn
2908 * Purpose : The GetMetaRgn function retrieves the current metaregion for
2909 * the specified device context.
2910 * Parameters: HDC hdc handle of device context
2911 * HRGN hrgn handle of region
2912 * Variables :
2913 * Result : 0 / 1
2914 * Remark :
2915 * Status : UNTESTED STUB
2916 *
2917 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2918 *****************************************************************************/
2919
2920int WIN32API GetMetaRgn(HDC hdc,
2921 HRGN hrgn)
2922{
2923 dprintf(("GDI32: GetMetaRgn(%08xh, %08xh) not implemented.\n",
2924 hdc,
2925 hrgn));
2926
2927 return (0);
2928}
2929
2930
2931/*****************************************************************************
2932 * Name : int GetPixelFormat
2933 * Purpose : The GetPixelFormat function obtains the index of the specified
2934 * device context's currently selected pixel format.
2935 * Parameters: HDC hdc handle of device context
2936 * Variables :
2937 * Result : 0 / 1
2938 * Remark :
2939 * Status : UNTESTED STUB
2940 *
2941 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2942 *****************************************************************************/
2943
2944int WIN32API GetPixelFormat(HDC hdc)
2945{
2946 dprintf(("GDI32: GetPixelFormat(%08xh) not implemented.\n",
2947 hdc));
2948
2949 return (0);
2950}
2951
2952
2953/*****************************************************************************
2954 * Name : BOOL PolyTextOutA
2955 * Purpose : The PolyTextOutA function draws several strings using the font
2956 * and text colors currently selected in the specified device context.
2957 * Parameters: HDC hdc handle of device context
2958 * CONST POLYTEXT *pptxt address of array of structures that identify strings
2959 * int cStrings number of structures in array
2960 * Variables :
2961 * Result : TRUE / FALSE
2962 * Remark :
2963 * Status : UNTESTED STUB
2964 *
2965 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
2966 *****************************************************************************/
2967
2968BOOL WIN32API PolyTextOutA(HDC hdc,
2969 POLYTEXTA *pptxt,
2970 int cStrings)
2971{
2972 dprintf(("GDI32: PolyTextOutA(%08xh, %08xh, %08xh) not implemented.\n",
2973 hdc,
2974 pptxt,
2975 cStrings));
2976
2977 return (FALSE);
2978}
2979
2980
2981#if 0
2982
2983The POLYTEXT structure describes how the PolyTextOut function should draw a string of text.
2984
2985Members
2986
2987x
2988
2989Specifies the horizontal reference point for the string. The string is aligned to this point using the current text-alignment mode.
2990
2991y
2992
2993Specifies the vertical reference point for the string. The string is aligned to this point using the current text-alignment mode.
2994
2995n
2996
2997Specifies the number of characters in the string.
2998
2999uiFlags
3000
3001Specifies whether the string is to be opaque or clipped and whether the string is accompanied by an array of character-width values. This member can be one or more of the following values:
3002
3003Value Meaning
3004ETO_OPAQUE The rectangles given for each string is to be opaqued with the current background color.
3005ETO_CLIPPED Each string is to be clipped to its given rectangle.
3006lpstr
3007
3008Points to a string of text to be drawn by the PolyTextOut function.
3009
3010rcl
3011
3012Specifies a rectangle structure that contains the dimensions of the opaquing or clipping rectangle. This member is ignored if neither of the ETO_OPAQUE nor the ETO_CLIPPED value is specified for the uiFlags member.
3013
3014pdx
3015
3016Specifies in an array the width value for each character in the string.
3017
3018See Also
3019
3020PolyTextOut
3021#endif
3022
3023
3024/*****************************************************************************
3025 * Name : BOOL PolyTextOutW
3026 * Purpose : The PolyTextOutW function draws several strings using the font
3027 * and text colors currently selected in the specified device context.
3028 * Parameters: HDC hdc handle of device context
3029 * CONST POLYTEXT *pptxt address of array of structures that identify strings
3030 * int cStrings number of structures in array
3031 * Variables :
3032 * Result : TRUE / FALSE
3033 * Remark :
3034 * Status : UNTESTED STUB
3035 *
3036 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
3037 *****************************************************************************/
3038
3039BOOL WIN32API PolyTextOutW(HDC hdc,
3040 POLYTEXTW *pptxt,
3041 int cStrings)
3042{
3043 dprintf(("GDI32: PolyTextOutW(%08xh, %08xh, %08xh) not implemented.\n",
3044 hdc,
3045 pptxt,
3046 cStrings));
3047
3048 return (FALSE);
3049}
3050
3051
3052/*****************************************************************************
3053 * Name : BOOL SetDeviceGammaRamp
3054 * Purpose : The SetDeviceGammaRamp function sets the gamma ramp on direct
3055 * color display boards.
3056 * Parameters: HDC hdc handle of device context
3057 * LPVOID lpRamp
3058 * Variables :
3059 * Result : TRUE / FALSE
3060 * Remark :
3061 * Status : UNTESTED STUB
3062 *
3063 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
3064 *****************************************************************************/
3065
3066BOOL WIN32API SetDeviceGammaRamp(HDC hdc,
3067 LPVOID lpRamp)
3068{
3069 dprintf(("GDI32: SetDeviceGammaRamp(%08xh, %08xh) not implemented.\n",
3070 hdc,
3071 lpRamp));
3072
3073 return (FALSE);
3074}
3075
3076
3077/*****************************************************************************
3078 * Name : BOOL SetICMProfileA
3079 * Purpose : The SetICMProfileA function sets the color profile for the
3080 * specified device context.
3081 * Parameters: HDC hdc handle of device context
3082 * LPTSTR lpFileName
3083 * Variables :
3084 * Result : TRUE / FALSE
3085 * Remark :
3086 * Status : UNTESTED STUB
3087 *
3088 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
3089 *****************************************************************************/
3090
3091BOOL WIN32API SetICMProfileA(HDC hdc,
3092 LPTSTR lpFileName)
3093{
3094 dprintf(("GDI32: SetICMProfileA(%08xh, %s) not implemented.\n",
3095 hdc,
3096 lpFileName));
3097
3098 return (FALSE);
3099}
3100
3101
3102/*****************************************************************************
3103 * Name : BOOL SetICMProfileW
3104 * Purpose : The SetICMProfileW function sets the color profile for the
3105 * specified device context.
3106 * Parameters: HDC hdc handle of device context
3107 * LPTSTR lpFileName
3108 * Variables :
3109 * Result : TRUE / FALSE
3110 * Remark :
3111 * Status : UNTESTED STUB
3112 *
3113 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
3114 *****************************************************************************/
3115
3116BOOL WIN32API SetICMProfileW(HDC hdc,
3117 LPWSTR lpFileName)
3118{
3119 dprintf(("GDI32: SetICMProfileW(%08xh, %s) not implemented.\n",
3120 hdc,
3121 lpFileName));
3122
3123 return (FALSE);
3124}
3125
3126
3127/*****************************************************************************
3128 * Name : int SetMetaRgn
3129 * Purpose : The SetMetaRgn function intersects the current clipping region
3130 * for the specified device context with the current metaregion
3131 * and saves the combined region as the new metaregion for the
3132 * specified device context. The clipping region is reset to a null region.
3133 * Parameters: HDC hdc handle of device context
3134 * Variables :
3135 * Result : TRUE / FALSE
3136 * Remark :
3137 * Status : UNTESTED STUB
3138 *
3139 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
3140 *****************************************************************************/
3141
3142BOOL WIN32API SetMetaRgn(HDC hdc)
3143{
3144 dprintf(("GDI32: SetMetaRgn(%08xh) not implemented.\n",
3145 hdc));
3146
3147 return (NULLREGION);
3148}
3149
3150
3151/*****************************************************************************
3152 * Name : BOOL UpdateICMRegKeyA
3153 * Purpose : The UpdateICMRegKeyA function installs, removes, or queries
3154 * registry entries that identify ICC color profiles or color-matching
3155 * DLLs. The function carries out the action specified by the nCommand
3156 * parameter.
3157 * Parameters: DWORD dwReserved
3158 * DWORD CMID
3159 * LPTSTR lpszFileName
3160 * UINT nCommand
3161 * Variables :
3162 * Result : TRUE / FALSE
3163 * Remark :
3164 * Status : UNTESTED STUB
3165 *
3166 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
3167 *****************************************************************************/
3168
3169BOOL WIN32API UpdateICMRegKeyA(DWORD dwReserved,
3170 DWORD CMID,
3171 LPTSTR lpszFileName,
3172 UINT nCommand)
3173{
3174 dprintf(("GDI32: UpdateICMRegKeyA(%08xh, %08xh, %08xh, %08xh) not implemented.\n",
3175 dwReserved,
3176 CMID,
3177 lpszFileName,
3178 nCommand));
3179
3180 return (FALSE);
3181}
3182
3183
3184/*****************************************************************************
3185 * Name : BOOL UpdateICMRegKeyW
3186 * Purpose : The UpdateICMRegKeyW function installs, removes, or queries
3187 * registry entries that identify ICC color profiles or color-matching
3188 * DLLs. The function carries out the action specified by the nCommand
3189 * parameter.
3190 * Parameters: DWORD dwReserved
3191 * DWORD CMID
3192 * LPWSTR lpszFileName
3193 * UINT nCommand
3194 * Variables :
3195 * Result : TRUE / FALSE
3196 * Remark :
3197 * Status : UNTESTED STUB
3198 *
3199 * Author : Patrick Haller [Mon, 1998/06/15 08:00]
3200 *****************************************************************************/
3201
3202BOOL WIN32API UpdateICMRegKeyW(DWORD dwReserved,
3203 DWORD CMID,
3204 LPWSTR lpszFileName,
3205 UINT nCommand)
3206{
3207 dprintf(("GDI32: UpdateICMRegKeyW(%08xh, %08xh, %08xh, %08xh) not implemented.\n",
3208 dwReserved,
3209 CMID,
3210 lpszFileName,
3211 nCommand));
3212
3213 return (FALSE);
3214}
3215
3216
3217
Note: See TracBrowser for help on using the repository browser.