use screen resolution, not hard coded one

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9744 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2001-04-13 14:43:23 +00:00
parent 551fe3a6f0
commit 55bd3f34b6
2 changed files with 15 additions and 23 deletions

View File

@@ -218,16 +218,10 @@ void wxFontRefData::Init(const wxNativeFontInfo& info)
m_faceName = info.lf.lfFaceName; m_faceName = info.lf.lfFaceName;
// remember that 1pt = 1/72inch
int height = abs(info.lf.lfHeight); int height = abs(info.lf.lfHeight);
#if wxUSE_SCREEN_DPI // remember that 1pt = 1/72inch
HDC dc = ::GetDC(NULL); const int ppInch = ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY);
static const int ppInch = GetDeviceCaps(dc, LOGPIXELSY);
::ReleaseDC(NULL, dc);
#else
static const int ppInch = 96;
#endif
m_pointSize = (int) (((72.0*((double)height))/(double) ppInch) + 0.5); m_pointSize = (int) (((72.0*((double)height))/(double) ppInch) + 0.5);
m_encoding = wxGetFontEncFromCharSet(info.lf.lfCharSet); m_encoding = wxGetFontEncFromCharSet(info.lf.lfCharSet);

View File

@@ -41,12 +41,6 @@
#include "wx/tokenzr.h" #include "wx/tokenzr.h"
// If 1, use the screen resolution to calculate font sizes.
// This is OK for screen fonts but might have implications when the
// same font is used for printing.
// If 0, assume 96 DPI.
#define wxUSE_SCREEN_DPI 1
// ============================================================================ // ============================================================================
// implementation // implementation
// ============================================================================ // ============================================================================
@@ -339,24 +333,28 @@ void wxFillLogFont(LOGFONT *logFont, const wxFont *font)
break; break;
} }
#if wxUSE_SCREEN_DPI // VZ: I'm reverting this as we clearly must use the real screen
HDC dc = ::GetDC(NULL); // resolution instead of hardcoded one or it surely will fail to work
static const int ppInch = ::GetDeviceCaps(dc, LOGPIXELSY); // in some cases.
::ReleaseDC(NULL, dc); //
#else // If there are any problems with this code, please let me know about
// it instead of reverting this change, thanks!
#if 1 // wxUSE_SCREEN_DPI
const int ppInch = ::GetDeviceCaps(ScreenHDC(), LOGPIXELSY);
#else // 0
// New behaviour: apparently ppInch varies according to Large/Small Fonts // New behaviour: apparently ppInch varies according to Large/Small Fonts
// setting in Windows. This messes up fonts. So, set ppInch to a constant // setting in Windows. This messes up fonts. So, set ppInch to a constant
// 96 dpi. // 96 dpi.
static const int ppInch = 96; static const int ppInch = 96;
#endif // 0/1 #endif // 1/0
int pointSize = font->GetPointSize();
#if wxFONT_SIZE_COMPATIBILITY #if wxFONT_SIZE_COMPATIBILITY
// Incorrect, but compatible with old wxWindows behaviour // Incorrect, but compatible with old wxWindows behaviour
int nHeight = (font->GetPointSize()*ppInch/72); int nHeight = (pointSize*ppInch)/72;
#else #else
// Correct for Windows compatibility // Correct for Windows compatibility
// int nHeight = - (font->GetPointSize()*ppInch/72); int nHeight = -(int)((pointSize*((double)ppInch)/72.0) + 0.5);
int nHeight = - (int) ( (font->GetPointSize()*((double)ppInch)/72.0) + 0.5);
#endif #endif
wxString facename = font->GetFaceName(); wxString facename = font->GetFaceName();