]> git.saurik.com Git - wxWidgets.git/commitdiff
Attempt at creating appropriate fonts in Nano-X
authorJulian Smart <julian@anthemion.co.uk>
Tue, 26 Feb 2002 13:16:41 +0000 (13:16 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Tue, 26 Feb 2002 13:16:41 +0000 (13:16 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/unix/fontutil.cpp
src/x11/nanox.c

index 820498427f565944305ef8e38255a12715c6b9f0..dd8903996211034f47ddb544f275049375c51c69 100644 (file)
@@ -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
 }
 
 // ----------------------------------------------------------------------------
index c080455ff5221988c4344adcfd1529b57c8567d2..ee7dda409889a2a1d5c4727aff6cf9946ee83da1 100644 (file)
@@ -15,6 +15,7 @@
 #include <ctype.h>
 #include <malloc.h>
 #include <string.h>
+#include <stdio.h>
 #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;
 }