Applied patch by snowleopard2 fixing a bunch of typos such as misspellings and double words in the documentation. Combined the patch with some local queued typos waiting to be committed as well as adding new typo fixes inspired by the patch.
Function names with American spelling were not changed nor was third-party code touched. The only code changes involve some changes in strings that are translated ("Can not" -> "Cannot").
Closes #13063 (again).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
185 lines
5.2 KiB
C++
185 lines
5.2 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: src/mgl/fontmgr.cpp
|
|
// Purpose: font management for wxMGL
|
|
// Author: Vaclav Slavik
|
|
// Created: 2006-11-18
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) 2001-2002 SciTech Software, Inc. (www.scitechsoft.com)
|
|
// (c) 2006 REA Elektronik GmbH
|
|
// Licence: wxWindows licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
// For compilers that support precompilation, includes "wx.h".
|
|
#include "wx/wxprec.h"
|
|
|
|
#ifdef __BORLANDC__
|
|
#pragma hdrstop
|
|
#endif
|
|
|
|
#ifndef WX_PRECOMP
|
|
#include "wx/log.h"
|
|
#endif
|
|
|
|
#include "wx/private/fontmgr.h"
|
|
#include "wx/sysopt.h"
|
|
|
|
#include <mgraph.h>
|
|
|
|
static int gs_antialiasingThreshold = -1;
|
|
|
|
// ============================================================================
|
|
// implementation
|
|
// ============================================================================
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxFontInstance
|
|
// ----------------------------------------------------------------------------
|
|
|
|
wxFontInstance::wxFontInstance(float ptSize, bool aa, font_lib_t *fontLib)
|
|
: wxFontInstanceBase(ptSize, aa)
|
|
{
|
|
m_font = MGL_loadFontInstance(fontLib, ptSize, 0.0, 0.0, aa);
|
|
|
|
wxASSERT_MSG( m_font, wxT("cannot create font instance") );
|
|
}
|
|
|
|
wxFontInstance::~wxFontInstance()
|
|
{
|
|
if ( m_font )
|
|
MGL_unloadFontInstance(m_font);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxFontFace
|
|
// ----------------------------------------------------------------------------
|
|
|
|
void wxFontFace::Acquire()
|
|
{
|
|
wxFontFaceBase::Acquire();
|
|
|
|
if ( m_refCnt == 1 )
|
|
{
|
|
wxCHECK_RET( m_fontLib == NULL, wxT("font lib already created") );
|
|
|
|
wxLogTrace("mgl_font", "opening library '%s'", m_fileName.mb_str());
|
|
m_fontLib = MGL_openFontLib(m_fileName.fn_str());
|
|
}
|
|
}
|
|
|
|
void wxFontFace::Release()
|
|
{
|
|
wxFontFaceBase::Release();
|
|
|
|
if ( m_refCnt == 0 )
|
|
{
|
|
wxCHECK_RET( m_fontLib != NULL, wxT("font lib not created") );
|
|
|
|
wxLogTrace("mgl_font", "closing library '%s'", m_fileName.mb_str());
|
|
MGL_closeFontLib(m_fontLib);
|
|
m_fontLib = NULL;
|
|
}
|
|
}
|
|
|
|
wxFontInstance *wxFontFace::GetFontInstance(float ptSize, bool aa)
|
|
{
|
|
if ( gs_antialiasingThreshold == -1 )
|
|
{
|
|
gs_antialiasingThreshold = 10;
|
|
#if wxUSE_SYSTEM_OPTIONS
|
|
if ( wxSystemOptions::HasOption(wxT("mgl.aa-threshold")) )
|
|
gs_antialiasingThreshold =
|
|
wxSystemOptions::GetOptionInt(wxT("mgl.aa-threshold"));
|
|
wxLogTrace("mgl_font", "AA threshold set to %i", gs_antialiasingThreshold);
|
|
#endif
|
|
}
|
|
|
|
// Small characters don't look good when antialiased with the algorithm
|
|
// that FreeType uses (mere 2x2 supersampling), so let's disable AA
|
|
// completely for small fonts. Bitmap fonts are not antialiased either.
|
|
if ( ptSize <= gs_antialiasingThreshold ||
|
|
m_fontLib->fontLibType == MGL_BITMAPFONT_LIB )
|
|
{
|
|
aa = false;
|
|
}
|
|
|
|
return wxFontFaceBase::GetFontInstance(ptSize, aa);
|
|
}
|
|
|
|
wxFontInstance *wxFontFace::CreateFontInstance(float ptSize, bool aa)
|
|
{
|
|
wxASSERT_MSG( m_fontLib, wxT("font library not loaded!") );
|
|
|
|
return new wxFontInstance(ptSize, aa, m_fontLib);
|
|
}
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxFontBundle
|
|
// ----------------------------------------------------------------------------
|
|
|
|
wxFontBundle::wxFontBundle(const font_info_t *info)
|
|
: m_fontInfo(info)
|
|
{
|
|
if ( info->regularFace[0] != '\0' )
|
|
m_faces[FaceType_Regular] = new wxFontFace(info->regularFace);
|
|
|
|
if ( info->italicFace[0] != '\0' )
|
|
m_faces[FaceType_Italic] = new wxFontFace(info->italicFace);
|
|
|
|
if ( info->boldFace[0] != '\0' )
|
|
m_faces[FaceType_Bold] = new wxFontFace(info->boldFace);
|
|
|
|
if ( info->boldItalicFace[0] != '\0' )
|
|
m_faces[FaceType_BoldItalic] = new wxFontFace(info->boldItalicFace);
|
|
|
|
wxLogTrace("mgl_font", "new family '%s' (r=%s, i=%s, b=%s, bi=%s)\n",
|
|
info->familyName, info->regularFace, info->italicFace,
|
|
info->boldFace, info->boldItalicFace);
|
|
}
|
|
|
|
wxString wxFontBundle::GetName() const
|
|
{
|
|
return wxString::FromAscii(m_fontInfo->familyName);
|
|
}
|
|
|
|
bool wxFontBundle::IsFixed() const
|
|
{
|
|
return m_fontInfo->isFixed;
|
|
}
|
|
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxFontsManager
|
|
// ----------------------------------------------------------------------------
|
|
|
|
wxString wxFontsManager::GetDefaultFacename(wxFontFamily family) const
|
|
{
|
|
switch ( family )
|
|
{
|
|
case wxSCRIPT:
|
|
return wxT("Script");
|
|
case wxDECORATIVE:
|
|
return wxT("Charter");
|
|
case wxROMAN:
|
|
return wxT("Times");
|
|
case wxTELETYPE:
|
|
case wxMODERN:
|
|
return wxT("Courier");
|
|
case wxSWISS:
|
|
case wxDEFAULT:
|
|
default:
|
|
return wxT("Helvetica");
|
|
}
|
|
}
|
|
|
|
static ibool MGLAPI enum_callback(const font_info_t *info, void *cookie)
|
|
{
|
|
wxFontsManager *db = (wxFontsManager*)cookie;
|
|
db->AddBundle(new wxFontBundle(info));
|
|
return TRUE;
|
|
}
|
|
|
|
void wxFontsManager::AddAllFonts()
|
|
{
|
|
MGL_enumerateFonts(enum_callback, (void*)this);
|
|
}
|