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

Last change on this file since 150 was 150, checked in by phaller, 26 years ago

Fix: Crash in GDI32:GetTextExtentExA with OPENCHAT.EXE

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