Release 970215 Sat Feb 15 11:59:17 1997 Alexandre Julliard <julliard@lrc.epfl.ch> * [*/*] Converted a lot of functions to Win32 types. Removed HWND type. Fri Feb 14 15:09:19 1997 Onno Hovers <onno@stack.nl> * [memory/global.c] Implemented GMEM_MOVEABLE blocks for Win32. Fri Feb 14 00:24:39 1997 Alex Korobka <alex@trantor.pharm.sunysb.edu> * [loader/task.c] [windows/queue.c] Do not read X events while in the intertask SendMessage(). * [misc/lstr.c] Fixed CharPrev32A(). * [windows/hook.c] [include/hook.h] Restored broken WH_CALLWNDPROC functionality for dialogs, etc... * [windows/win.c] [windows/defwnd.c] [windows/mdi.c] [windows/event.c] [controls/edit.c] Added WIN_ISWIN32 flag to windows created by Win32 calls. Several new Win32 messages are sent when this flag is on. * [msdos/dosmem.c] [memory/global.c] Some changes in DOS memory allocation. Fri Feb 7 21:46:03 1997 Andrew Taylor <andrew@riscan.com> * [win32/security.c] Added SID manipulation functions. * [include/debug.h] Added debugging class "security". Fri Feb 7 20:46:33 1997 Robert Pouliot <krynos@clic.net> * [debugger/msc.c] [debugger/source.c] [documentation/wine_os2.txt] [loader/signal.c] Some more changes for OS/2. Doesn't work yet. Fri Feb 7 09:31:17 1997 Marcus Meissner <msmeissn@cip.informatik.uni-erlangen.de> * [scheduler/process.c] Added ExpandEnvironmentStrings*. * [misc/ntdll.c] [include/ntdll.h] Added some new functions. * [objects/cursoricon.c] CURSORICON_LoadHandler: check against some bizarre out of memory conditions. * [windows/mdi.c] Fixed DefFrameProc32*, added TranslateMDISysAccel32. Wed Feb 5 01:31:05 1997 John Zero <john@globe.graphisoft.hu> * [resources/sysres_Hu.rc] [misc/ole2nls.c] [misc/main.c] [programs/progman/Hu.rc] [programs/winhelp/Hu.rc] Added Hungarian language support.
diff --git a/objects/color.c b/objects/color.c index 76a24cb..5d1abd9 100644 --- a/objects/color.c +++ b/objects/color.c
@@ -135,7 +135,7 @@ return cSpace.flags; } -COLORREF COLOR_GetSystemPaletteEntry(BYTE i) +COLORREF COLOR_GetSystemPaletteEntry(UINT32 i) { return *(COLORREF*)(COLOR_sysPal + i) & 0x00ffffff; } @@ -567,7 +567,7 @@ palPtr->palPalEntry[i].peBlue = __sysPalTemplate[i].peBlue; palPtr->palPalEntry[i].peFlags = 0; } - hpalette = CreatePalette( palPtr ); + hpalette = CreatePalette16( palPtr ); palObj = (PALETTEOBJ*) GDI_GetObjPtr( hpalette, PALETTE_MAGIC );
diff --git a/objects/cursoricon.c b/objects/cursoricon.c index 46a5405..62b4823 100644 --- a/objects/cursoricon.c +++ b/objects/cursoricon.c
@@ -22,6 +22,7 @@ * the bits directly :-( */ +#define NO_TRANSITION_TYPES /* This file is Win32-clean */ #include <string.h> #include <stdlib.h> #include "windows.h" @@ -38,9 +39,9 @@ extern UINT16 COLOR_GetSystemPaletteSize(); -Cursor CURSORICON_XCursor = None; /* Current X cursor */ -static HCURSOR16 hActiveCursor = 0; /* Active cursor */ -static int CURSOR_ShowCount = 0; /* Cursor display count */ +Cursor CURSORICON_XCursor = None; /* Current X cursor */ +static HCURSOR32 hActiveCursor = 0; /* Active cursor */ +static INT32 CURSOR_ShowCount = 0; /* Cursor display count */ static RECT32 CURSOR_ClipRect; /* Cursor clipping rect */ /********************************************************************** @@ -200,9 +201,10 @@ * Load the icon/cursor directory for a given resource name and find the * best matching entry. */ -static BOOL CURSORICON_LoadDirEntry(HINSTANCE32 hInstance, SEGPTR name, - int width, int height, int colors, - BOOL fCursor, CURSORICONDIRENTRY *dirEntry) +static BOOL32 CURSORICON_LoadDirEntry( HINSTANCE32 hInstance, SEGPTR name, + INT32 width, INT32 height, + INT32 colors, BOOL32 fCursor, + CURSORICONDIRENTRY *dirEntry ) { HRSRC16 hRsrc; HGLOBAL16 hMem; @@ -234,7 +236,7 @@ * Create a cursor or icon from a resource. */ HGLOBAL16 CURSORICON_LoadHandler( HGLOBAL16 handle, HINSTANCE16 hInstance, - BOOL fCursor ) + BOOL32 fCursor ) { HBITMAP32 hAndBits, hXorBits; HDC32 hdc; @@ -294,6 +296,11 @@ hXorBits = CreateDIBitmap32( hdc, &pInfo->bmiHeader, CBM_INIT, (char*)bmi + size, pInfo, DIB_RGB_COLORS ); + if (!hXorBits) { + free( pInfo ); + ReleaseDC32( 0, hdc ); + return 0; + } /* Fix the bitmap header to load the monochrome mask */ @@ -325,6 +332,11 @@ hAndBits = CreateDIBitmap32( hdc, &pInfo->bmiHeader, CBM_INIT, bits, pInfo, DIB_RGB_COLORS ); ReleaseDC32( 0, hdc ); + if (!hAndBits) { + DeleteObject32( hXorBits ); + free( pInfo ); + return 0; + } /* Now create the CURSORICONINFO structure */ @@ -369,8 +381,8 @@ * Load a cursor or icon. */ static HGLOBAL16 CURSORICON_Load( HINSTANCE16 hInstance, SEGPTR name, - int width, int height, int colors, - BOOL fCursor ) + INT32 width, INT32 height, INT32 colors, + BOOL32 fCursor ) { HGLOBAL16 handle, hRet; HRSRC16 hRsrc; @@ -513,8 +525,9 @@ return hRet; } + /*********************************************************************** - * LoadCursor (USER.173) + * LoadCursor16 (USER.173) */ HCURSOR16 LoadCursor16( HINSTANCE16 hInstance, SEGPTR name ) { @@ -531,9 +544,9 @@ /*********************************************************************** - * LoadIcon (USER.174) + * LoadIcon16 (USER.174) */ -HICON16 LoadIcon16(HINSTANCE16 hInstance,SEGPTR name) +HICON16 LoadIcon16( HINSTANCE16 hInstance, SEGPTR name ) { if (HIWORD(name)) dprintf_icon( stddeb, "LoadIcon: %04x '%s'\n", @@ -549,11 +562,11 @@ /*********************************************************************** - * CreateCursor (USER.406) + * CreateCursor16 (USER.406) */ -HCURSOR16 CreateCursor( HINSTANCE16 hInstance, INT xHotSpot, INT yHotSpot, - INT nWidth, INT nHeight, - const BYTE *lpANDbits, const BYTE *lpXORbits ) +HCURSOR16 CreateCursor16(HINSTANCE16 hInstance, INT16 xHotSpot, INT16 yHotSpot, + INT16 nWidth, INT16 nHeight, + LPCVOID lpANDbits, LPCVOID lpXORbits ) { CURSORICONINFO info = { { xHotSpot, yHotSpot }, nWidth, nHeight, 0, 1, 1 }; @@ -564,12 +577,43 @@ /*********************************************************************** - * CreateIcon (USER.407) + * CreateCursor32 (USER32.66) */ -HICON16 CreateIcon( HINSTANCE16 hInstance, INT nWidth, INT nHeight, BYTE bPlanes, - BYTE bBitsPixel, const BYTE* lpANDbits, const BYTE* lpXORbits) +HCURSOR32 CreateCursor32(HINSTANCE32 hInstance, INT32 xHotSpot, INT32 yHotSpot, + INT32 nWidth, INT32 nHeight, + LPCVOID lpANDbits, LPCVOID lpXORbits ) { - CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, 0, bPlanes, bBitsPixel }; + CURSORICONINFO info = { { xHotSpot, yHotSpot }, nWidth, nHeight, 0, 1, 1 }; + + dprintf_cursor( stddeb, "CreateCursor: %dx%d spot=%d,%d xor=%p and=%p\n", + nWidth, nHeight, xHotSpot, yHotSpot, lpXORbits, lpANDbits); + return CreateCursorIconIndirect( hInstance, &info, lpANDbits, lpXORbits ); +} + + +/*********************************************************************** + * CreateIcon16 (USER.407) + */ +HICON16 CreateIcon16( HINSTANCE16 hInstance, INT16 nWidth, INT16 nHeight, + BYTE bPlanes, BYTE bBitsPixel, + LPCVOID lpANDbits, LPCVOID lpXORbits ) +{ + CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, 0, bPlanes, bBitsPixel}; + + dprintf_icon( stddeb, "CreateIcon: %dx%dx%d, xor=%p, and=%p\n", + nWidth, nHeight, bPlanes * bBitsPixel, lpXORbits, lpANDbits); + return CreateCursorIconIndirect( hInstance, &info, lpANDbits, lpXORbits ); +} + + +/*********************************************************************** + * CreateIcon32 (USER32.74) + */ +HICON32 CreateIcon32( HINSTANCE32 hInstance, INT32 nWidth, INT32 nHeight, + BYTE bPlanes, BYTE bBitsPixel, + LPCVOID lpANDbits, LPCVOID lpXORbits ) +{ + CURSORICONINFO info = { { 0, 0 }, nWidth, nHeight, 0, bPlanes, bBitsPixel}; dprintf_icon( stddeb, "CreateIcon: %dx%dx%d, xor=%p, and=%p\n", nWidth, nHeight, bPlanes * bBitsPixel, lpXORbits, lpANDbits); @@ -580,10 +624,8 @@ /*********************************************************************** * CreateCursorIconIndirect (USER.408) */ -HGLOBAL16 CreateCursorIconIndirect( HINSTANCE16 hInstance, - CURSORICONINFO *info, - const BYTE *lpANDbits, - const BYTE *lpXORbits ) +HGLOBAL16 CreateCursorIconIndirect(HINSTANCE16 hInstance, CURSORICONINFO *info, + LPCVOID lpANDbits, LPCVOID lpXORbits ) { HGLOBAL16 handle; char *ptr; @@ -637,9 +679,18 @@ /*********************************************************************** - * DestroyIcon (USER.457) + * DestroyIcon16 (USER.457) */ -BOOL DestroyIcon( HICON16 hIcon ) +BOOL16 DestroyIcon16( HICON16 hIcon ) +{ + return DestroyIcon32( hIcon ); +} + + +/*********************************************************************** + * DestroyIcon32 (USER32.132) + */ +BOOL32 DestroyIcon32( HICON32 hIcon ) { dprintf_icon( stddeb, "DestroyIcon: %04x\n", hIcon ); /* FIXME: should check for OEM icon here */ @@ -648,9 +699,18 @@ /*********************************************************************** - * DestroyCursor (USER.458) + * DestroyCursor16 (USER.458) */ -BOOL DestroyCursor( HCURSOR16 hCursor ) +BOOL16 DestroyCursor16( HCURSOR16 hCursor ) +{ + return DestroyCursor32( hCursor ); +} + + +/*********************************************************************** + * DestroyCursor32 (USER32.131) + */ +BOOL32 DestroyCursor32( HCURSOR32 hCursor ) { dprintf_cursor( stddeb, "DestroyCursor: %04x\n", hCursor ); /* FIXME: should check for OEM cursor here */ @@ -659,13 +719,22 @@ /*********************************************************************** - * DrawIcon (USER.84) + * DrawIcon16 (USER.84) */ -BOOL DrawIcon( HDC16 hdc, INT x, INT y, HICON16 hIcon ) +BOOL16 DrawIcon16( HDC16 hdc, INT16 x, INT16 y, HICON16 hIcon ) +{ + return DrawIcon32( hdc, x, y, hIcon ); +} + + +/*********************************************************************** + * DrawIcon32 (USER32.158) + */ +BOOL32 DrawIcon32( HDC32 hdc, INT32 x, INT32 y, HICON32 hIcon ) { CURSORICONINFO *ptr; HDC32 hMemDC; - HBITMAP16 hXorBits, hAndBits; + HBITMAP32 hXorBits, hAndBits; COLORREF oldFg, oldBg; if (!(ptr = (CURSORICONINFO *)GlobalLock16( hIcon ))) return FALSE; @@ -719,7 +788,7 @@ * * Change the X cursor. Helper function for SetCursor() and ShowCursor(). */ -static BOOL CURSORICON_SetCursor( HCURSOR16 hCursor ) +static BOOL32 CURSORICON_SetCursor( HCURSOR16 hCursor ) { Pixmap pixmapBits, pixmapMask, pixmapAll; XColor fg, bg; @@ -842,7 +911,7 @@ else { /* Set the same cursor for all top-level windows */ - HWND hwnd = GetWindow32( GetDesktopWindow32(), GW_CHILD ); + HWND32 hwnd = GetWindow32( GetDesktopWindow32(), GW_CHILD ); while(hwnd) { Window win = WIN_GetXWindow( hwnd ); @@ -855,11 +924,20 @@ /*********************************************************************** - * SetCursor (USER.69) + * SetCursor16 (USER.69) */ -HCURSOR16 SetCursor( HCURSOR16 hCursor ) +HCURSOR16 SetCursor16( HCURSOR16 hCursor ) { - HCURSOR16 hOldCursor; + return (HCURSOR16)SetCursor32( hCursor ); +} + + +/*********************************************************************** + * SetCursor32 (USER32.471) + */ +HCURSOR32 SetCursor32( HCURSOR32 hCursor ) +{ + HCURSOR32 hOldCursor; if (hCursor == hActiveCursor) return hActiveCursor; /* No change */ dprintf_cursor( stddeb, "SetCursor: %04x\n", hCursor ); @@ -872,19 +950,38 @@ /*********************************************************************** - * SetCursorPos (USER.70) + * SetCursorPos16 (USER.70) */ -void SetCursorPos( short x, short y ) +void SetCursorPos16( INT16 x, INT16 y ) { - dprintf_cursor( stddeb, "SetCursorPos: x=%d y=%d\n", x, y ); - XWarpPointer( display, rootWindow, rootWindow, 0, 0, 0, 0, x, y ); + SetCursorPos32( x, y ); } /*********************************************************************** - * ShowCursor (USER.71) + * SetCursorPos32 (USER32.473) */ -int ShowCursor( BOOL bShow ) +BOOL32 SetCursorPos32( INT32 x, INT32 y ) +{ + dprintf_cursor( stddeb, "SetCursorPos: x=%d y=%d\n", x, y ); + XWarpPointer( display, rootWindow, rootWindow, 0, 0, 0, 0, x, y ); + return TRUE; +} + + +/*********************************************************************** + * ShowCursor16 (USER.71) + */ +INT16 ShowCursor16( BOOL16 bShow ) +{ + return ShowCursor32( bShow ); +} + + +/*********************************************************************** + * ShowCursor32 (USER32.529) + */ +INT32 ShowCursor32( BOOL32 bShow ) { dprintf_cursor( stddeb, "ShowCursor: %d, count=%d\n", bShow, CURSOR_ShowCount ); @@ -904,9 +1001,18 @@ /*********************************************************************** - * GetCursor (USER.247) + * GetCursor16 (USER.247) */ -HCURSOR16 GetCursor(void) +HCURSOR16 GetCursor16(void) +{ + return hActiveCursor; +} + + +/*********************************************************************** + * GetCursor32 (USER32.226) + */ +HCURSOR32 GetCursor32(void) { return hActiveCursor; } @@ -1027,7 +1133,7 @@ /********************************************************************** * LoadIconHandler (USER.456) */ -HICON16 LoadIconHandler( HGLOBAL16 hResource, BOOL bNew ) +HICON16 LoadIconHandler( HGLOBAL16 hResource, BOOL16 bNew ) { dprintf_cursor(stddeb,"LoadIconHandler: hRes=%04x\n",hResource);
diff --git a/objects/dc.c b/objects/dc.c index 02bc5ce..889518f 100644 --- a/objects/dc.c +++ b/objects/dc.c
@@ -791,14 +791,23 @@ /*********************************************************************** - * GetDeviceCaps (GDI.80) + * GetDeviceCaps16 (GDI.80) */ -int GetDeviceCaps( HDC16 hdc, WORD cap ) +INT16 GetDeviceCaps16( HDC16 hdc, INT16 cap ) +{ + return GetDeviceCaps32( hdc, cap ); +} + + +/*********************************************************************** + * GetDeviceCaps32 (GDI32.171) + */ +INT32 GetDeviceCaps32( HDC32 hdc, INT32 cap ) { DC * dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) return 0; - if (cap > sizeof(DeviceCaps)-sizeof(WORD)) return 0; + if ((cap < 0) || (cap > sizeof(DeviceCaps)-sizeof(WORD))) return 0; dprintf_dc(stddeb, "GetDeviceCaps(%04x,%d): returning %d\n", hdc, cap, *(WORD *)(((char *)dc->w.devCaps) + cap) );
diff --git a/objects/font.c b/objects/font.c index b4a3a32..edf0266 100644 --- a/objects/font.c +++ b/objects/font.c
@@ -754,9 +754,18 @@ /*********************************************************************** - * SetMapperFlags (GDI.349) + * SetMapperFlags16 (GDI.349) */ -DWORD SetMapperFlags(HDC16 hDC, DWORD dwFlag) +DWORD SetMapperFlags16( HDC16 hDC, DWORD dwFlag ) +{ + return SetMapperFlags32( hDC, dwFlag ); +} + + +/*********************************************************************** + * SetMapperFlags32 (GDI32.322) + */ +DWORD SetMapperFlags32( HDC32 hDC, DWORD dwFlag ) { dprintf_font(stdnimp,"SetmapperFlags(%04x, %08lX) // Empty Stub !\n", hDC, dwFlag);
diff --git a/objects/gdiobj.c b/objects/gdiobj.c index 0359343..d8eccaa 100644 --- a/objects/gdiobj.c +++ b/objects/gdiobj.c
@@ -7,10 +7,10 @@ #define NO_TRANSITION_TYPES /* This file is Win32-clean */ #include <stdlib.h> #include <stdio.h> -#include "gdi.h" #include "color.h" #include "bitmap.h" #include "brush.h" +#include "dc.h" #include "font.h" #include "heap.h" #include "palette.h"
diff --git a/objects/metafile.c b/objects/metafile.c index 0174c92..d5dcf12 100644 --- a/objects/metafile.c +++ b/objects/metafile.c
@@ -55,10 +55,18 @@ /****************************************************************** - * GetMetafile GDI.124 By Kenny MacDonald 30 Nov 94 + * GetMetafile16 (GDI.124) */ +HMETAFILE16 GetMetaFile16( LPCSTR lpFilename ) +{ + return GetMetaFile32A( lpFilename ); +} -HMETAFILE16 GetMetaFile(LPSTR lpFilename) + +/****************************************************************** + * GetMetafile32A (GDI32.197) + */ +HMETAFILE32 GetMetaFile32A( LPCSTR lpFilename ) { HMETAFILE16 hmf; METAHEADER *mh; @@ -73,17 +81,21 @@ hmf = GlobalAlloc16(GMEM_MOVEABLE, MFHEADERSIZE); mh = (METAHEADER *)GlobalLock16(hmf); - if (!mh) { + if (!mh) + { GlobalFree16(hmf); return 0; } - if ((hFile = _lopen32(lpFilename, OF_READ)) == HFILE_ERROR32) { + if ((hFile = _lopen32(lpFilename, OF_READ)) == HFILE_ERROR32) + { GlobalFree16(hmf); return 0; } - if (_lread32(hFile, (char *)mh, MFHEADERSIZE) == HFILE_ERROR32) { + if (_lread32(hFile, (char *)mh, MFHEADERSIZE) == HFILE_ERROR32) + { + _lclose32( hFile ); GlobalFree16(hmf); return 0; } @@ -93,20 +105,25 @@ hmf = GlobalReAlloc16(hmf,size,GMEM_MOVEABLE); mh = (METAHEADER *)GlobalLock16(hmf); - if (!mh) { + if (!mh) + { + _lclose32( hFile ); GlobalFree16(hmf); return 0; } if (_lread32(hFile, (char*)mh + mh->mtHeaderSize * 2, - size - mh->mtHeaderSize * 2) == HFILE_ERROR32) { + size - mh->mtHeaderSize * 2) == HFILE_ERROR32) + { + _lclose32( hFile ); GlobalFree16(hmf); return 0; } _lclose32(hFile); - if (mh->mtType != 1) { + if (mh->mtType != 1) + { GlobalFree16(hmf); return 0; } @@ -118,10 +135,31 @@ /****************************************************************** - * CopyMetafile GDI.151 Niels de Carpentier, April 1996 + * GetMetafile32W (GDI32.199) + */ +HMETAFILE32 GetMetaFile32W( LPCWSTR lpFilename ) +{ + LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFilename ); + HMETAFILE32 ret = GetMetaFile32A( p ); + HeapFree( GetProcessHeap(), 0, p ); + return ret; +} + + +/****************************************************************** + * CopyMetaFile16 (GDI.151) */ -HMETAFILE16 CopyMetaFile(HMETAFILE16 hSrcMetaFile, LPCSTR lpFilename) +HMETAFILE16 CopyMetaFile16( HMETAFILE16 hSrcMetaFile, LPCSTR lpFilename ) +{ + return CopyMetaFile32A( hSrcMetaFile, lpFilename ); +} + + +/****************************************************************** + * CopyMetaFile32A (GDI32.23) + */ +HMETAFILE32 CopyMetaFile32A( HMETAFILE32 hSrcMetaFile, LPCSTR lpFilename ) { HMETAFILE16 handle = 0; METAHEADER *mh; @@ -146,6 +184,7 @@ _lclose32(hFile); if (i == -1) return 0; + /* FIXME: return value */ } else /* memory based metafile */ { @@ -158,12 +197,25 @@ return handle; } + +/****************************************************************** + * CopyMetaFile32W (GDI32.24) + */ +HMETAFILE32 CopyMetaFile32W( HMETAFILE32 hSrcMetaFile, LPCWSTR lpFilename ) +{ + LPSTR p = HEAP_strdupWtoA( GetProcessHeap(), 0, lpFilename ); + HMETAFILE32 ret = CopyMetaFile32A( hSrcMetaFile, p ); + HeapFree( GetProcessHeap(), 0, p ); + return ret; +} + + /****************************************************************** * IsValidMetaFile (GDI.410) * (This is not exactly what windows does, see "Undoc Win") */ -BOOL IsValidMetaFile(HMETAFILE16 hmf) +BOOL16 IsValidMetaFile(HMETAFILE16 hmf) { BOOL resu=FALSE; METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); @@ -179,82 +231,19 @@ } -#if 0 /****************************************************************** - * CloseMetafile GDI.126 + * PlayMetafile16 (GDI.123) */ - -HMETAFILE16 CloseMetaFile(HDC16 hdc) +BOOL16 PlayMetaFile16( HDC16 hdc, HMETAFILE16 hmf ) { - DC *dc; - METAHEADER *mh; - HMETAFILE16 hmf; - HFILE hFile; - METAFILEDRV_PDEVICE *physDev; - - dprintf_metafile(stddeb,"CloseMetaFile\n"); - - if (!(dc = (DC *)GDI_GetObjPtr(hdc, METAFILE_DC_MAGIC))) return 0; - - physDev = (METAFILEDRV_PDEVICE *)dc->physDev; - mh = (METAHEADER *)GlobalLock16( physDev->hMetafile ); - - /* Construct the end of metafile record - this is documented - * in SDK Knowledgebase Q99334. - */ - - if (!MF_MetaParam0(dc, META_EOF)) - { - DeleteDC32( hdc ); - return 0; - } - - if (mh->mtType == 1) /* disk based metafile */ - { - hFile = mh->mtNoParameters; - mh->mtNoParameters = 0; - if (_llseek(hFile, 0L, 0) == -1) - { - DeleteDC32( hdc ); - return 0; - } - if (_lwrite32(hFile, (char *)mh, MFHEADERSIZE) == -1) - { - DeleteDC32( hdc ); - return 0; - } - _lclose(hFile); - } - - hmf = physDev->hMetafile; - GlobalUnlock16( hmf ); - physDev->hMetafile = 0; /* So it won't be deleted */ - DeleteDC32( hdc ); - return hmf; + return PlayMetaFile32( hdc, hmf ); } /****************************************************************** - * DeleteMetafile GDI.127 + * PlayMetafile32 (GDI32.265) */ - -BOOL DeleteMetaFile(HMETAFILE16 hmf) -{ - METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); - - if (!mh) - return FALSE; - - GlobalFree16(hmf); - return TRUE; -} -#endif - -/****************************************************************** - * PlayMetafile GDI.123 - */ - -BOOL PlayMetaFile(HDC16 hdc, HMETAFILE16 hmf) +BOOL32 PlayMetaFile32( HDC32 hdc, HMETAFILE32 hmf ) { METAHEADER *mh = (METAHEADER *)GlobalLock16(hmf); METARECORD *mr; @@ -592,7 +581,7 @@ /* W. Magro: Some new metafile operations. Not all debugged. */ case META_CREATEPALETTE: MF_AddHandle(ht, nHandles, - CreatePalette((LPLOGPALETTE)mr->rdParam)); + CreatePalette16((LPLOGPALETTE)mr->rdParam)); break; case META_SETTEXTALIGN: @@ -600,15 +589,15 @@ break; case META_SELECTPALETTE: - SelectPalette(hdc, *(ht->objectHandle + *(mr->rdParam+1)),*(mr->rdParam)); + SelectPalette16(hdc, *(ht->objectHandle + *(mr->rdParam+1)),*(mr->rdParam)); break; case META_SETMAPPERFLAGS: - SetMapperFlags(hdc, *(mr->rdParam)); + SetMapperFlags16(hdc, *(mr->rdParam)); break; case META_REALIZEPALETTE: - RealizePalette(hdc); + RealizePalette16(hdc); break; case META_ESCAPE: @@ -735,7 +724,7 @@ /****************************************************************** - * GetMetaFileBits by William Magro, 19 Sep 1995 + * GetMetaFileBits (GDI.159) * * Trade in a meta file object handle for a handle to the meta file memory */ @@ -748,11 +737,10 @@ } /****************************************************************** - * SetMetaFileBits by William Magro, 19 Sep 1995 + * SetMetaFileBits (GDI.160) * * Trade in a meta file memory handle for a handle to a meta file object */ - HMETAFILE16 SetMetaFileBits( HGLOBAL16 hMem ) { dprintf_metafile(stddeb,"SetMetaFileBits: hmf out: %04x\n", hMem);
diff --git a/objects/oembitmap.c b/objects/oembitmap.c index 87929bc..224f658 100644 --- a/objects/oembitmap.c +++ b/objects/oembitmap.c
@@ -284,7 +284,7 @@ OBM_Colors[i].value = NULL; if (OBM_SymbolicColors[i].color & 0xff000000) /* PALETTEINDEX */ OBM_Colors[i].pixel = COLOR_ToPhysical( NULL, - GetSysColor(OBM_SymbolicColors[i].color & 0xff)); + GetSysColor32(OBM_SymbolicColors[i].color & 0xff)); else /* RGB*/ OBM_Colors[i].pixel = COLOR_ToPhysical( NULL, OBM_SymbolicColors[i].color );
diff --git a/objects/palette.c b/objects/palette.c index 53089a9..5c38d23 100644 --- a/objects/palette.c +++ b/objects/palette.c
@@ -5,6 +5,8 @@ * Copyright 1996 Alex Korobka * */ + +#define NO_TRANSITION_TYPES /* This file is Win32-clean */ #include <stdlib.h> #include <string.h> #include <X11/Xlib.h> @@ -17,11 +19,10 @@ /* #define DEBUG_PALETTE */ #include "debug.h" -extern int COLOR_LookupSystemPixel(COLORREF); /* lookup pixel among static entries - * of the system palette */ -extern COLORREF COLOR_GetSystemPaletteEntry(BYTE); + /* lookup pixel among static entries of the system palette */ +extern int COLOR_LookupSystemPixel(COLORREF); -static WORD SystemPaletteUse = SYSPAL_STATIC; /* currently not considered */ +static UINT32 SystemPaletteUse = SYSPAL_STATIC; /* currently not considered */ static HPALETTE16 hPrimaryPalette = 0; /* used for WM_PALETTECHANGED */ static HPALETTE16 hLastRealizedPalette = 0; /* UnrealizeObject() needs it */ @@ -39,17 +40,25 @@ /*********************************************************************** - * CreatePalette (GDI.360) + * CreatePalette16 (GDI.360) */ -HPALETTE16 CreatePalette( const LOGPALETTE* palette ) +HPALETTE16 CreatePalette16( const LOGPALETTE* palette ) +{ + return CreatePalette32( palette ); +} + + +/*********************************************************************** + * CreatePalette32 (GDI32.53) + */ +HPALETTE32 CreatePalette32( const LOGPALETTE* palette ) { PALETTEOBJ * palettePtr; - HPALETTE16 hpalette; + HPALETTE32 hpalette; int size = sizeof(LOGPALETTE) + (palette->palNumEntries - 1) * sizeof(PALETTEENTRY); - dprintf_palette(stddeb,"CreatePalette: "); - - dprintf_palette(stddeb,"%i entries, ", palette->palNumEntries); + dprintf_palette(stddeb,"CreatePalette: %i entries, ", + palette->palNumEntries); hpalette = GDI_AllocObject( size + sizeof(int*) +sizeof(GDIOBJHDR) , PALETTE_MAGIC ); if (!hpalette) return 0; @@ -66,15 +75,26 @@ /*********************************************************************** - * GetPaletteEntries (GDI.363) + * GetPaletteEntries16 (GDI.363) */ -WORD GetPaletteEntries( HPALETTE16 hpalette, WORD start, WORD count, - LPPALETTEENTRY entries ) +UINT16 GetPaletteEntries16( HPALETTE16 hpalette, UINT16 start, UINT16 count, + LPPALETTEENTRY entries ) +{ + return GetPaletteEntries32( hpalette, start, count, entries ); +} + + +/*********************************************************************** + * GetPaletteEntries32 (GDI32.209) + */ +UINT32 GetPaletteEntries32( HPALETTE32 hpalette, UINT32 start, UINT32 count, + LPPALETTEENTRY entries ) { PALETTEOBJ * palPtr; - int numEntries; + INT32 numEntries; - dprintf_palette(stddeb,"GetPaletteEntries: hpal = %04x, %i entries\n", hpalette, count); + dprintf_palette( stddeb,"GetPaletteEntries: hpal = %04x, %i entries\n", + hpalette, count ); palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hpalette, PALETTE_MAGIC ); if (!palPtr) return 0; @@ -85,21 +105,33 @@ memcpy( entries, &palPtr->logpalette.palPalEntry[start], count * sizeof(PALETTEENTRY) ); for( numEntries = 0; numEntries < count ; numEntries++ ) - if( entries[numEntries].peFlags & 0xF0 ) entries[numEntries].peFlags = 0; + if (entries[numEntries].peFlags & 0xF0) + entries[numEntries].peFlags = 0; return count; } /*********************************************************************** - * SetPaletteEntries (GDI.364) + * SetPaletteEntries16 (GDI.364) */ -WORD SetPaletteEntries( HPALETTE16 hpalette, WORD start, WORD count, - LPPALETTEENTRY entries ) +UINT16 SetPaletteEntries16( HPALETTE16 hpalette, UINT16 start, UINT16 count, + LPPALETTEENTRY entries ) +{ + return SetPaletteEntries32( hpalette, start, count, entries ); +} + + +/*********************************************************************** + * SetPaletteEntries32 (GDI32.326) + */ +UINT32 SetPaletteEntries32( HPALETTE32 hpalette, UINT32 start, UINT32 count, + LPPALETTEENTRY entries ) { PALETTEOBJ * palPtr; - int numEntries; + INT32 numEntries; - dprintf_palette(stddeb,"SetPaletteEntries: hpal = %04x, %i entries\n", hpalette, count); + dprintf_palette( stddeb,"SetPaletteEntries: hpal = %04x, %i entries\n", + hpalette, count ); palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hpalette, PALETTE_MAGIC ); if (!palPtr) return 0; @@ -117,13 +149,23 @@ return count; } + /*********************************************************************** - * ResizePalette (GDI.368) + * ResizePalette16 (GDI.368) */ -BOOL ResizePalette(HPALETTE16 hPal, UINT cEntries) +BOOL16 ResizePalette16( HPALETTE16 hPal, UINT16 cEntries ) +{ + return ResizePalette32( hPal, cEntries ); +} + + +/*********************************************************************** + * ResizePalette32 (GDI32.289) + */ +BOOL32 ResizePalette32( HPALETTE32 hPal, UINT32 cEntries ) { PALETTEOBJ * palPtr = (PALETTEOBJ *) GDI_GetObjPtr( hPal, PALETTE_MAGIC ); - UINT cPrevEnt, prevVer; + UINT32 cPrevEnt, prevVer; int prevsize, size = sizeof(LOGPALETTE) + (cEntries - 1) * sizeof(PALETTEENTRY); int* mapping = NULL; @@ -156,44 +198,85 @@ return TRUE; } + /*********************************************************************** - * AnimatePalette (GDI.367) + * AnimatePalette16 (GDI.367) */ -BOOL AnimatePalette(HPALETTE16 hPal, UINT StartIndex, UINT NumEntries, - LPPALETTEENTRY PaletteColors) +BOOL16 AnimatePalette16( HPALETTE16 hPal, UINT16 StartIndex, UINT16 NumEntries, + LPPALETTEENTRY PaletteColors ) +{ + return AnimatePalette32( hPal, StartIndex, NumEntries, PaletteColors ); +} + + +/*********************************************************************** + * AnimatePalette32 (GDI32.6) + */ +BOOL32 AnimatePalette32( HPALETTE32 hPal, UINT32 StartIndex, UINT32 NumEntries, + LPPALETTEENTRY PaletteColors ) { fprintf(stdnimp,"AnimatePalette: empty stub! \n"); return TRUE; } -/*********************************************************************** - * SetSystemPaletteUse (GDI.373) - */ -WORD SetSystemPaletteUse( HDC16 hdc, WORD use) -{ - WORD old=SystemPaletteUse; - fprintf(stdnimp,"SetSystemPaletteUse(%04x,%04x) // empty stub !!!\n", hdc, use); - SystemPaletteUse=use; - return old; -} /*********************************************************************** - * GetSystemPaletteUse (GDI.374) + * SetSystemPaletteUse16 (GDI.373) */ -WORD GetSystemPaletteUse( HDC16 hdc ) +UINT16 SetSystemPaletteUse16( HDC16 hdc, UINT16 use ) { - fprintf(stdnimp,"GetSystemPaletteUse(%04x) // empty stub !!!\n", hdc); - return SystemPaletteUse; + return SetSystemPaletteUse32( hdc, use ); } /*********************************************************************** - * GetSystemPaletteEntries (GDI.375) + * SetSystemPaletteUse32 (GDI32.335) */ -WORD GetSystemPaletteEntries( HDC16 hdc, WORD start, WORD count, - LPPALETTEENTRY entries ) +UINT32 SetSystemPaletteUse32( HDC32 hdc, UINT32 use ) { - WORD i; + UINT32 old = SystemPaletteUse; + fprintf( stdnimp,"SetSystemPaletteUse(%04x,%04x) // empty stub !!!\n", + hdc, use ); + SystemPaletteUse = use; + return old; +} + + +/*********************************************************************** + * GetSystemPaletteUse16 (GDI.374) + */ +UINT16 GetSystemPaletteUse16( HDC16 hdc ) +{ + return SystemPaletteUse; +} + + +/*********************************************************************** + * GetSystemPaletteUse32 (GDI32.223) + */ +UINT32 GetSystemPaletteUse32( HDC32 hdc ) +{ + return SystemPaletteUse; +} + + +/*********************************************************************** + * GetSystemPaletteEntries16 (GDI.375) + */ +UINT16 GetSystemPaletteEntries16( HDC16 hdc, UINT16 start, UINT16 count, + LPPALETTEENTRY entries ) +{ + return GetSystemPaletteEntries32( hdc, start, count, entries ); +} + + +/*********************************************************************** + * GetSystemPaletteEntries32 (GDI32.222) + */ +UINT32 GetSystemPaletteEntries32( HDC32 hdc, UINT32 start, UINT32 count, + LPPALETTEENTRY entries ) +{ + UINT32 i; DC *dc; dprintf_palette(stddeb,"GetSystemPaletteEntries: hdc = %04x, cound = %i", hdc, count ); @@ -204,27 +287,36 @@ count = dc->w.devCaps->sizePalette - start; for (i = 0; i < count; i++) { - *(COLORREF*)(entries + i) = COLOR_GetSystemPaletteEntry((BYTE)(start + i)); + *(COLORREF*)(entries + i) = COLOR_GetSystemPaletteEntry( start + i ); - dprintf_palette(stddeb,"\tidx(%02x) -> RGB(%08lx)\n", (unsigned char)(start + i), - *(COLORREF*)(entries + i) ); + dprintf_palette( stddeb,"\tidx(%02x) -> RGB(%08lx)\n", + start + i, *(COLORREF*)(entries + i) ); } return count; } /*********************************************************************** - * GetNearestPaletteIndex (GDI.370) + * GetNearestPaletteIndex16 (GDI.370) */ -WORD GetNearestPaletteIndex( HPALETTE16 hpalette, COLORREF color ) +UINT16 GetNearestPaletteIndex16( HPALETTE16 hpalette, COLORREF color ) { - PALETTEOBJ* palObj = (PALETTEOBJ*) GDI_GetObjPtr( hpalette, PALETTE_MAGIC ); - WORD index = 0; + return GetNearestPaletteIndex32( hpalette, color ); +} + + +/*********************************************************************** + * GetNearestPaletteIndex32 (GDI32.203) + */ +UINT32 GetNearestPaletteIndex32( HPALETTE32 hpalette, COLORREF color ) +{ + PALETTEOBJ* palObj = (PALETTEOBJ*)GDI_GetObjPtr( hpalette, PALETTE_MAGIC ); + UINT32 index = 0; if( palObj ) index = COLOR_PaletteLookupPixel( palObj->logpalette.palPalEntry, - palObj->logpalette.palNumEntries, NULL, - color, FALSE ); + palObj->logpalette.palNumEntries, + NULL, color, FALSE ); dprintf_palette(stddeb,"GetNearestPaletteIndex(%04x,%06lx): returning %d\n", hpalette, color, index ); @@ -233,9 +325,18 @@ /*********************************************************************** - * GetNearestColor (GDI.154) + * GetNearestColor16 (GDI.154) */ -COLORREF GetNearestColor( HDC16 hdc, COLORREF color ) +COLORREF GetNearestColor16( HDC16 hdc, COLORREF color ) +{ + return GetNearestColor32( hdc, color ); +} + + +/*********************************************************************** + * GetNearestColor32 (GDI32.202) + */ +COLORREF GetNearestColor32( HDC32 hdc, COLORREF color ) { COLORREF nearest = 0xFADECAFE; DC *dc; @@ -318,12 +419,11 @@ /*********************************************************************** * GDIRealizePalette (GDI.362) - * */ -UINT GDIRealizePalette( HDC16 hdc ) +UINT16 GDIRealizePalette( HDC16 hdc ) { PALETTEOBJ* palPtr; - int realized = 0; + int realized = 0; DC* dc = (DC *) GDI_GetObjPtr( hdc, DC_MAGIC ); if (!dc) { @@ -347,14 +447,14 @@ else dprintf_palette(stddeb, " skipping "); dprintf_palette(stdnimp, " realized %i colors\n", realized ); - return (UINT)realized; + return (UINT16)realized; } /*********************************************************************** * RealizeDefaultPalette (GDI.365) */ -WORD RealizeDefaultPalette( HDC16 hdc ) +UINT16 RealizeDefaultPalette( HDC16 hdc ) { DC *dc; PALETTEOBJ* palPtr; @@ -392,16 +492,28 @@ /*********************************************************************** * IsDCCurrentPalette (GDI.412) */ -BOOL IsDCCurrentPalette(HDC16 hDC) +BOOL16 IsDCCurrentPalette(HDC16 hDC) { DC* dc = (DC *)GDI_GetObjPtr( hDC, DC_MAGIC ); return (dc)?(dc->w.hPalette == hPrimaryPalette):FALSE; } + /*********************************************************************** - * SelectPalette (USER.282) + * SelectPalette16 (USER.282) */ -HPALETTE16 SelectPalette( HDC16 hDC, HPALETTE16 hPal, BOOL bForceBackground ) +HPALETTE16 SelectPalette16( HDC16 hDC, HPALETTE16 hPal, + BOOL16 bForceBackground ) +{ + return SelectPalette32( hDC, hPal, bForceBackground ); +} + + +/*********************************************************************** + * SelectPalette32 (GDI32.300) + */ +HPALETTE32 SelectPalette32( HDC32 hDC, HPALETTE32 hPal, + BOOL32 bForceBackground ) { WORD wBkgPalette = 1; PALETTEOBJ* lpt = (PALETTEOBJ*) GDI_GetObjPtr( hPal, PALETTE_MAGIC ); @@ -429,11 +541,20 @@ /*********************************************************************** - * RealizePalette (USER.283) (GDI32.280) + * RealizePalette16 (USER.283) */ -UINT16 RealizePalette( HDC32 hDC ) +UINT16 RealizePalette16( HDC16 hDC ) { - UINT16 realized = GDIRealizePalette( hDC ); + return RealizePalette32( hDC ); +} + + +/*********************************************************************** + * RealizePalette32 (GDI32.280) + */ +UINT32 RealizePalette32( HDC32 hDC ) +{ + UINT32 realized = GDIRealizePalette( hDC ); /* do not send anything if no colors were changed */ @@ -462,7 +583,7 @@ * but it would take forever given the speed of XGet/PutPixel. */ if (hWnd && !(COLOR_GetSystemPaletteFlags() & COLOR_VIRTUAL) ) - InvalidateRect16( hWnd, NULL, FALSE ); + InvalidateRect32( hWnd, NULL, FALSE ); return 0x666; }
diff --git a/objects/text.c b/objects/text.c index d178a35..1fcf622 100644 --- a/objects/text.c +++ b/objects/text.c
@@ -390,18 +390,19 @@ /*********************************************************************** - * GrayString (USER.185) + * GrayString16 (USER.185) */ -BOOL GrayString(HDC16 hdc, HBRUSH16 hbr, GRAYSTRINGPROC16 gsprc, LPARAM lParam, - INT cch, INT x, INT y, INT cx, INT cy) +BOOL16 GrayString16( HDC16 hdc, HBRUSH16 hbr, GRAYSTRINGPROC16 gsprc, + LPARAM lParam, INT16 cch, INT16 x, INT16 y, + INT16 cx, INT16 cy ) { - BOOL ret; + BOOL16 ret; COLORREF current_color; if (!cch) cch = lstrlen16( (LPCSTR)PTR_SEG_TO_LIN(lParam) ); if (gsprc) return gsprc( hdc, lParam, cch ); current_color = GetTextColor32( hdc ); - SetTextColor( hdc, GetSysColor(COLOR_GRAYTEXT) ); + SetTextColor( hdc, GetSysColor32(COLOR_GRAYTEXT) ); ret = TextOut16( hdc, x, y, (LPCSTR)PTR_SEG_TO_LIN(lParam), cch ); SetTextColor( hdc, current_color ); return ret; @@ -409,24 +410,65 @@ /*********************************************************************** + * GrayString32A (USER32.314) + */ +BOOL32 GrayString32A( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 gsprc, + LPARAM lParam, INT32 cch, INT32 x, INT32 y, + INT32 cx, INT32 cy ) +{ + BOOL32 ret; + COLORREF current_color; + + if (!cch) cch = lstrlen32A( (LPCSTR)lParam ); + if (gsprc) return gsprc( hdc, lParam, cch ); + current_color = GetTextColor32( hdc ); + SetTextColor( hdc, GetSysColor32(COLOR_GRAYTEXT) ); + ret = TextOut32A( hdc, x, y, (LPCSTR)lParam, cch ); + SetTextColor( hdc, current_color ); + return ret; +} + + +/*********************************************************************** + * GrayString32W (USER32.315) + */ +BOOL32 GrayString32W( HDC32 hdc, HBRUSH32 hbr, GRAYSTRINGPROC32 gsprc, + LPARAM lParam, INT32 cch, INT32 x, INT32 y, + INT32 cx, INT32 cy ) +{ + BOOL32 ret; + COLORREF current_color; + + if (!cch) cch = lstrlen32W( (LPCWSTR)lParam ); + if (gsprc) return gsprc( hdc, lParam, cch ); + current_color = GetTextColor32( hdc ); + SetTextColor( hdc, GetSysColor32(COLOR_GRAYTEXT) ); + ret = TextOut32W( hdc, x, y, (LPCWSTR)lParam, cch ); + SetTextColor( hdc, current_color ); + return ret; +} + + +/*********************************************************************** * TEXT_TabbedTextOut * * Helper function for TabbedTextOut() and GetTabbedTextExtent(). * Note: this doesn't work too well for text-alignment modes other * than TA_LEFT|TA_TOP. But we want bug-for-bug compatibility :-) */ -LONG TEXT_TabbedTextOut( HDC16 hdc, int x, int y, LPSTR lpstr, int count, - int cTabStops, LPINT16 lpTabPos, int nTabOrg, - BOOL fDisplayText) +LONG TEXT_TabbedTextOut( HDC32 hdc, INT32 x, INT32 y, LPCSTR lpstr, + INT32 count, INT32 cTabStops, const INT16 *lpTabPos16, + const INT32 *lpTabPos32, INT32 nTabOrg, + BOOL32 fDisplayText ) { - WORD defWidth; + INT32 defWidth; DWORD extent = 0; int i, tabPos = x; int start = x; if (cTabStops == 1) { - defWidth = *lpTabPos; + defWidth = lpTabPos32 ? *lpTabPos32 : *lpTabPos16; cTabStops = 0; } else @@ -441,24 +483,37 @@ for (i = 0; i < count; i++) if (lpstr[i] == '\t') break; extent = GetTextExtent( hdc, lpstr, i ); - while ((cTabStops > 0) && (nTabOrg + *lpTabPos <= x + LOWORD(extent))) + if (lpTabPos32) { - lpTabPos++; - cTabStops--; + while ((cTabStops > 0) && + (nTabOrg + *lpTabPos32 <= x + LOWORD(extent))) + { + lpTabPos32++; + cTabStops--; + } + } + else + { + while ((cTabStops > 0) && + (nTabOrg + *lpTabPos16 <= x + LOWORD(extent))) + { + lpTabPos16++; + cTabStops--; + } } if (i == count) tabPos = x + LOWORD(extent); else if (cTabStops > 0) - tabPos = nTabOrg + *lpTabPos; + tabPos = nTabOrg + (lpTabPos32 ? *lpTabPos32 : *lpTabPos16); else tabPos = nTabOrg + ((x + LOWORD(extent) - nTabOrg) / defWidth + 1) * defWidth; if (fDisplayText) { - RECT16 r; - SetRect16( &r, x, y, tabPos, y+HIWORD(extent) ); - ExtTextOut16( hdc, x, y, - GetBkMode32(hdc) == OPAQUE ? ETO_OPAQUE : 0, - &r, lpstr, i, NULL ); + RECT32 r; + SetRect32( &r, x, y, tabPos, y+HIWORD(extent) ); + ExtTextOut32A( hdc, x, y, + GetBkMode32(hdc) == OPAQUE ? ETO_OPAQUE : 0, + &r, lpstr, i, NULL ); } x = tabPos; count -= i+1; @@ -469,26 +524,83 @@ /*********************************************************************** - * TabbedTextOut (USER.196) + * TabbedTextOut16 (USER.196) */ -LONG TabbedTextOut( HDC16 hdc, short x, short y, LPSTR lpstr, short count, - short cTabStops, LPINT16 lpTabPos, short nTabOrg ) +LONG TabbedTextOut16( HDC16 hdc, INT16 x, INT16 y, LPCSTR lpstr, INT16 count, + INT16 cTabStops, const INT16 *lpTabPos, INT16 nTabOrg ) { - dprintf_text( stddeb, "TabbedTextOut: %04x %d,%d '%*.*s' %d\n", - hdc, x, y, count, count, lpstr, count ); + dprintf_text( stddeb, "TabbedTextOut16: %04x %d,%d '%.*s' %d\n", + hdc, x, y, count, lpstr, count ); return TEXT_TabbedTextOut( hdc, x, y, lpstr, count, cTabStops, - lpTabPos, nTabOrg, TRUE ); + lpTabPos, NULL, nTabOrg, TRUE ); } /*********************************************************************** - * GetTabbedTextExtent (USER.197) + * TabbedTextOut32A (USER32.541) */ -DWORD GetTabbedTextExtent( HDC16 hdc, LPSTR lpstr, int count, - int cTabStops, LPINT16 lpTabPos ) +LONG TabbedTextOut32A( HDC32 hdc, INT32 x, INT32 y, LPCSTR lpstr, INT32 count, + INT32 cTabStops, const INT32 *lpTabPos, INT32 nTabOrg ) { - dprintf_text( stddeb, "GetTabbedTextExtent: %04x '%*.*s' %d\n", - hdc, count, count, lpstr, count ); + dprintf_text( stddeb, "TabbedTextOut32A: %04x %d,%d '%.*s' %d\n", + hdc, x, y, count, lpstr, count ); + return TEXT_TabbedTextOut( hdc, x, y, lpstr, count, cTabStops, + NULL, lpTabPos, nTabOrg, TRUE ); +} + + +/*********************************************************************** + * TabbedTextOut32W (USER32.542) + */ +LONG TabbedTextOut32W( HDC32 hdc, INT32 x, INT32 y, LPCWSTR str, INT32 count, + INT32 cTabStops, const INT32 *lpTabPos, INT32 nTabOrg ) +{ + LONG ret; + LPSTR p = HEAP_xalloc( GetProcessHeap(), 0, count + 1 ); + lstrcpynWtoA( p, str, count + 1 ); + ret = TabbedTextOut32A( hdc, x, y, p, count, cTabStops, + lpTabPos, nTabOrg ); + HeapFree( GetProcessHeap(), 0, p ); + return ret; +} + + +/*********************************************************************** + * GetTabbedTextExtent16 (USER.197) + */ +DWORD GetTabbedTextExtent16( HDC16 hdc, LPCSTR lpstr, INT16 count, + INT16 cTabStops, const INT16 *lpTabPos ) +{ + dprintf_text( stddeb, "GetTabbedTextExtent: %04x '%.*s' %d\n", + hdc, count, lpstr, count ); return TEXT_TabbedTextOut( hdc, 0, 0, lpstr, count, cTabStops, - lpTabPos, 0, FALSE ); + lpTabPos, NULL, 0, FALSE ); +} + + +/*********************************************************************** + * GetTabbedTextExtent32A (USER32.292) + */ +DWORD GetTabbedTextExtent32A( HDC32 hdc, LPCSTR lpstr, INT32 count, + INT32 cTabStops, const INT32 *lpTabPos ) +{ + dprintf_text( stddeb, "GetTabbedTextExtent: %04x '%.*s' %d\n", + hdc, count, lpstr, count ); + return TEXT_TabbedTextOut( hdc, 0, 0, lpstr, count, cTabStops, + NULL, lpTabPos, 0, FALSE ); +} + + +/*********************************************************************** + * GetTabbedTextExtent32W (USER32.293) + */ +DWORD GetTabbedTextExtent32W( HDC32 hdc, LPCWSTR lpstr, INT32 count, + INT32 cTabStops, const INT32 *lpTabPos ) +{ + LONG ret; + LPSTR p = HEAP_xalloc( GetProcessHeap(), 0, count + 1 ); + lstrcpynWtoA( p, lpstr, count + 1 ); + ret = GetTabbedTextExtent32A( hdc, p, count, cTabStops, lpTabPos ); + HeapFree( GetProcessHeap(), 0, p ); + return ret; }