]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/fmapbase.cpp
Combine two wxImage-to-pixmap creation functions into one.
[wxWidgets.git] / src / common / fmapbase.cpp
index 707a0a8114e1ffe12aa42ff7de6c78345fd7a171..ccf7de0844d5f6b6b83fad2185f9519d0534af99 100644 (file)
@@ -89,10 +89,8 @@ static wxFontEncoding gs_encodings[] =
     wxFONTENCODING_CP437,
     wxFONTENCODING_UTF7,
     wxFONTENCODING_UTF8,
-    wxFONTENCODING_UTF16,
     wxFONTENCODING_UTF16BE,
     wxFONTENCODING_UTF16LE,
-    wxFONTENCODING_UTF32,
     wxFONTENCODING_UTF32BE,
     wxFONTENCODING_UTF32LE,
     wxFONTENCODING_EUC_JP,
@@ -138,12 +136,17 @@ static const wxChar* gs_encodingDescs[] =
     wxTRANSLATE( "Windows/DOS OEM (CP 437)" ),
     wxTRANSLATE( "Unicode 7 bit (UTF-7)" ),
     wxTRANSLATE( "Unicode 8 bit (UTF-8)" ),
+#ifdef WORDS_BIGENDIAN
     wxTRANSLATE( "Unicode 16 bit (UTF-16)" ),
-    wxTRANSLATE( "Unicode 16 bit Big Endian (UTF-16BE)" ),
     wxTRANSLATE( "Unicode 16 bit Little Endian (UTF-16LE)" ),
     wxTRANSLATE( "Unicode 32 bit (UTF-32)" ),
-    wxTRANSLATE( "Unicode 32 bit Big Endian (UTF-32BE)" ),
     wxTRANSLATE( "Unicode 32 bit Little Endian (UTF-32LE)" ),
+#else // WORDS_BIGENDIAN
+    wxTRANSLATE( "Unicode 16 bit Big Endian (UTF-16BE)" ),
+    wxTRANSLATE( "Unicode 16 bit (UTF-16)" ),
+    wxTRANSLATE( "Unicode 32 bit Big Endian (UTF-32BE)" ),
+    wxTRANSLATE( "Unicode 32 bit (UTF-32)" ),
+#endif // WORDS_BIGENDIAN
     wxTRANSLATE( "Extended Unix Codepage for Japanese (EUC-JP)" ),
     wxTRANSLATE( "US-ASCII" ),
     wxTRANSLATE( "BIG5" ),
@@ -152,7 +155,7 @@ static const wxChar* gs_encodingDescs[] =
 };
 
 // and the internal names (these are not translated on purpose!)
-static const wxChar* gs_encodingNames[WXSIZEOF(gs_encodingDescs)][10] =
+static const wxChar* gs_encodingNames[WXSIZEOF(gs_encodingDescs)][9] =
 {
     // names from the columns correspond to these OS:
     //      Linux        Solaris and IRIX       HP-UX             AIX
@@ -195,12 +198,17 @@ static const wxChar* gs_encodingNames[WXSIZEOF(gs_encodingDescs)][10] =
 
     { wxT( "UTF-7" ), wxT("utf7"), NULL },
     { wxT( "UTF-8" ), wxT("utf8"), NULL },
-    { wxT( "UTF-16" ), wxT("UCS-2"), wxT("UCS2"), NULL },
-    { wxT( "UTF-16BE" ), wxT("UCS-2BE"), NULL },
+#ifdef WORDS_BIGENDIAN
+    { wxT( "UTF-16BE" ), wxT("UCS-2BE"), wxT( "UTF-16" ), wxT("UCS-2"), wxT("UCS2"), NULL },
     { wxT( "UTF-16LE" ), wxT("UCS-2LE"), NULL },
-    { wxT( "UTF-32" ), wxT( "UCS-4" ), wxT("UCS4"), NULL },
-    { wxT( "UTF-32BE" ), wxT( "UCS-4BE" ), NULL },
+    { wxT( "UTF-32BE" ), wxT( "UCS-4BE" ), wxT( "UTF-32" ), wxT( "UCS-4" ), wxT("UCS4"), NULL },
     { wxT( "UTF-32LE" ), wxT( "UCS-4LE" ), NULL },
+#else // WORDS_BIGENDIAN
+    { wxT( "UTF-16BE" ), wxT("UCS-2BE"), NULL },
+    { wxT( "UTF-16LE" ), wxT("UCS-2LE"), wxT( "UTF-16" ), wxT("UCS-2"), wxT("UCS2"), NULL },
+    { wxT( "UTF-32BE" ), wxT( "UCS-4BE" ), NULL },
+    { wxT( "UTF-32LE" ), wxT( "UCS-4LE" ), wxT( "UTF-32" ), wxT( "UCS-4" ), wxT("UCS4"), NULL },
+#endif // WORDS_BIGENDIAN
 
     { wxT( "EUC-JP" ), wxT( "eucJP" ), wxT( "euc_jp" ), wxT( "IBM-eucJP" ), NULL },
 
@@ -225,8 +233,25 @@ class wxFontMapperModule : public wxModule
 {
 public:
     wxFontMapperModule() : wxModule() { }
-    virtual bool OnInit() { return true; }
-    virtual void OnExit() { delete (wxFontMapperBase*)wxFontMapperBase::Set(NULL); }
+
+    virtual bool OnInit()
+    {
+        // a dummy wxFontMapperBase object could have been created during the
+        // program startup before wxApp was created, we have to delete it to
+        // allow creating the real font mapper next time it is needed now that
+        // we can create it (when the modules are initialized, wxApp object
+        // already exists)
+        wxFontMapperBase *fm = wxFontMapperBase::Get();
+        if ( fm && fm->IsDummy() )
+            wxFontMapperBase::Reset();
+
+        return true;
+    }
+
+    virtual void OnExit()
+    {
+        wxFontMapperBase::Reset();
+    }
 
     DECLARE_DYNAMIC_CLASS(wxFontMapperModule)
 };
@@ -259,9 +284,6 @@ wxFontMapperBase::~wxFontMapperBase()
 #endif // wxUSE_CONFIG
 }
 
-bool wxFontMapperBase::IsWxFontMapper()
-{   return false; }
-
 /* static */
 wxFontMapperBase *wxFontMapperBase::Get()
 {
@@ -295,6 +317,19 @@ wxFontMapper *wxFontMapperBase::Set(wxFontMapper *mapper)
     return old;
 }
 
+/* static */
+void wxFontMapperBase::Reset()
+{
+    if ( sm_instance )
+    {
+        // we need a cast as wxFontMapper is not fully declared here and so the
+        // compiler can't know that it derives from wxFontMapperBase (but
+        // run-time behaviour will be correct because the dtor is virtual)
+        delete (wxFontMapperBase *)sm_instance;
+        sm_instance = NULL;
+    }
+}
+
 #if wxUSE_CONFIG && wxUSE_FILECONFIG
 
 // ----------------------------------------------------------------------------