From 16d865f756b8bc251467139b3b75752219ab97bd Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Tue, 26 Feb 2002 13:16:41 +0000 Subject: [PATCH] Attempt at creating appropriate fonts in Nano-X git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/unix/fontutil.cpp | 43 ++++++++++++++++++++++++++++++++++++++++++- src/x11/nanox.c | 2 ++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/src/unix/fontutil.cpp b/src/unix/fontutil.cpp index 820498427f..dd89039962 100644 --- a/src/unix/fontutil.cpp +++ b/src/unix/fontutil.cpp @@ -613,7 +613,46 @@ static wxNativeFont wxLoadQueryFont(int pointSize, case wxSCRIPT: xfamily = wxT("utopia"); break; default: xfamily = wxT("*"); } - +#if wxUSE_NANOX + GR_SCREEN_INFO screenInfo; + GrGetScreenInfo(& screenInfo); + + int yPixelsPerCM = screenInfo.ydpcm; + + // A point is 1/20 of an inch. + // An inch is 2.541 cm. + // So pixelHeight = (pointSize / 20) (inches) * 2.541 (for cm) * yPixelsPerCM (for pixels) + + int pixelHeight = (int) ( (((float)pointSize) / 20.0) * 2.541 * (float) yPixelsPerCM) ; + + GR_LOGFONT logFont; + logFont.lfHeight = pixelHeight; + logFont.lfWidth = 0; + logFont.lfEscapement = 0; + logFont.lfOrientation = 0; + logFont.lfWeight = weight; // TODO: check of conversion req'd + logFont.lfItalic = (style == wxNORMAL ? 0 : 1) ; + logFont.lfUnderline = 0; + logFont.lfStrikeOut = 0; + logFont.lfCharSet = MWLF_CHARSET_DEFAULT; // TODO: select appropriate one + logFont.lfOutPrecision = MWLF_TYPE_DEFAULT; + logFont.lfClipPrecision = 0; // Not used + logFont.lfRoman = (family == wxROMAN ? 1 : 0) ; + logFont.lfSerif = (family == wxSWISS ? 0 : 1) ; + logFont.lfSansSerif = !logFont.lfSerif ; + logFont.lfModern = (family == wxMODERN ? 1 : 0) ; + logFont.lfProportional = (family == wxTELETYPE ? 0 : 1) ; + logFont.lfOblique = 0; + logFont.lfSmallCaps = 0; + logFont.lfPitch = 0; // 0 = default + strcpy(logFont.lfFaceName, facename.c_str()); + + XFontStruct* fontInfo = (XFontStruct*) malloc(sizeof(XFontStruct)); + fontInfo->fid = GrCreateFont((GR_CHAR*) facename.c_str(), pixelHeight, & logFont); + GrGetFontInfo(fontInfo->fid, & fontInfo->info); + return (wxNativeFont) fontInfo; + +#else wxString fontSpec; if (!facename.IsEmpty()) { @@ -789,6 +828,8 @@ static wxNativeFont wxLoadQueryFont(int pointSize, *xFontName = fontSpec; return wxLoadFont(fontSpec); +#endif + // wxUSE_NANOX } // ---------------------------------------------------------------------------- diff --git a/src/x11/nanox.c b/src/x11/nanox.c index c080455ff5..ee7dda4098 100644 --- a/src/x11/nanox.c +++ b/src/x11/nanox.c @@ -15,6 +15,7 @@ #include #include #include +#include #include "wx/defs.h" #include "wx/x11/nanox/X11/Xlib.h" @@ -351,6 +352,7 @@ XFontStruct* XLoadQueryFont(Display* display, const char* fontSpec) XFontStruct* fontInfo = malloc(sizeof(XFontStruct)); fontInfo->fid = GrCreateFont(fontName, 0, 0); GrGetFontInfo(fontInfo->fid, & fontInfo->info); + printf("Warning: should not call XLoadQueryFont since font spec is not used in Nano-X.\n"); return fontInfo; } -- 2.45.2