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

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

EB's dibsection updates

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