Added wxNativeFontInfo and wxFontMapper.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robin Dunn
2001-09-04 05:00:15 +00:00
parent 53fe40bac2
commit 6d8b4f8d2b
4 changed files with 1297 additions and 322 deletions

View File

@@ -37,7 +37,7 @@ using wxColumnSorterMixin.
Added wxGenBitmapTextButton, TablePrint, etc. contribs from Lorne White.
Added wxNativeFontInfo and wxFontMapper.
2.3.1

View File

@@ -20,6 +20,10 @@
#ifndef __WXMSW__
#include <wx/dcps.h>
#endif
#include <wx/fontmap.h>
#include <wx/fontenc.h>
#include <wx/fontmap.h>
#include <wx/fontutil.h>
%}
//----------------------------------------------------------------------
@@ -291,6 +295,38 @@ public:
//----------------------------------------------------------------------
enum wxFontFamily
{
wxFONTFAMILY_DEFAULT = wxDEFAULT,
wxFONTFAMILY_DECORATIVE = wxDECORATIVE,
wxFONTFAMILY_ROMAN = wxROMAN,
wxFONTFAMILY_SCRIPT = wxSCRIPT,
wxFONTFAMILY_SWISS = wxSWISS,
wxFONTFAMILY_MODERN = wxMODERN,
wxFONTFAMILY_TELETYPE = wxTELETYPE,
wxFONTFAMILY_MAX
};
// font styles
enum wxFontStyle
{
wxFONTSTYLE_NORMAL = wxNORMAL,
wxFONTSTYLE_ITALIC = wxITALIC,
wxFONTSTYLE_SLANT = wxSLANT,
wxFONTSTYLE_MAX
};
// font weights
enum wxFontWeight
{
wxFONTWEIGHT_NORMAL = wxNORMAL,
wxFONTWEIGHT_LIGHT = wxLIGHT,
wxFONTWEIGHT_BOLD = wxBOLD,
wxFONTWEIGHT_MAX
};
// font encodings
enum wxFontEncoding
{
wxFONTENCODING_SYSTEM = -1, // system default
@@ -300,7 +336,7 @@ enum wxFontEncoding
wxFONTENCODING_ISO8859_1, // West European (Latin1)
wxFONTENCODING_ISO8859_2, // Central and East European (Latin2)
wxFONTENCODING_ISO8859_3, // Esperanto (Latin3)
wxFONTENCODING_ISO8859_4, // Baltic languages (Estonian) (Latin4)
wxFONTENCODING_ISO8859_4, // Baltic (old) (Latin4)
wxFONTENCODING_ISO8859_5, // Cyrillic
wxFONTENCODING_ISO8859_6, // Arabic
wxFONTENCODING_ISO8859_7, // Greek
@@ -311,9 +347,10 @@ enum wxFontEncoding
wxFONTENCODING_ISO8859_12, // doesn't exist currently, but put it
// here anyhow to make all ISO8859
// consecutive numbers
wxFONTENCODING_ISO8859_13, // Latin7
wxFONTENCODING_ISO8859_13, // Baltic (Latin7)
wxFONTENCODING_ISO8859_14, // Latin8
wxFONTENCODING_ISO8859_15, // Latin9 (a.k.a. Latin0, includes euro)
wxFONTENCODING_ISO8859_MAX,
// Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html)
wxFONTENCODING_KOI8, // we don't support any of KOI8 variants
@@ -328,54 +365,175 @@ enum wxFontEncoding
wxFONTENCODING_CP855, // another cyrillic encoding
wxFONTENCODING_CP866, // and another one
// and for Windows
wxFONTENCODING_CP874, // WinThai
wxFONTENCODING_CP1250, // WinLatin2
wxFONTENCODING_CP1251, // WinCyrillic
wxFONTENCODING_CP1252, // WinLatin1
wxFONTENCODING_CP1253, // WinGreek (8859-7)
wxFONTENCODING_CP1254, // WinTurkish
wxFONTENCODING_CP1255, // WinHebrew
wxFONTENCODING_CP1256, // WinArabic
wxFONTENCODING_CP1257, // WinBaltic (same as Latin 7)
wxFONTENCODING_CP12_MAX,
wxFONTENCODING_UTF7, // UTF-7 Unicode encoding
wxFONTENCODING_UTF8, // UTF-8 Unicode encoding
wxFONTENCODING_UNICODE, // Unicode - currently used only by
// wxEncodingConverter class
wxFONTENCODING_MAX
};
// wxNativeFontInfo is platform-specific font representation: this struct
// should be considered as opaque font description only used by the native
// functions, the user code can only get the objects of this type from
// somewhere and pass it somewhere else (possibly save them somewhere using
// ToString() and restore them using FromString())
struct wxNativeFontInfo
{
// it is important to be able to serialize wxNativeFontInfo objects to be
// able to store them (in config file, for example)
bool FromString(const wxString& s);
wxString ToString() const;
%addmethods {
wxString __str__() {
return self->ToString();
}
}
};
// wxFontMapper manages user-definable correspondence between logical font
// names and the fonts present on the machine.
//
// The default implementations of all functions will ask the user if they are
// not capable of finding the answer themselves and store the answer in a
// config file (configurable via SetConfigXXX functions). This behaviour may
// be disabled by giving the value of FALSE to "interactive" parameter.
// However, the functions will always consult the config file to allow the
// user-defined values override the default logic and there is no way to
// disable this - which shouldn't be ever needed because if "interactive" was
// never TRUE, the config file is never created anyhow.
class wxFontMapper
{
public:
wxFontMapper();
~wxFontMapper();
// find an alternative for the given encoding (which is supposed to not be
// available on this system). If successful, return TRUE and rwxFontEcoding
// that can be used it wxFont ctor otherwise return FALSE
//bool GetAltForEncoding(wxFontEncoding encoding,
// wxFontEncoding *alt_encoding,
// const wxString& facename = wxEmptyString,
// bool interactive = TRUE);
// Find an alternative for the given encoding (which is supposed to not be
// available on this system). If successful, returns the encoding otherwise
// returns None.
%addmethods {
PyObject* GetAltForEncoding(wxFontEncoding encoding,
const wxString& facename = wxEmptyString,
bool interactive = TRUE) {
wxFontEncoding alt_enc;
if (self->GetAltForEncoding(encoding, &alt_enc, facename, interactive))
return PyInt_FromLong(alt_enc);
else {
Py_INCREF(Py_None);
return Py_None;
}
}
}
// checks whether given encoding is available in given face or not.
// If no facename is given,
bool IsEncodingAvailable(wxFontEncoding encoding,
const wxString& facename = wxEmptyString);
// returns the encoding for the given charset (in the form of RFC 2046) or
// wxFONTENCODING_SYSTEM if couldn't decode it
wxFontEncoding CharsetToEncoding(const wxString& charset,
bool interactive = TRUE);
// return internal string identifier for the encoding (see also
// GetEncodingDescription())
static wxString GetEncodingName(wxFontEncoding encoding);
// return user-readable string describing the given encoding
//
// NB: hard-coded now, but might change later (read it from config?)
static wxString GetEncodingDescription(wxFontEncoding encoding);
// the parent window for modal dialogs
void SetDialogParent(wxWindow *parent);
// the title for the dialogs (note that default is quite reasonable)
void SetDialogTitle(const wxString& title);
// functions which allow to configure the config object used: by default,
// the global one (from wxConfigBase::Get() will be used) and the default
// root path for the config settings is the string returned by
// GetDefaultConfigPath()
// set the config object to use (may be NULL to use default)
void SetConfig(wxConfigBase *config);
// set the root config path to use (should be an absolute path)
void SetConfigPath(const wxString& prefix);
// return default config path
static const wxChar *GetDefaultConfigPath();
};
class wxFont : public wxGDIObject {
public:
wxFont( int pointSize, int family, int style, int weight,
int underline=FALSE, char* faceName = "",
wxFontEncoding encoding=wxFONTENCODING_DEFAULT);
%name(wxFontFromNativeInfo)wxFont(const wxNativeFontInfo& info);
~wxFont();
bool Ok();
wxString GetFaceName();
int GetFamily();
#ifdef __WXMSW__
int GetFontId();
#endif
int GetPointSize();
int GetStyle();
bool GetUnderlined();
int GetWeight();
wxFontEncoding GetEncoding();
void SetFaceName(const wxString& faceName);
void SetFamily(int family);
bool Ok() const;
int GetPointSize() const;
int GetFamily() const;
int GetStyle() const;
int GetWeight() const;
bool GetUnderlined() const;
wxString GetFaceName() const;
wxFontEncoding GetEncoding() const;
wxNativeFontInfo* GetNativeFontInfo() const;
void SetPointSize(int pointSize);
void SetFamily(int family);
void SetStyle(int style);
void SetUnderlined(bool underlined);
void SetWeight(int weight);
void SetFaceName(const wxString& faceName);
void SetUnderlined(bool underlined);
void SetEncoding(wxFontEncoding encoding);
wxString GetFamilyString();
wxString GetStyleString();
wxString GetWeightString();
void SetNativeFontInfo(const wxNativeFontInfo& info);
wxString GetFamilyString() const;
wxString GetStyleString() const;
wxString GetWeightString() const;
static wxFontEncoding GetDefaultEncoding();
static void SetDefaultEncoding(wxFontEncoding encoding);
};
%inline %{
wxFontEncoding wxFont_GetDefaultEncoding() {
return wxFont::GetDefaultEncoding();
}
void wxFont_SetDefaultEncoding(wxFontEncoding encoding) {
wxFont::SetDefaultEncoding(encoding);
}
%}
class wxFontList : public wxObject {
public:

File diff suppressed because it is too large Load Diff

View File

@@ -244,6 +244,66 @@ class wxCursor(wxCursorPtr):
class wxNativeFontInfoPtr :
def __init__(self,this):
self.this = this
self.thisown = 0
def FromString(self, *_args, **_kwargs):
val = apply(gdic.wxNativeFontInfo_FromString,(self,) + _args, _kwargs)
return val
def ToString(self, *_args, **_kwargs):
val = apply(gdic.wxNativeFontInfo_ToString,(self,) + _args, _kwargs)
return val
def __str__(self, *_args, **_kwargs):
val = apply(gdic.wxNativeFontInfo___str__,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxNativeFontInfo instance at %s>" % (self.this,)
class wxNativeFontInfo(wxNativeFontInfoPtr):
def __init__(self,this):
self.this = this
class wxFontMapperPtr :
def __init__(self,this):
self.this = this
self.thisown = 0
def __del__(self,gdic=gdic):
if self.thisown == 1 :
gdic.delete_wxFontMapper(self)
def GetAltForEncoding(self, *_args, **_kwargs):
val = apply(gdic.wxFontMapper_GetAltForEncoding,(self,) + _args, _kwargs)
return val
def IsEncodingAvailable(self, *_args, **_kwargs):
val = apply(gdic.wxFontMapper_IsEncodingAvailable,(self,) + _args, _kwargs)
return val
def CharsetToEncoding(self, *_args, **_kwargs):
val = apply(gdic.wxFontMapper_CharsetToEncoding,(self,) + _args, _kwargs)
return val
def SetDialogParent(self, *_args, **_kwargs):
val = apply(gdic.wxFontMapper_SetDialogParent,(self,) + _args, _kwargs)
return val
def SetDialogTitle(self, *_args, **_kwargs):
val = apply(gdic.wxFontMapper_SetDialogTitle,(self,) + _args, _kwargs)
return val
def SetConfig(self, *_args, **_kwargs):
val = apply(gdic.wxFontMapper_SetConfig,(self,) + _args, _kwargs)
return val
def SetConfigPath(self, *_args, **_kwargs):
val = apply(gdic.wxFontMapper_SetConfigPath,(self,) + _args, _kwargs)
return val
def __repr__(self):
return "<C wxFontMapper instance at %s>" % (self.this,)
class wxFontMapper(wxFontMapperPtr):
def __init__(self,*_args,**_kwargs):
self.this = apply(gdic.new_wxFontMapper,_args,_kwargs)
self.thisown = 1
class wxFontPtr(wxGDIObjectPtr):
def __init__(self,this):
self.this = this
@@ -254,51 +314,55 @@ class wxFontPtr(wxGDIObjectPtr):
def Ok(self, *_args, **_kwargs):
val = apply(gdic.wxFont_Ok,(self,) + _args, _kwargs)
return val
def GetFaceName(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetFaceName,(self,) + _args, _kwargs)
def GetPointSize(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetPointSize,(self,) + _args, _kwargs)
return val
def GetFamily(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetFamily,(self,) + _args, _kwargs)
return val
def GetFontId(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetFontId,(self,) + _args, _kwargs)
return val
def GetPointSize(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetPointSize,(self,) + _args, _kwargs)
return val
def GetStyle(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetStyle,(self,) + _args, _kwargs)
return val
def GetUnderlined(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetUnderlined,(self,) + _args, _kwargs)
return val
def GetWeight(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetWeight,(self,) + _args, _kwargs)
return val
def GetUnderlined(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetUnderlined,(self,) + _args, _kwargs)
return val
def GetFaceName(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetFaceName,(self,) + _args, _kwargs)
return val
def GetEncoding(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetEncoding,(self,) + _args, _kwargs)
return val
def SetFaceName(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetFaceName,(self,) + _args, _kwargs)
return val
def SetFamily(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetFamily,(self,) + _args, _kwargs)
def GetNativeFontInfo(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetNativeFontInfo,(self,) + _args, _kwargs)
if val: val = wxNativeFontInfoPtr(val)
return val
def SetPointSize(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetPointSize,(self,) + _args, _kwargs)
return val
def SetFamily(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetFamily,(self,) + _args, _kwargs)
return val
def SetStyle(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetStyle,(self,) + _args, _kwargs)
return val
def SetUnderlined(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetUnderlined,(self,) + _args, _kwargs)
return val
def SetWeight(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetWeight,(self,) + _args, _kwargs)
return val
def SetFaceName(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetFaceName,(self,) + _args, _kwargs)
return val
def SetUnderlined(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetUnderlined,(self,) + _args, _kwargs)
return val
def SetEncoding(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetEncoding,(self,) + _args, _kwargs)
return val
def SetNativeFontInfo(self, *_args, **_kwargs):
val = apply(gdic.wxFont_SetNativeFontInfo,(self,) + _args, _kwargs)
return val
def GetFamilyString(self, *_args, **_kwargs):
val = apply(gdic.wxFont_GetFamilyString,(self,) + _args, _kwargs)
return val
@@ -317,6 +381,11 @@ class wxFont(wxFontPtr):
def wxFontFromNativeInfo(*_args,**_kwargs):
val = wxFontPtr(apply(gdic.new_wxFontFromNativeInfo,_args,_kwargs))
val.thisown = 1
return val
class wxFontListPtr(wxObjectPtr):
def __init__(self,this):
@@ -1169,10 +1238,6 @@ def wxStockCursor(*_args, **_kwargs):
if val: val = wxCursorPtr(val); val.thisown = 1
return val
wxFont_GetDefaultEncoding = gdic.wxFont_GetDefaultEncoding
wxFont_SetDefaultEncoding = gdic.wxFont_SetDefaultEncoding
def wxNamedColour(*_args, **_kwargs):
val = apply(gdic.wxNamedColour,_args,_kwargs)
if val: val = wxColourPtr(val); val.thisown = 1
@@ -1183,10 +1248,36 @@ def wxMemoryDCFromDC(*_args, **_kwargs):
if val: val = wxMemoryDCPtr(val); val.thisown = 1
return val
wxFontMapper_GetEncodingName = gdic.wxFontMapper_GetEncodingName
wxFontMapper_GetEncodingDescription = gdic.wxFontMapper_GetEncodingDescription
wxFontMapper_GetDefaultConfigPath = gdic.wxFontMapper_GetDefaultConfigPath
wxFont_GetDefaultEncoding = gdic.wxFont_GetDefaultEncoding
wxFont_SetDefaultEncoding = gdic.wxFont_SetDefaultEncoding
#-------------- VARIABLE WRAPPERS ------------------
wxFONTFAMILY_DEFAULT = gdic.wxFONTFAMILY_DEFAULT
wxFONTFAMILY_DECORATIVE = gdic.wxFONTFAMILY_DECORATIVE
wxFONTFAMILY_ROMAN = gdic.wxFONTFAMILY_ROMAN
wxFONTFAMILY_SCRIPT = gdic.wxFONTFAMILY_SCRIPT
wxFONTFAMILY_SWISS = gdic.wxFONTFAMILY_SWISS
wxFONTFAMILY_MODERN = gdic.wxFONTFAMILY_MODERN
wxFONTFAMILY_TELETYPE = gdic.wxFONTFAMILY_TELETYPE
wxFONTFAMILY_MAX = gdic.wxFONTFAMILY_MAX
wxFONTSTYLE_NORMAL = gdic.wxFONTSTYLE_NORMAL
wxFONTSTYLE_ITALIC = gdic.wxFONTSTYLE_ITALIC
wxFONTSTYLE_SLANT = gdic.wxFONTSTYLE_SLANT
wxFONTSTYLE_MAX = gdic.wxFONTSTYLE_MAX
wxFONTWEIGHT_NORMAL = gdic.wxFONTWEIGHT_NORMAL
wxFONTWEIGHT_LIGHT = gdic.wxFONTWEIGHT_LIGHT
wxFONTWEIGHT_BOLD = gdic.wxFONTWEIGHT_BOLD
wxFONTWEIGHT_MAX = gdic.wxFONTWEIGHT_MAX
wxFONTENCODING_SYSTEM = gdic.wxFONTENCODING_SYSTEM
wxFONTENCODING_DEFAULT = gdic.wxFONTENCODING_DEFAULT
wxFONTENCODING_ISO8859_1 = gdic.wxFONTENCODING_ISO8859_1
@@ -1204,6 +1295,7 @@ wxFONTENCODING_ISO8859_12 = gdic.wxFONTENCODING_ISO8859_12
wxFONTENCODING_ISO8859_13 = gdic.wxFONTENCODING_ISO8859_13
wxFONTENCODING_ISO8859_14 = gdic.wxFONTENCODING_ISO8859_14
wxFONTENCODING_ISO8859_15 = gdic.wxFONTENCODING_ISO8859_15
wxFONTENCODING_ISO8859_MAX = gdic.wxFONTENCODING_ISO8859_MAX
wxFONTENCODING_KOI8 = gdic.wxFONTENCODING_KOI8
wxFONTENCODING_ALTERNATIVE = gdic.wxFONTENCODING_ALTERNATIVE
wxFONTENCODING_BULGARIAN = gdic.wxFONTENCODING_BULGARIAN
@@ -1212,9 +1304,19 @@ wxFONTENCODING_CP850 = gdic.wxFONTENCODING_CP850
wxFONTENCODING_CP852 = gdic.wxFONTENCODING_CP852
wxFONTENCODING_CP855 = gdic.wxFONTENCODING_CP855
wxFONTENCODING_CP866 = gdic.wxFONTENCODING_CP866
wxFONTENCODING_CP874 = gdic.wxFONTENCODING_CP874
wxFONTENCODING_CP1250 = gdic.wxFONTENCODING_CP1250
wxFONTENCODING_CP1251 = gdic.wxFONTENCODING_CP1251
wxFONTENCODING_CP1252 = gdic.wxFONTENCODING_CP1252
wxFONTENCODING_CP1253 = gdic.wxFONTENCODING_CP1253
wxFONTENCODING_CP1254 = gdic.wxFONTENCODING_CP1254
wxFONTENCODING_CP1255 = gdic.wxFONTENCODING_CP1255
wxFONTENCODING_CP1256 = gdic.wxFONTENCODING_CP1256
wxFONTENCODING_CP1257 = gdic.wxFONTENCODING_CP1257
wxFONTENCODING_CP12_MAX = gdic.wxFONTENCODING_CP12_MAX
wxFONTENCODING_UTF7 = gdic.wxFONTENCODING_UTF7
wxFONTENCODING_UTF8 = gdic.wxFONTENCODING_UTF8
wxFONTENCODING_UNICODE = gdic.wxFONTENCODING_UNICODE
wxFONTENCODING_MAX = gdic.wxFONTENCODING_MAX
cvar = gdic.cvar
wxNORMAL_FONT = wxFontPtr(gdic.cvar.wxNORMAL_FONT)