Added support for Unicode rendering through Pango to wxX11.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling
2002-11-09 15:20:42 +00:00
parent bbd230a11d
commit 3049550ceb
20 changed files with 1176 additions and 269 deletions

View File

@@ -2084,16 +2084,24 @@ typedef GtkWidget *WXWidget;
#endif
#ifdef __WXGTK20__
/* Input method thing */
typedef struct _GtkIMMulticontext GtkIMMulticontext;
#endif // __WXGTK20__
#endif // __WXGTK__
#if defined(__WXGTK20__) || (defined(__WXX11__) && wxUSE_UNICODE)
#define wxUSE_PANGO 1
#else
#define wxUSE_PANGO 0
#endif
#if wxUSE_PANGO
/* Stand-ins for Pango types */
typedef struct _PangoContext PangoContext;
typedef struct _PangoLayout PangoLayout;
typedef struct _PangoFontDescription PangoFontDescription;
/* Input method thing */
typedef struct _GtkIMMulticontext GtkIMMulticontext;
#endif // GTK+ 2.0
#endif // GTK
#endif
#ifdef __WXMGL__
typedef struct window_t *WXWidget;

View File

@@ -72,7 +72,9 @@ enum wxXLFDField
// further it might make sense to make it a real class with virtual methods
struct WXDLLEXPORT wxNativeFontInfo
{
#if defined(_WX_X_FONTLIKE)
#if wxUSE_PANGO
PangoFontDescription *description;
#elif defined(_WX_X_FONTLIKE)
// the members can't be accessed directly as we only parse the
// xFontName on demand
private:
@@ -113,8 +115,6 @@ public:
FATTRS fa;
FONTMETRICS fm;
FACENAMEDESC fn;
#elif defined(__WXGTK20__)
PangoFontDescription *description;
#else // other platforms
//
// This is a generic implementation that should work on all ports

View File

@@ -101,6 +101,13 @@ public:
const wxSize& GetInitialSize() const { return m_initialSize; }
bool GetShowIconic() const { return m_showIconic; }
#if wxUSE_UNICODE
// Global context for Pango layout. Either use X11
// or use Xft rendering according to GDK_USE_XFT
// environment variable
PangoContext* GetPangoContext();
#endif
// We need this before creating the app
static WXDisplay* GetDisplay() { return ms_display; }
static WXDisplay* ms_display;

View File

@@ -133,6 +133,11 @@ protected:
wxRegion m_currentClippingRegion;
wxRegion m_paintClippingRegion;
#if wxUSE_UNICODE
PangoContext *m_context;
PangoFontDescription *m_fontdesc;
#endif
void SetUpDC();
void Destroy();
void ComputeScaleAndOrigin();

View File

@@ -48,10 +48,11 @@ public:
bool underlined = FALSE,
const wxString& face = wxEmptyString,
wxFontEncoding encoding = wxFONTENCODING_DEFAULT);
// wxMOTIF-specific
#if wxUSE_UNICODE
bool Create(const wxString& fontname,
wxFontEncoding fontenc = wxFONTENCODING_DEFAULT);
#endif
bool Create(const wxNativeFontInfo& fontinfo);
virtual ~wxFont();
@@ -69,6 +70,8 @@ public:
virtual wxFontEncoding GetEncoding() const;
virtual wxNativeFontInfo *GetNativeFontInfo() const;
virtual bool IsFixedWidth() const;
virtual void SetPointSize(int pointSize);
virtual void SetFamily(int family);
virtual void SetStyle(int style);
@@ -78,8 +81,13 @@ public:
virtual void SetEncoding(wxFontEncoding encoding);
virtual void SetNativeFontInfo( const wxNativeFontInfo& info );
// Implementation
virtual void SetNoAntiAliasing( bool no = TRUE );
virtual bool GetNoAntiAliasing();
// Implementation
#if wxUSE_PANGO
#else
// Find an existing, or create a new, XFontStruct
// based on this wxFont and the given scale. Append the
// font to list in the private data for future reference.
@@ -98,13 +106,12 @@ public:
// Helper function for convenient access of the above.
WXFontStructPtr GetFontStruct(double scale = 1.0,
WXDisplay* display = NULL) const;
#endif
protected:
// common part of all ctors
void Init();
// VZ: IMHO, we don't need it at all...
bool RealizeResource() { return TRUE; }
void Unshare();
private:

View File

@@ -21,10 +21,26 @@
// Include common declarations
#include "wx/x11/privx.h"
#if wxUSE_UNICODE
#include "pango/pango.h"
#endif
class wxMouseEvent;
class wxKeyEvent;
class wxWindow;
// ----------------------------------------------------------------------------
// Some Unicode <-> UTF8 macros stolen from GTK
// ----------------------------------------------------------------------------
#if wxUSE_UNICODE
#define wxGTK_CONV(s) wxConvUTF8.cWX2MB(s)
#define wxGTK_CONV_BACK(s) wxConvUTF8.cMB2WX(s)
#else
#define wxGTK_CONV(s) s.c_str()
#define wxGTK_CONV_BACK(s) s
#endif
// ----------------------------------------------------------------------------
// we maintain a hash table which contains the mapping from Widget to wxWindow
// corresponding to the window for this widget

View File

@@ -14,6 +14,8 @@
#include "wx/defs.h"
#include "wx/utils.h"
#include "wx/colour.h"
#include "X11/Xlib.h"
#include "X11/Xatom.h"
#include "X11/Xutil.h"