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

Last change on this file since 1606 was 1606, checked in by sandervl, 26 years ago

EBs fixes

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