/*
** Mimic functions
** Intended only for IE 2.0 stub functions
*/

#include "project.h"

typedef struct tagEnumFontFamLParam {
    LPARAM lparam;
    int ReqCharset;
    FONTENUMPROC lpCallback;
} EnumFontFamLParam;


int CALLBACK stub_EnumFontFamExProc(
    ENUMLOGFONT * lpelf,	// address of logical-font data 
    TEXTMETRIC * lpntm,	// address of physical-font data 
    int  FontType,	// type of font 
    LPARAM  lParam 	// address of application-defined data  
   )
{
    EnumFontFamLParam *pEFlparam = (EnumFontFamLParam *)lParam;

    if ( (pEFlparam->ReqCharset==DEFAULT_CHARSET ) ||
         (pEFlparam->ReqCharset==(int)lpelf->elfLogFont.lfCharSet) )
        (pEFlparam->lpCallback)(&lpelf->elfLogFont, lpntm, FontType, pEFlparam->lparam);

    return TRUE;
}

int WINAPI stub_EnumFontFamiliesExA(
HDC hdc,
LPLOGFONT lplogfont,
FONTENUMPROC lpEnumFontFamExProc,
LPARAM lparam,
DWORD dwFalgs)
{
    EnumFontFamLParam EFlparam;
    int Result;

    if ( lpEnumFontFamExProc ) {
        EFlparam.lparam = lparam;
        EFlparam.ReqCharset = (int)lplogfont->lfCharSet;
        EFlparam.lpCallback = lpEnumFontFamExProc;
        if ( lplogfont->lfFaceName[0] )
            Result = EnumFontFamiliesA((HDC)hdc,(LPCSTR)lplogfont->lfFaceName,(FONTENUMPROC)stub_EnumFontFamExProc,(LPARAM)&EFlparam);
        else
            Result = EnumFontFamiliesA((HDC)hdc,(LPCSTR)NULL,(FONTENUMPROC)stub_EnumFontFamExProc,(LPARAM)&EFlparam);

        return Result;
    }

    return FALSE;
}