- Add a bitmap resource with the font icons: TrueType, printer,
OpenType and Type 1. Modify the code so that they will be used if or when the needed bits are passed to the FontEnumProc. - Use EnumFontFamiliesEx instead of EnumFontFamilies. - Fix the fixme in the WM_MEASUREITEM message handler.
This commit is contained in:
parent
a0d658aeed
commit
62fb1919f8
|
@ -8,6 +8,7 @@ commdlg.spec.c
|
||||||
floppy.ico
|
floppy.ico
|
||||||
folder.ico
|
folder.ico
|
||||||
folder2.ico
|
folder2.ico
|
||||||
|
fontpics.bmp
|
||||||
hdisk.ico
|
hdisk.ico
|
||||||
network.ico
|
network.ico
|
||||||
pd32_collate.ico
|
pd32_collate.ico
|
||||||
|
|
|
@ -33,8 +33,9 @@ RC_BINARIES = \
|
||||||
800.bmp \
|
800.bmp \
|
||||||
cdrom.ico \
|
cdrom.ico \
|
||||||
floppy.ico \
|
floppy.ico \
|
||||||
folder2.ico \
|
|
||||||
folder.ico \
|
folder.ico \
|
||||||
|
folder2.ico \
|
||||||
|
fontpics.bmp \
|
||||||
hdisk.ico \
|
hdisk.ico \
|
||||||
network.ico \
|
network.ico \
|
||||||
pd32_collate.ico \
|
pd32_collate.ico \
|
||||||
|
|
|
@ -203,9 +203,10 @@ typedef struct
|
||||||
int added;
|
int added;
|
||||||
} CFn_ENUMSTRUCT, *LPCFn_ENUMSTRUCT;
|
} CFn_ENUMSTRUCT, *LPCFn_ENUMSTRUCT;
|
||||||
|
|
||||||
INT AddFontFamily(const LOGFONTA *lplf, UINT nFontType, LPCHOOSEFONTA lpcf,
|
INT AddFontFamily(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM,
|
||||||
HWND hwnd, LPCFn_ENUMSTRUCT e);
|
UINT nFontType, LPCHOOSEFONTA lpcf, HWND hwnd,
|
||||||
INT AddFontStyle(const ENUMLOGFONTEXA *lpElfex, const TEXTMETRICA *metrics,
|
LPCFn_ENUMSTRUCT e);
|
||||||
|
INT AddFontStyle(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *metrics,
|
||||||
UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3,
|
UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3,
|
||||||
HWND hDlg, BOOL iswin16);
|
HWND hDlg, BOOL iswin16);
|
||||||
void _dump_cf_flags(DWORD cflags);
|
void _dump_cf_flags(DWORD cflags);
|
||||||
|
|
|
@ -566,3 +566,55 @@ NETWORK ICON network.ico
|
||||||
'00 00 80 00 00 00 80 00 00 00 80 00 00 00 C0 00'
|
'00 00 80 00 00 00 80 00 00 00 80 00 00 00 C0 00'
|
||||||
'00 00 E0 01 00 00 FF FF 00 00 FF FF 00 00'
|
'00 00 E0 01 00 00 FF FF 00 00 FF FF 00 00'
|
||||||
} */
|
} */
|
||||||
|
|
||||||
|
/* BINRES fontpics.bmp */
|
||||||
|
38 BITMAP DISCARDABLE LOADONCALL fontpics.bmp
|
||||||
|
/*{
|
||||||
|
'42 4D E6 02 00 00 00 00 00 00 76 00 00 00 28 00'
|
||||||
|
'00 00 64 00 00 00 0C 00 00 00 01 00 04 00 00 00'
|
||||||
|
'00 00 70 02 00 00 00 00 00 00 00 00 00 00 00 00'
|
||||||
|
'00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 80'
|
||||||
|
'00 00 00 80 80 00 80 00 00 00 80 00 80 00 80 80'
|
||||||
|
'00 00 C0 C0 C0 00 80 80 80 00 00 00 FF 00 00 FF'
|
||||||
|
'00 00 00 FF FF 00 FF 00 00 00 FF 00 FF 00 FF FF'
|
||||||
|
'00 00 FF FF FF 00 CC CC CC CC C5 55 55 5C CC CC'
|
||||||
|
'CC C0 00 00 00 00 00 00 00 CC CC CC CC 78 06 87'
|
||||||
|
'CC CC CC CC CC CC CC 78 06 87 CC CC CC CC CC CC'
|
||||||
|
'CC CC CC CC CC CC CC CC 00 00 CC CC CC CC CC C5'
|
||||||
|
'5C CC CC CC CC 07 77 77 77 77 77 77 77 0C CC CC'
|
||||||
|
'C8 87 CC C7 67 CC CC CC CC CC C8 87 CC C7 67 CC'
|
||||||
|
'CC CC CC CC C7 97 7C C7 87 CC CC CC 00 00 CC CC'
|
||||||
|
'66 66 66 C5 5C CC CC CC CC 07 77 77 77 77 99 AA'
|
||||||
|
'77 0C CC CC 70 7C CC CC 76 7C CC CC CC CC 70 7C'
|
||||||
|
'66 6C 76 7C CC CC CC CC C9 99 97 C9 99 97 CC CC'
|
||||||
|
'00 00 CC CC CC 66 CC C5 5C CC CC CC CC C0 00 08'
|
||||||
|
'88 88 88 00 00 CC CC CC 80 CC CC CC C8 6C CC CC'
|
||||||
|
'CC CC 80 CC CC C6 C8 6C CC CC CC CC C9 99 C7 C7'
|
||||||
|
'99 C7 CC CC 00 00 CC CC CC 66 CC C5 5C CC CC CC'
|
||||||
|
'CC C8 0F FF FF FF FF FF 08 CC CC CC 00 CC CC CC'
|
||||||
|
'C7 67 CC CC CC CC 00 6C C6 66 C7 67 CC CC CC CC'
|
||||||
|
'C7 99 CC 77 99 CC CC CC 00 00 CC CC CC 66 CC C5'
|
||||||
|
'5C CC CC CC CC C8 FF F8 88 88 88 FF F8 CC CC CC'
|
||||||
|
'00 CC CC CC CC 67 CC CC CC CC 00 C6 CC 6C CC 67'
|
||||||
|
'CC CC CC CC C7 99 CC C8 99 7C CC CC 00 00 CC CC'
|
||||||
|
'CC 65 CC C5 5C CC 5C CC CC C8 0F FF FF FF FF FF'
|
||||||
|
'08 CC CC CC 80 CC CC CC CC 66 CC CC CC CC 80 C6'
|
||||||
|
'6C 66 6C 66 CC CC CC CC CC 99 7C C7 99 7C CC CC'
|
||||||
|
'00 00 CC CC CC 65 5C C5 5C C5 5C CC CC C8 FF F8'
|
||||||
|
'88 88 88 FF F8 CC CC CC 70 7C CC CC CC 66 CC CC'
|
||||||
|
'CC CC 70 7C 6C 6C CC 66 CC CC CC CC CC 89 7C CC'
|
||||||
|
'99 7C CC CC 00 00 CC CC CC 65 55 55 55 55 5C CC'
|
||||||
|
'CC C8 0F FF FF FF FF FF 08 CC CC CC C0 8C CC CC'
|
||||||
|
'CC 68 CC CC CC CC C0 8C 66 CC CC 68 CC CC CC CC'
|
||||||
|
'CC C9 9C CC 99 9C CC CC 00 00 CC 6C CC 66 CC C6'
|
||||||
|
'CC CC CC CC CC C8 FF F8 88 88 88 FF F8 CC CC CC'
|
||||||
|
'C7 07 CC CC C7 67 CC CC CC CC C7 07 CC CC C7 67'
|
||||||
|
'CC CC CC CC CC CC 77 CC 89 9C CC CC 00 00 CC 66'
|
||||||
|
'CC 66 CC 66 CC CC CC CC CC C8 0F FF FF FF FF FF'
|
||||||
|
'08 CC CC CC CC 78 7C CC 78 7C CC CC CC CC CC 78'
|
||||||
|
'7C CC 78 7C CC CC CC CC CC CC CC 89 97 7C CC CC'
|
||||||
|
'00 00 CC 66 66 66 66 66 CC CC CC CC CC C8 88 88'
|
||||||
|
'88 88 88 88 88 CC CC CC CC CC 78 06 77 CC CC CC'
|
||||||
|
'CC CC CC CC 78 06 77 CC CC CC CC CC CC CC CC CC'
|
||||||
|
'CC CC CC CC 00 00'
|
||||||
|
}*/
|
||||||
|
|
|
@ -43,7 +43,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(commdlg);
|
||||||
|
|
||||||
#include "cdlg.h"
|
#include "cdlg.h"
|
||||||
|
|
||||||
static HBITMAP hBitmapTT = 0;
|
/* image list with TrueType bitmaps and more */
|
||||||
|
static HIMAGELIST himlTT = 0;
|
||||||
|
#define TTBITMAP_XSIZE 20 /* x-size of the bitmaps */
|
||||||
|
|
||||||
|
|
||||||
INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
|
INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam,
|
||||||
|
@ -396,11 +398,12 @@ static BOOL CFn_HookCallChk32(LPCHOOSEFONTA lpcf)
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* AddFontFamily [internal]
|
* AddFontFamily [internal]
|
||||||
*/
|
*/
|
||||||
INT AddFontFamily(const LOGFONTA *lplf, UINT nFontType,
|
INT AddFontFamily(const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM,
|
||||||
LPCHOOSEFONTA lpcf, HWND hwnd, LPCFn_ENUMSTRUCT e)
|
UINT nFontType, LPCHOOSEFONTA lpcf, HWND hwnd, LPCFn_ENUMSTRUCT e)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
WORD w;
|
WORD w;
|
||||||
|
const LOGFONTA *lplf = &(lpElfex->elfLogFont);
|
||||||
|
|
||||||
TRACE("font=%s (nFontType=%d)\n", lplf->lfFaceName,nFontType);
|
TRACE("font=%s (nFontType=%d)\n", lplf->lfFaceName,nFontType);
|
||||||
|
|
||||||
|
@ -420,8 +423,9 @@ INT AddFontFamily(const LOGFONTA *lplf, UINT nFontType,
|
||||||
if (i == CB_ERR) {
|
if (i == CB_ERR) {
|
||||||
i = SendMessageA(hwnd, CB_ADDSTRING, 0, (LPARAM)lplf->lfFaceName);
|
i = SendMessageA(hwnd, CB_ADDSTRING, 0, (LPARAM)lplf->lfFaceName);
|
||||||
if( i != CB_ERR) {
|
if( i != CB_ERR) {
|
||||||
w=(lplf->lfCharSet << 8) | lplf->lfPitchAndFamily;
|
|
||||||
/* store some important font information */
|
/* store some important font information */
|
||||||
|
w = (lplf->lfPitchAndFamily) << 8 |
|
||||||
|
(HIWORD(lpNTM->ntmTm.ntmFlags) & 0xff);
|
||||||
SendMessageA(hwnd, CB_SETITEMDATA, i, MAKELONG(nFontType,w));
|
SendMessageA(hwnd, CB_SETITEMDATA, i, MAKELONG(nFontType,w));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -431,12 +435,13 @@ INT AddFontFamily(const LOGFONTA *lplf, UINT nFontType,
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* FontFamilyEnumProc32 [internal]
|
* FontFamilyEnumProc32 [internal]
|
||||||
*/
|
*/
|
||||||
static INT WINAPI FontFamilyEnumProc(const LOGFONTA *lpLogFont,
|
static INT WINAPI FontFamilyEnumProc(const ENUMLOGFONTEXA *lpElfex,
|
||||||
const TEXTMETRICA *metrics, DWORD dwFontType, LPARAM lParam)
|
const TEXTMETRICA *metrics, DWORD dwFontType, LPARAM lParam)
|
||||||
{
|
{
|
||||||
LPCFn_ENUMSTRUCT e;
|
LPCFn_ENUMSTRUCT e;
|
||||||
e=(LPCFn_ENUMSTRUCT)lParam;
|
e=(LPCFn_ENUMSTRUCT)lParam;
|
||||||
return AddFontFamily(lpLogFont, dwFontType, e->lpcf32a, e->hWnd1, e);
|
return AddFontFamily( lpElfex, (NEWTEXTMETRICEXA *) metrics,
|
||||||
|
dwFontType, e->lpcf32a, e->hWnd1, e);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
|
@ -547,7 +552,7 @@ inline void CFn_ReleaseDC(LPCHOOSEFONTA lpcf, HDC hdc)
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
* AddFontStyle [internal]
|
* AddFontStyle [internal]
|
||||||
*/
|
*/
|
||||||
INT AddFontStyle( const ENUMLOGFONTEXA *lpElfex, const TEXTMETRICA *lpTM,
|
INT AddFontStyle( const ENUMLOGFONTEXA *lpElfex, const NEWTEXTMETRICEXA *lpNTM,
|
||||||
UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3,
|
UINT nFontType, LPCHOOSEFONTA lpcf, HWND hcmb2, HWND hcmb3,
|
||||||
HWND hDlg, BOOL iswin16)
|
HWND hDlg, BOOL iswin16)
|
||||||
{
|
{
|
||||||
|
@ -568,8 +573,8 @@ INT AddFontStyle( const ENUMLOGFONTEXA *lpElfex, const TEXTMETRICA *lpTM,
|
||||||
{
|
{
|
||||||
INT points;
|
INT points;
|
||||||
if(!(hdc = CFn_GetDC(lpcf))) return 0;
|
if(!(hdc = CFn_GetDC(lpcf))) return 0;
|
||||||
points = MulDiv( lpTM->tmHeight - lpTM->tmInternalLeading, 72,
|
points = MulDiv( lpNTM->ntmTm.tmHeight - lpNTM->ntmTm.tmInternalLeading,
|
||||||
GetDeviceCaps(hdc, LOGPIXELSY));
|
72, GetDeviceCaps(hdc, LOGPIXELSY));
|
||||||
CFn_ReleaseDC(lpcf, hdc);
|
CFn_ReleaseDC(lpcf, hdc);
|
||||||
i = AddFontSizeToCombo3(hcmb3, points, lpcf);
|
i = AddFontSizeToCombo3(hcmb3, points, lpcf);
|
||||||
if( i) return 0;
|
if( i) return 0;
|
||||||
|
@ -671,8 +676,8 @@ static INT WINAPI FontStyleEnumProc( const ENUMLOGFONTEXA *lpElfex,
|
||||||
HWND hcmb2=s->hWnd1;
|
HWND hcmb2=s->hWnd1;
|
||||||
HWND hcmb3=s->hWnd2;
|
HWND hcmb3=s->hWnd2;
|
||||||
HWND hDlg=GetParent(hcmb3);
|
HWND hDlg=GetParent(hcmb3);
|
||||||
return AddFontStyle( lpElfex, metrics, dwFontType, s->lpcf32a,
|
return AddFontStyle( lpElfex, (const NEWTEXTMETRICEXA *) metrics,
|
||||||
hcmb2, hcmb3, hDlg, FALSE);
|
dwFontType, s->lpcf32a, hcmb2, hcmb3, hDlg, FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -698,8 +703,9 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
|
||||||
EndDialog (hDlg, 0);
|
EndDialog (hDlg, 0);
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
if (!hBitmapTT)
|
if (!himlTT)
|
||||||
hBitmapTT = LoadBitmapA(0, MAKEINTRESOURCEA(OBM_TRTYPE));
|
himlTT = ImageList_LoadImageA( COMDLG32_hInstance, MAKEINTRESOURCEA(38),
|
||||||
|
TTBITMAP_XSIZE, 0, CLR_DEFAULT, IMAGE_BITMAP, 0);
|
||||||
|
|
||||||
if (!(lpcf->Flags & CF_SHOWHELP) || !IsWindow(lpcf->hwndOwner))
|
if (!(lpcf->Flags & CF_SHOWHELP) || !IsWindow(lpcf->hwndOwner))
|
||||||
ShowWindow(GetDlgItem(hDlg,pshHelp),SW_HIDE);
|
ShowWindow(GetDlgItem(hDlg,pshHelp),SW_HIDE);
|
||||||
|
@ -739,9 +745,14 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
|
||||||
s.hWnd1=GetDlgItem(hDlg,cmb1);
|
s.hWnd1=GetDlgItem(hDlg,cmb1);
|
||||||
s.lpcf32a=lpcf;
|
s.lpcf32a=lpcf;
|
||||||
do {
|
do {
|
||||||
|
LOGFONTA elf;
|
||||||
s.added = 0;
|
s.added = 0;
|
||||||
if (!EnumFontFamiliesA(hdc, NULL, FontFamilyEnumProc, (LPARAM)&s)) {
|
elf.lfCharSet = DEFAULT_CHARSET; /* enum all charsets */
|
||||||
TRACE("EnumFontFamilies returns 0\n");
|
elf.lfPitchAndFamily = 0;
|
||||||
|
elf.lfFaceName[0] = '\0'; /* enum all fonts */
|
||||||
|
if (!EnumFontFamiliesExA(hdc, &elf, (FONTENUMPROCA)FontFamilyEnumProc, (LPARAM)&s, 0))
|
||||||
|
{
|
||||||
|
TRACE("EnumFontFamiliesEx returns 0\n");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (s.added) break;
|
if (s.added) break;
|
||||||
|
@ -810,13 +821,23 @@ LRESULT CFn_WMInitDialog(HWND hDlg, WPARAM wParam, LPARAM lParam,
|
||||||
*/
|
*/
|
||||||
LRESULT CFn_WMMeasureItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
|
LRESULT CFn_WMMeasureItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
BITMAP bm;
|
HDC hdc;
|
||||||
|
HFONT hfontprev;
|
||||||
|
TEXTMETRICW tm;
|
||||||
LPMEASUREITEMSTRUCT lpmi=(LPMEASUREITEMSTRUCT)lParam;
|
LPMEASUREITEMSTRUCT lpmi=(LPMEASUREITEMSTRUCT)lParam;
|
||||||
if (!hBitmapTT)
|
if (!himlTT)
|
||||||
hBitmapTT = LoadBitmapA(0, MAKEINTRESOURCEA(OBM_TRTYPE));
|
himlTT = ImageList_LoadImageA( COMDLG32_hInstance, MAKEINTRESOURCEA(38),
|
||||||
GetObjectA( hBitmapTT, sizeof(bm), &bm );
|
TTBITMAP_XSIZE, 0, CLR_DEFAULT, IMAGE_BITMAP, 0);
|
||||||
lpmi->itemHeight=bm.bmHeight;
|
ImageList_GetIconSize( himlTT, 0, &lpmi->itemHeight);
|
||||||
/* FIXME: use MAX of bm.bmHeight and tm.tmHeight .*/
|
lpmi->itemHeight += 2;
|
||||||
|
/* use MAX of bitmap height and tm.tmHeight .*/
|
||||||
|
hdc=GetDC( hDlg);
|
||||||
|
if(!hdc) return 0;
|
||||||
|
hfontprev = SelectObject( hdc, GetStockObject( SYSTEM_FONT));
|
||||||
|
GetTextMetricsW( hdc, &tm);
|
||||||
|
if( tm.tmHeight > lpmi->itemHeight) lpmi->itemHeight = tm.tmHeight;
|
||||||
|
SelectObject( hdc, hfontprev);
|
||||||
|
ReleaseDC( hDlg, hdc);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -828,12 +849,10 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
HBRUSH hBrush;
|
HBRUSH hBrush;
|
||||||
char buffer[40];
|
char buffer[40];
|
||||||
BITMAP bm;
|
|
||||||
COLORREF cr, oldText=0, oldBk=0;
|
COLORREF cr, oldText=0, oldBk=0;
|
||||||
RECT rect;
|
RECT rect;
|
||||||
HDC hMemDC;
|
|
||||||
int nFontType;
|
int nFontType;
|
||||||
HBITMAP objPrev; /* for TT usage */
|
int idx;
|
||||||
LPDRAWITEMSTRUCT lpdi = (LPDRAWITEMSTRUCT)lParam;
|
LPDRAWITEMSTRUCT lpdi = (LPDRAWITEMSTRUCT)lParam;
|
||||||
|
|
||||||
if (lpdi->itemID == (UINT)-1) /* got no items */
|
if (lpdi->itemID == (UINT)-1) /* got no items */
|
||||||
|
@ -864,19 +883,23 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
|
||||||
/* TRACE(commdlg,"WM_Drawitem cmb1\n"); */
|
/* TRACE(commdlg,"WM_Drawitem cmb1\n"); */
|
||||||
SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
|
SendMessageA(lpdi->hwndItem, CB_GETLBTEXT, lpdi->itemID,
|
||||||
(LPARAM)buffer);
|
(LPARAM)buffer);
|
||||||
GetObjectA( hBitmapTT, sizeof(bm), &bm );
|
TextOutA(lpdi->hDC, lpdi->rcItem.left + TTBITMAP_XSIZE + 10,
|
||||||
TextOutA(lpdi->hDC, lpdi->rcItem.left + bm.bmWidth + 10,
|
|
||||||
lpdi->rcItem.top, buffer, strlen(buffer));
|
lpdi->rcItem.top, buffer, strlen(buffer));
|
||||||
nFontType = SendMessageA(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L);
|
nFontType = SendMessageA(lpdi->hwndItem, CB_GETITEMDATA, lpdi->itemID,0L);
|
||||||
if (nFontType & TRUETYPE_FONTTYPE)
|
idx = -1;
|
||||||
{
|
if (nFontType & TRUETYPE_FONTTYPE) {
|
||||||
hMemDC = CreateCompatibleDC(lpdi->hDC);
|
idx = 0; /* picture: TT */
|
||||||
objPrev = SelectObject(hMemDC, hBitmapTT);
|
if( nFontType & NTM_TT_OPENTYPE)
|
||||||
BitBlt(lpdi->hDC, lpdi->rcItem.left, lpdi->rcItem.top,
|
idx = 2; /* picture: O */
|
||||||
bm.bmWidth, bm.bmHeight, hMemDC, 0, 0, SRCCOPY);
|
} else if( nFontType & NTM_PS_OPENTYPE)
|
||||||
SelectObject(hMemDC, objPrev);
|
idx = 3; /* picture: O+ps */
|
||||||
DeleteDC(hMemDC);
|
else if( nFontType & NTM_TYPE1)
|
||||||
}
|
idx = 4; /* picture: a */
|
||||||
|
else if( nFontType & DEVICE_FONTTYPE)
|
||||||
|
idx = 1; /* picture: printer */
|
||||||
|
if( idx >= 0)
|
||||||
|
ImageList_Draw( himlTT, idx, lpdi->hDC, lpdi->rcItem.left,
|
||||||
|
lpdi->rcItem.top, ILD_TRANSPARENT);
|
||||||
break;
|
break;
|
||||||
case cmb2:
|
case cmb2:
|
||||||
case cmb3:
|
case cmb3:
|
||||||
|
@ -929,7 +952,7 @@ LRESULT CFn_WMDrawItem(HWND hDlg, WPARAM wParam, LPARAM lParam)
|
||||||
LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
|
LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
|
||||||
LPCHOOSEFONTA lpcf)
|
LPCHOOSEFONTA lpcf)
|
||||||
{
|
{
|
||||||
int i,j;
|
int i;
|
||||||
long l;
|
long l;
|
||||||
HDC hdc;
|
HDC hdc;
|
||||||
LPLOGFONTA lpxx=lpcf->lpLogFont;
|
LPLOGFONTA lpxx=lpcf->lpLogFont;
|
||||||
|
@ -1002,13 +1025,11 @@ LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
|
||||||
SendDlgItemMessageA(hDlg,cmb1,CB_GETLBTEXT,i,
|
SendDlgItemMessageA(hDlg,cmb1,CB_GETLBTEXT,i,
|
||||||
(LPARAM)str);
|
(LPARAM)str);
|
||||||
l=SendDlgItemMessageA(hDlg,cmb1,CB_GETITEMDATA,i,0);
|
l=SendDlgItemMessageA(hDlg,cmb1,CB_GETITEMDATA,i,0);
|
||||||
j=HIWORD(l);
|
|
||||||
lpcf->nFontType = LOWORD(l);
|
lpcf->nFontType = LOWORD(l);
|
||||||
/* FIXME: lpcf->nFontType |= .... SIMULATED_FONTTYPE and so */
|
/* FIXME: lpcf->nFontType |= .... SIMULATED_FONTTYPE and so */
|
||||||
/* same value reported to the EnumFonts
|
/* same value reported to the EnumFonts
|
||||||
call back with the extra FONTTYPE_... bits added */
|
call back with the extra FONTTYPE_... bits added */
|
||||||
lpxx->lfPitchAndFamily=j&0xff;
|
lpxx->lfPitchAndFamily = HIWORD(l) >> 8;
|
||||||
lpxx->lfCharSet=j>>8;
|
|
||||||
}
|
}
|
||||||
strcpy(lpxx->lfFaceName,str);
|
strcpy(lpxx->lfFaceName,str);
|
||||||
i=SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0);
|
i=SendDlgItemMessageA(hDlg, cmb2, CB_GETCURSEL, 0, 0);
|
||||||
|
@ -1037,6 +1058,8 @@ LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam,
|
||||||
i=SendDlgItemMessageA(hDlg, cmb5, CB_GETCURSEL, 0, 0);
|
i=SendDlgItemMessageA(hDlg, cmb5, CB_GETCURSEL, 0, 0);
|
||||||
if (i!=CB_ERR)
|
if (i!=CB_ERR)
|
||||||
lpxx->lfCharSet=SendDlgItemMessageA(hDlg, cmb5, CB_GETITEMDATA, i, 0);
|
lpxx->lfCharSet=SendDlgItemMessageA(hDlg, cmb5, CB_GETITEMDATA, i, 0);
|
||||||
|
else
|
||||||
|
lpxx->lfCharSet = DEFAULT_CHARSET;
|
||||||
lpxx->lfStrikeOut=IsDlgButtonChecked(hDlg,chx1);
|
lpxx->lfStrikeOut=IsDlgButtonChecked(hDlg,chx1);
|
||||||
lpxx->lfUnderline=IsDlgButtonChecked(hDlg,chx2);
|
lpxx->lfUnderline=IsDlgButtonChecked(hDlg,chx2);
|
||||||
lpxx->lfWidth=lpxx->lfOrientation=lpxx->lfEscapement=0;
|
lpxx->lfWidth=lpxx->lfOrientation=lpxx->lfEscapement=0;
|
||||||
|
|
|
@ -59,12 +59,13 @@ static void FONT_LogFont16To32A( const LPLOGFONT16 font16, LPLOGFONTA font32 )
|
||||||
lstrcpynA( font32->lfFaceName, font16->lfFaceName, LF_FACESIZE );
|
lstrcpynA( font32->lfFaceName, font16->lfFaceName, LF_FACESIZE );
|
||||||
};
|
};
|
||||||
|
|
||||||
static void FONT_Metrics16To32A( const TEXTMETRIC16 *pm16, TEXTMETRICA *pm32a)
|
static void FONT_Metrics16To32A( const TEXTMETRIC16 *pm16,
|
||||||
|
NEWTEXTMETRICEXA *pnm32a)
|
||||||
{
|
{
|
||||||
ZeroMemory( pm32a, sizeof(TEXTMETRICA));
|
ZeroMemory( pnm32a, sizeof(NEWTEXTMETRICEXA));
|
||||||
/* NOTE: only the fields used by AddFontStyle() are filled in */
|
/* NOTE: only the fields used by AddFontStyle() are filled in */
|
||||||
pm32a->tmHeight = pm16->tmHeight;
|
pnm32a->ntmTm.tmHeight = pm16->tmHeight;
|
||||||
pm32a->tmExternalLeading = pm16->tmExternalLeading;
|
pnm32a->ntmTm.tmExternalLeading = pm16->tmExternalLeading;
|
||||||
};
|
};
|
||||||
|
|
||||||
static void CFn_CHOOSEFONT16to32A(LPCHOOSEFONT16 chf16, LPCHOOSEFONTA chf32a)
|
static void CFn_CHOOSEFONT16to32A(LPCHOOSEFONT16 chf16, LPCHOOSEFONTA chf32a)
|
||||||
|
@ -108,10 +109,13 @@ INT16 WINAPI FontFamilyEnumProc16( SEGPTR logfont, SEGPTR metrics,
|
||||||
HWND hDlg=GetParent(hwnd);
|
HWND hDlg=GetParent(hwnd);
|
||||||
LPCHOOSEFONT16 lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER);
|
LPCHOOSEFONT16 lpcf=(LPCHOOSEFONT16)GetWindowLongA(hDlg, DWL_USER);
|
||||||
LOGFONT16 *lplf = MapSL( logfont );
|
LOGFONT16 *lplf = MapSL( logfont );
|
||||||
LOGFONTA lf32a;
|
TEXTMETRIC16 *lpmtrx16 = MapSL(metrics);
|
||||||
FONT_LogFont16To32A(lplf, &lf32a);
|
ENUMLOGFONTEXA elf32a;
|
||||||
return AddFontFamily(&lf32a, nFontType, (LPCHOOSEFONTA)lpcf->lpTemplateName,
|
NEWTEXTMETRICEXA nmtrx32a;
|
||||||
hwnd,NULL);
|
FONT_LogFont16To32A(lplf, &(elf32a.elfLogFont));
|
||||||
|
FONT_Metrics16To32A(lpmtrx16, &nmtrx32a);
|
||||||
|
return AddFontFamily(&elf32a, &nmtrx32a, nFontType,
|
||||||
|
(LPCHOOSEFONTA)lpcf->lpTemplateName, hwnd,NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
/***********************************************************************
|
/***********************************************************************
|
||||||
|
@ -127,10 +131,10 @@ INT16 WINAPI FontStyleEnumProc16( SEGPTR logfont, SEGPTR metrics,
|
||||||
LOGFONT16 *lplf = MapSL(logfont);
|
LOGFONT16 *lplf = MapSL(logfont);
|
||||||
TEXTMETRIC16 *lpmtrx16 = MapSL(metrics);
|
TEXTMETRIC16 *lpmtrx16 = MapSL(metrics);
|
||||||
ENUMLOGFONTEXA elf32a;
|
ENUMLOGFONTEXA elf32a;
|
||||||
TEXTMETRICA mtrx32a;
|
NEWTEXTMETRICEXA nmtrx32a;
|
||||||
FONT_LogFont16To32A(lplf, &(elf32a.elfLogFont));
|
FONT_LogFont16To32A(lplf, &(elf32a.elfLogFont));
|
||||||
FONT_Metrics16To32A(lpmtrx16, &mtrx32a);
|
FONT_Metrics16To32A(lpmtrx16, &nmtrx32a);
|
||||||
return AddFontStyle(&elf32a, &mtrx32a, nFontType,
|
return AddFontStyle(&elf32a, &nmtrx32a, nFontType,
|
||||||
(LPCHOOSEFONTA)lpcf->lpTemplateName, hcmb2, hcmb3, hDlg, TRUE);
|
(LPCHOOSEFONTA)lpcf->lpTemplateName, hcmb2, hcmb3, hDlg, TRUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1098,6 +1098,14 @@ DECL_WINELIB_TYPE_AW(LPPOLYTEXT)
|
||||||
#define NTM_BOLD 0x00000020L
|
#define NTM_BOLD 0x00000020L
|
||||||
#define NTM_ITALIC 0x00000001L
|
#define NTM_ITALIC 0x00000001L
|
||||||
|
|
||||||
|
#define NTM_NONNEGATIVE_AC 0x00010000
|
||||||
|
#define NTM_PS_OPENTYPE 0x00020000
|
||||||
|
#define NTM_TT_OPENTYPE 0x00040000
|
||||||
|
#define NTM_MULTIPLEMASTER 0x00080000
|
||||||
|
#define NTM_TYPE1 0x00100000
|
||||||
|
#define NTM_DSIG 0x00200000
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
LONG tmHeight;
|
LONG tmHeight;
|
||||||
|
|
Loading…
Reference in New Issue