| /* | 
 |  * True Type font engine support | 
 |  * | 
 |  * Copyright 1996 John Harvey | 
 |  * Copyright 1998 David Lee Lambert | 
 |  * | 
 |  * This library is free software; you can redistribute it and/or | 
 |  * modify it under the terms of the GNU Lesser General Public | 
 |  * License as published by the Free Software Foundation; either | 
 |  * version 2.1 of the License, or (at your option) any later version. | 
 |  * | 
 |  * This library is distributed in the hope that it will be useful, | 
 |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
 |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
 |  * Lesser General Public License for more details. | 
 |  * | 
 |  * You should have received a copy of the GNU Lesser General Public | 
 |  * License along with this library; if not, write to the Free Software | 
 |  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
 |  */ | 
 | #include <math.h> | 
 | #include <stdio.h> | 
 | #include <stdlib.h> | 
 | #include "winbase.h" | 
 | #include "font.h" | 
 | #include "wine/debug.h"      | 
 |  | 
 | WINE_DEFAULT_DEBUG_CHANNEL(font); | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineEnumerateFont (GDI.300) | 
 |  */ | 
 | WORD WINAPI  | 
 | EngineEnumerateFont16(LPSTR fontname, FARPROC16 proc, DWORD data ) | 
 | { | 
 |     FIXME("(%s,%p,%lx),stub\n",fontname,proc,data); | 
 |     return 0; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineDeleteFont (GDI.301) | 
 |  */ | 
 | WORD WINAPI EngineDeleteFont16(LPFONTINFO16 lpFontInfo) | 
 | { | 
 |     WORD handle; | 
 |  | 
 |     /*	untested, don't know if it works. | 
 | 	We seem to access some structure that is located after the | 
 | 	FONTINFO. The FONTINFO documentation says that there may  | 
 | 	follow some char-width table or font bitmap or vector info. | 
 | 	I think it is some kind of font bitmap that begins at offset 0x52, | 
 | 	as FONTINFO goes up to 0x51. | 
 | 	If this is correct, everything should be implemented correctly. | 
 |     */ | 
 |     if ( ((lpFontInfo->dfType & (RASTER_FONTTYPE|DEVICE_FONTTYPE)) | 
 |       == (RASTER_FONTTYPE|DEVICE_FONTTYPE)) | 
 | 	&& (LOWORD(lpFontInfo->dfFace) == LOWORD(lpFontInfo)+0x6e) | 
 | 	&& (handle = *(WORD *)(lpFontInfo+0x54)) ) | 
 |     { | 
 | 	*(WORD *)(lpFontInfo+0x54) = 0; | 
 | 	GlobalFree16(handle); | 
 |     } | 
 |     return 1; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineRealizeFont (GDI.302) | 
 |  */ | 
 | WORD WINAPI EngineRealizeFont16(LPLOGFONT16 lplogFont, LPTEXTXFORM16 lptextxform, LPFONTINFO16 lpfontInfo) | 
 | { | 
 |     FIXME("(%p,%p,%p),stub\n",lplogFont,lptextxform,lpfontInfo); | 
 |      | 
 |     return 0; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineRealizeFontExt (GDI.315) | 
 |  */ | 
 | WORD WINAPI EngineRealizeFontExt16(LONG l1, LONG l2, LONG l3, LONG l4) | 
 | { | 
 |     FIXME("(%08lx,%08lx,%08lx,%08lx),stub\n",l1,l2,l3,l4); | 
 |      | 
 |     return 0; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineGetCharWidth (GDI.303) | 
 |  */ | 
 | WORD WINAPI EngineGetCharWidth16(LPFONTINFO16 lpFontInfo, BYTE firstChar, BYTE lastChar, LPINT16 buffer) | 
 | { | 
 |     int i; | 
 |  | 
 |     for (i = firstChar; i <= lastChar; i++) | 
 |        FIXME(" returns font's average width for range %d to %d\n", firstChar, lastChar); | 
 | 	*buffer++ = lpFontInfo->dfAvgWidth; /* insert some charwidth functionality here; use average width for now */ | 
 |     return 1; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineSetFontContext (GDI.304) | 
 |  */ | 
 | WORD WINAPI EngineSetFontContext(LPFONTINFO16 lpFontInfo, WORD data) | 
 | { | 
 |    FIXME("stub?\n"); | 
 | 	return 0; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineGetGlyphBMP (GDI.305) | 
 |  */ | 
 | WORD WINAPI EngineGetGlyphBMP(WORD word, LPFONTINFO16 lpFontInfo, WORD w1, WORD w2, LPSTR string, DWORD dword, /*LPBITMAPMETRICS16*/ LPVOID metrics) | 
 | { | 
 |    FIXME("stub?\n"); | 
 |     return 0; | 
 | } | 
 |  | 
 | /*********************************************************************** | 
 |  *		EngineMakeFontDir (GDI.306) | 
 |  */ | 
 | DWORD WINAPI EngineMakeFontDir(HDC16 hdc, LPFONTDIR16 fontdir, LPCSTR string) | 
 | { | 
 |    FIXME(" stub! (always fails)\n"); | 
 |     return -1; /* error */ | 
 |      | 
 | } |