0c5d3e1ccd
2. added and documented wxBITMAP() macros (as wxICON) 3. restructured wxFont class, added support of encoding parameter 4. regenerated makefiles to compile the new fontcmn.cpp file 5. corrected bug with non existing files in document-view history git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@3753 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
203 lines
7.2 KiB
C++
203 lines
7.2 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/font.h
|
|
// Purpose: wxFontBase class: the interface of wxFont
|
|
// Author: Vadim Zeitlin
|
|
// Modified by:
|
|
// Created: 20.09.99
|
|
// RCS-ID: $Id$
|
|
// Copyright: (c) wxWindows team
|
|
// Licence: wxWindows license
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_FONT_H_BASE_
|
|
#define _WX_FONT_H_BASE_
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// headers
|
|
// ----------------------------------------------------------------------------
|
|
|
|
#include "wx/defs.h" // for wxDEFAULT &c
|
|
#include "wx/gdiobj.h" // the base class
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// forward declarations
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class WXDLLEXPORT wxFontBase;
|
|
class WXDLLEXPORT wxFont;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// font constants
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// standard font families
|
|
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
|
|
wxFONTENCODING_DEFAULT, // current default encoding
|
|
|
|
// ISO8859 standard defines a number of single-byte charsets
|
|
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_5, // Cyrillic
|
|
wxFONTENCODING_ISO8859_6, // Arabic
|
|
wxFONTENCODING_ISO8859_7, // Greek
|
|
wxFONTENCODING_ISO8859_8, // Hebrew
|
|
wxFONTENCODING_ISO8859_9, // Turkish (Latin5)
|
|
wxFONTENCODING_ISO8859_10, // Variation of Latin4 (Latin6)
|
|
wxFONTENCODING_ISO8859_11, // Thai
|
|
wxFONTENCODING_ISO8859_12, // doesn't exist currently, but put it
|
|
// here anyhow to make all ISO8859
|
|
// consecutive numbers
|
|
wxFONTENCODING_ISO8859_13, // Latin7
|
|
wxFONTENCODING_ISO8859_14, // Latin8
|
|
wxFONTENCODING_ISO8859_15, // Latin9 (a.k.a. Latin0, includes euro)
|
|
|
|
// Cyrillic charset soup (see http://czyborra.com/charsets/cyrillic.html)
|
|
wxFONTENCODING_KOI8, // we don't support any of KOI8 variants
|
|
wxFONTENCODING_ALTERNATIVE, // same as MS-DOS CP866
|
|
wxFONTENCODING_BULGARIAN, // used under Linux in Bulgaria
|
|
|
|
// what would we do without Microsoft? They have their own encodings
|
|
// for DOS
|
|
wxFONTENCODING_CP437, // original MS-DOS codepage
|
|
wxFONTENCODING_CP850, // CP437 merged with Latin1
|
|
wxFONTENCODING_CP852, // CP437 merged with Latin2
|
|
wxFONTENCODING_CP855, // another cyrillic encoding
|
|
wxFONTENCODING_CP866 = wxFONTENCODING_ALTERNATIVE,
|
|
// and for Windows
|
|
wxFONTENCODING_CP1250, // WinLatin2
|
|
wxFONTENCODING_CP1251, // WinCyrillic
|
|
wxFONTENCODING_CP1252, // WinLatin1
|
|
|
|
wxFONTENCODING_MAX
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxFontBase represents a font object
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class wxFontBase : public wxGDIObject
|
|
{
|
|
public:
|
|
// creator function
|
|
static wxFont *New(
|
|
int pointSize, // size of the font in points
|
|
int family, // see wxFontFamily enum
|
|
int style, // see wxFontStyle enum
|
|
int weight, // see wxFontWeight enum
|
|
bool underlined = FALSE, // not underlined by default
|
|
const wxString& face = wxEmptyString, // facename
|
|
wxFontEncoding encoding = wxFONTENCODING_DEFAULT); // ISO8859-X, ...
|
|
|
|
// was the font successfully created?
|
|
bool Ok() const { return m_refData != NULL; }
|
|
|
|
// comparison
|
|
bool operator == (const wxFont& font) const;
|
|
bool operator != (const wxFont& font) const;
|
|
|
|
// accessors: get the font characteristics
|
|
virtual int GetPointSize() const = 0;
|
|
virtual int GetFamily() const = 0;
|
|
virtual int GetStyle() const = 0;
|
|
virtual int GetWeight() const = 0;
|
|
virtual bool GetUnderlined() const = 0;
|
|
virtual wxString GetFaceName() const = 0;
|
|
virtual wxFontEncoding GetEncoding() const = 0;
|
|
|
|
// change the font characteristics
|
|
virtual void SetPointSize( int pointSize ) = 0;
|
|
virtual void SetFamily( int family ) = 0;
|
|
virtual void SetStyle( int style ) = 0;
|
|
virtual void SetWeight( int weight ) = 0;
|
|
virtual void SetFaceName( const wxString& faceName ) = 0;
|
|
virtual void SetUnderlined( bool underlined ) = 0;
|
|
virtual void SetEncoding(wxFontEncoding encoding) = 0;
|
|
|
|
// translate the fonts into human-readable string (i.e. GetStyleString()
|
|
// will return "wxITALIC" for an italic font, ...)
|
|
wxString GetFamilyString() const;
|
|
wxString GetStyleString() const;
|
|
wxString GetWeightString() const;
|
|
|
|
// the default encoding is used for creating all fonts with default
|
|
// encoding parameter
|
|
static wxFontEncoding GetDefaultEncoding()
|
|
{ return ms_encodingDefault; }
|
|
static void SetDefaultEncoding(wxFontEncoding encoding)
|
|
{ ms_encodingDefault = encoding; }
|
|
|
|
protected:
|
|
// get the internal data
|
|
class WXDLLEXPORT wxFontRefData *GetFontData() const
|
|
{ return (wxFontRefData *)m_refData; }
|
|
|
|
private:
|
|
// the currently default encoding: by default, it's the default system
|
|
// encoding, but may be changed by the application using
|
|
// SetDefaultEncoding() to make all subsequent fonts created without
|
|
// specifing encoding parameter using this encoding
|
|
static wxFontEncoding ms_encodingDefault;
|
|
};
|
|
|
|
// include the real class declaration
|
|
#if defined(__WXMSW__)
|
|
#include "wx/msw/font.h"
|
|
#elif defined(__WXMOTIF__)
|
|
#include "wx/motif/font.h"
|
|
#elif defined(__WXGTK__)
|
|
#include "wx/gtk/font.h"
|
|
#elif defined(__WXQT__)
|
|
#include "wx/qt/font.h"
|
|
#elif defined(__WXMAC__)
|
|
#include "wx/mac/font.h"
|
|
#elif defined(__WXPM__)
|
|
#include "wx/os2/font.h"
|
|
#elif defined(__WXSTUBS__)
|
|
#include "wx/stubs/font.h"
|
|
#endif
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// macros
|
|
// ----------------------------------------------------------------------------
|
|
|
|
// VZ: this is ugly (FIXME)
|
|
#define M_FONTDATA GetFontData()
|
|
|
|
#endif
|
|
// _WX_FONT_H_BASE_
|