renaming
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54119 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
732
src/osx/core/cfstring.cpp
Normal file
732
src/osx/core/cfstring.cpp
Normal file
@@ -0,0 +1,732 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: src/mac/corefoundation/cfstring.cpp
|
||||
// Purpose: wxCFStringHolder and other string functions
|
||||
// Author: Stefan Csomor
|
||||
// Modified by:
|
||||
// Created: 2004-10-29 (from code in src/mac/carbon/utils.cpp)
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Stefan Csomor
|
||||
// Licence: wxWindows licence
|
||||
// Usage: Darwin (base library)
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "wx/wxprec.h"
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/string.h"
|
||||
#include "wx/intl.h"
|
||||
#if wxUSE_GUI
|
||||
#include "wx/font.h"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "wx/mac/corefoundation/cfstring.h"
|
||||
|
||||
#include <CoreFoundation/CoreFoundation.h>
|
||||
|
||||
void wxMacConvertNewlines13To10( char * data )
|
||||
{
|
||||
char * buf = data ;
|
||||
while( (buf=strchr(buf,0x0d)) != NULL )
|
||||
{
|
||||
*buf = 0x0a ;
|
||||
buf++ ;
|
||||
}
|
||||
}
|
||||
|
||||
void wxMacConvertNewlines10To13( char * data )
|
||||
{
|
||||
char * buf = data ;
|
||||
while( (buf=strchr(buf,0x0a)) != NULL )
|
||||
{
|
||||
*buf = 0x0d ;
|
||||
buf++ ;
|
||||
}
|
||||
}
|
||||
|
||||
const wxString sCR((wxChar)13);
|
||||
const wxString sLF((wxChar)10);
|
||||
|
||||
void wxMacConvertNewlines13To10( wxString * data )
|
||||
{
|
||||
data->Replace( sCR,sLF);
|
||||
}
|
||||
|
||||
void wxMacConvertNewlines10To13( wxString * data )
|
||||
{
|
||||
data->Replace( sLF,sCR);
|
||||
}
|
||||
|
||||
wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding)
|
||||
{
|
||||
CFStringEncoding enc = 0 ;
|
||||
if ( encoding == wxFONTENCODING_DEFAULT )
|
||||
{
|
||||
#if wxUSE_GUI
|
||||
encoding = wxFont::GetDefaultEncoding() ;
|
||||
#else
|
||||
encoding = wxFONTENCODING_SYSTEM; // to be set below
|
||||
#endif
|
||||
}
|
||||
|
||||
if ( encoding == wxFONTENCODING_SYSTEM )
|
||||
{
|
||||
enc = CFStringGetSystemEncoding();
|
||||
}
|
||||
|
||||
switch( encoding)
|
||||
{
|
||||
case wxFONTENCODING_ISO8859_1 :
|
||||
enc = kCFStringEncodingISOLatin1 ;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_2 :
|
||||
enc = kCFStringEncodingISOLatin2;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_3 :
|
||||
enc = kCFStringEncodingISOLatin3 ;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_4 :
|
||||
enc = kCFStringEncodingISOLatin4;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_5 :
|
||||
enc = kCFStringEncodingISOLatinCyrillic;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_6 :
|
||||
enc = kCFStringEncodingISOLatinArabic;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_7 :
|
||||
enc = kCFStringEncodingISOLatinGreek;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_8 :
|
||||
enc = kCFStringEncodingISOLatinHebrew;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_9 :
|
||||
enc = kCFStringEncodingISOLatin5;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_10 :
|
||||
enc = kCFStringEncodingISOLatin6;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_13 :
|
||||
enc = kCFStringEncodingISOLatin7;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_14 :
|
||||
enc = kCFStringEncodingISOLatin8;
|
||||
break ;
|
||||
case wxFONTENCODING_ISO8859_15 :
|
||||
enc = kCFStringEncodingISOLatin9;
|
||||
break ;
|
||||
|
||||
case wxFONTENCODING_KOI8 :
|
||||
enc = kCFStringEncodingKOI8_R;
|
||||
break ;
|
||||
case wxFONTENCODING_ALTERNATIVE : // MS-DOS CP866
|
||||
enc = kCFStringEncodingDOSRussian;
|
||||
break ;
|
||||
/*
|
||||
case wxFONTENCODING_BULGARIAN :
|
||||
enc = ;
|
||||
break ;
|
||||
*/
|
||||
case wxFONTENCODING_CP437 :
|
||||
enc =kCFStringEncodingDOSLatinUS ;
|
||||
break ;
|
||||
case wxFONTENCODING_CP850 :
|
||||
enc = kCFStringEncodingDOSLatin1;
|
||||
break ;
|
||||
case wxFONTENCODING_CP852 :
|
||||
enc = kCFStringEncodingDOSLatin2;
|
||||
break ;
|
||||
case wxFONTENCODING_CP855 :
|
||||
enc = kCFStringEncodingDOSCyrillic;
|
||||
break ;
|
||||
case wxFONTENCODING_CP866 :
|
||||
enc =kCFStringEncodingDOSRussian ;
|
||||
break ;
|
||||
case wxFONTENCODING_CP874 :
|
||||
enc = kCFStringEncodingDOSThai;
|
||||
break ;
|
||||
case wxFONTENCODING_CP932 :
|
||||
enc = kCFStringEncodingDOSJapanese;
|
||||
break ;
|
||||
case wxFONTENCODING_CP936 :
|
||||
enc = kCFStringEncodingDOSChineseSimplif ;
|
||||
break ;
|
||||
case wxFONTENCODING_CP949 :
|
||||
enc = kCFStringEncodingDOSKorean;
|
||||
break ;
|
||||
case wxFONTENCODING_CP950 :
|
||||
enc = kCFStringEncodingDOSChineseTrad;
|
||||
break ;
|
||||
|
||||
case wxFONTENCODING_CP1250 :
|
||||
enc = kCFStringEncodingWindowsLatin2;
|
||||
break ;
|
||||
case wxFONTENCODING_CP1251 :
|
||||
enc =kCFStringEncodingWindowsCyrillic ;
|
||||
break ;
|
||||
case wxFONTENCODING_CP1252 :
|
||||
enc =kCFStringEncodingWindowsLatin1 ;
|
||||
break ;
|
||||
case wxFONTENCODING_CP1253 :
|
||||
enc = kCFStringEncodingWindowsGreek;
|
||||
break ;
|
||||
case wxFONTENCODING_CP1254 :
|
||||
enc = kCFStringEncodingWindowsLatin5;
|
||||
break ;
|
||||
case wxFONTENCODING_CP1255 :
|
||||
enc =kCFStringEncodingWindowsHebrew ;
|
||||
break ;
|
||||
case wxFONTENCODING_CP1256 :
|
||||
enc =kCFStringEncodingWindowsArabic ;
|
||||
break ;
|
||||
case wxFONTENCODING_CP1257 :
|
||||
enc = kCFStringEncodingWindowsBalticRim;
|
||||
break ;
|
||||
#if 0
|
||||
case wxFONTENCODING_UTF7 :
|
||||
enc = CreateTextEncoding(kCFStringEncodingUnicodeDefault,0,kUnicodeUTF7Format) ;
|
||||
#endif
|
||||
break ;
|
||||
case wxFONTENCODING_UTF8 :
|
||||
enc = kCFStringEncodingUTF8;
|
||||
break ;
|
||||
case wxFONTENCODING_EUC_JP :
|
||||
enc = kCFStringEncodingEUC_JP;
|
||||
break ;
|
||||
case wxFONTENCODING_UTF16BE :
|
||||
enc = kCFStringEncodingUTF16BE;
|
||||
break ;
|
||||
case wxFONTENCODING_UTF16LE :
|
||||
enc = kCFStringEncodingUTF16LE;
|
||||
break ;
|
||||
case wxFONTENCODING_UTF32BE :
|
||||
enc = kCFStringEncodingUTF32BE;
|
||||
break ;
|
||||
case wxFONTENCODING_UTF32LE :
|
||||
enc = kCFStringEncodingUTF32LE;
|
||||
break ;
|
||||
|
||||
case wxFONTENCODING_MACROMAN :
|
||||
enc = kCFStringEncodingMacRoman ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACJAPANESE :
|
||||
enc = kCFStringEncodingMacJapanese ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACCHINESETRAD :
|
||||
enc = kCFStringEncodingMacChineseTrad ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACKOREAN :
|
||||
enc = kCFStringEncodingMacKorean ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACARABIC :
|
||||
enc = kCFStringEncodingMacArabic ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACHEBREW :
|
||||
enc = kCFStringEncodingMacHebrew ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACGREEK :
|
||||
enc = kCFStringEncodingMacGreek ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACCYRILLIC :
|
||||
enc = kCFStringEncodingMacCyrillic ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACDEVANAGARI :
|
||||
enc = kCFStringEncodingMacDevanagari ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACGURMUKHI :
|
||||
enc = kCFStringEncodingMacGurmukhi ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACGUJARATI :
|
||||
enc = kCFStringEncodingMacGujarati ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACORIYA :
|
||||
enc = kCFStringEncodingMacOriya ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACBENGALI :
|
||||
enc = kCFStringEncodingMacBengali ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACTAMIL :
|
||||
enc = kCFStringEncodingMacTamil ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACTELUGU :
|
||||
enc = kCFStringEncodingMacTelugu ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACKANNADA :
|
||||
enc = kCFStringEncodingMacKannada ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACMALAJALAM :
|
||||
enc = kCFStringEncodingMacMalayalam ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACSINHALESE :
|
||||
enc = kCFStringEncodingMacSinhalese ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACBURMESE :
|
||||
enc = kCFStringEncodingMacBurmese ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACKHMER :
|
||||
enc = kCFStringEncodingMacKhmer ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACTHAI :
|
||||
enc = kCFStringEncodingMacThai ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACLAOTIAN :
|
||||
enc = kCFStringEncodingMacLaotian ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACGEORGIAN :
|
||||
enc = kCFStringEncodingMacGeorgian ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACARMENIAN :
|
||||
enc = kCFStringEncodingMacArmenian ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACCHINESESIMP :
|
||||
enc = kCFStringEncodingMacChineseSimp ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACTIBETAN :
|
||||
enc = kCFStringEncodingMacTibetan ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACMONGOLIAN :
|
||||
enc = kCFStringEncodingMacMongolian ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACETHIOPIC :
|
||||
enc = kCFStringEncodingMacEthiopic ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACCENTRALEUR :
|
||||
enc = kCFStringEncodingMacCentralEurRoman ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACVIATNAMESE :
|
||||
enc = kCFStringEncodingMacVietnamese ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACARABICEXT :
|
||||
enc = kCFStringEncodingMacExtArabic ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACSYMBOL :
|
||||
enc = kCFStringEncodingMacSymbol ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACDINGBATS :
|
||||
enc = kCFStringEncodingMacDingbats ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACTURKISH :
|
||||
enc = kCFStringEncodingMacTurkish ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACCROATIAN :
|
||||
enc = kCFStringEncodingMacCroatian ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACICELANDIC :
|
||||
enc = kCFStringEncodingMacIcelandic ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACROMANIAN :
|
||||
enc = kCFStringEncodingMacRomanian ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACCELTIC :
|
||||
enc = kCFStringEncodingMacCeltic ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACGAELIC :
|
||||
enc = kCFStringEncodingMacGaelic ;
|
||||
break ;
|
||||
case wxFONTENCODING_MACKEYBOARD :
|
||||
enc = 41; /* kTextEncodingMacKeyboardGlyphs ; */
|
||||
break ;
|
||||
default : // to make gcc happy
|
||||
break ;
|
||||
};
|
||||
return enc ;
|
||||
}
|
||||
|
||||
wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding)
|
||||
{
|
||||
wxFontEncoding enc = wxFONTENCODING_DEFAULT ;
|
||||
|
||||
switch( encoding)
|
||||
{
|
||||
case kCFStringEncodingISOLatin1 :
|
||||
enc = wxFONTENCODING_ISO8859_1 ;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin2 :
|
||||
enc = wxFONTENCODING_ISO8859_2;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin3 :
|
||||
enc = wxFONTENCODING_ISO8859_3 ;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin4 :
|
||||
enc = wxFONTENCODING_ISO8859_4;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatinCyrillic :
|
||||
enc = wxFONTENCODING_ISO8859_5;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatinArabic :
|
||||
enc = wxFONTENCODING_ISO8859_6;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatinGreek :
|
||||
enc = wxFONTENCODING_ISO8859_7;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatinHebrew :
|
||||
enc = wxFONTENCODING_ISO8859_8;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin5 :
|
||||
enc = wxFONTENCODING_ISO8859_9;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin6 :
|
||||
enc = wxFONTENCODING_ISO8859_10;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin7 :
|
||||
enc = wxFONTENCODING_ISO8859_13;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin8 :
|
||||
enc = wxFONTENCODING_ISO8859_14;
|
||||
break ;
|
||||
case kCFStringEncodingISOLatin9 :
|
||||
enc =wxFONTENCODING_ISO8859_15 ;
|
||||
break ;
|
||||
|
||||
case kCFStringEncodingKOI8_R :
|
||||
enc = wxFONTENCODING_KOI8;
|
||||
break ;
|
||||
/*
|
||||
case :
|
||||
enc = wxFONTENCODING_BULGARIAN;
|
||||
break ;
|
||||
*/
|
||||
case kCFStringEncodingDOSLatinUS :
|
||||
enc = wxFONTENCODING_CP437;
|
||||
break ;
|
||||
case kCFStringEncodingDOSLatin1 :
|
||||
enc = wxFONTENCODING_CP850;
|
||||
break ;
|
||||
case kCFStringEncodingDOSLatin2 :
|
||||
enc =wxFONTENCODING_CP852 ;
|
||||
break ;
|
||||
case kCFStringEncodingDOSCyrillic :
|
||||
enc = wxFONTENCODING_CP855;
|
||||
break ;
|
||||
case kCFStringEncodingDOSRussian :
|
||||
enc = wxFONTENCODING_CP866;
|
||||
break ;
|
||||
case kCFStringEncodingDOSThai :
|
||||
enc =wxFONTENCODING_CP874 ;
|
||||
break ;
|
||||
case kCFStringEncodingDOSJapanese :
|
||||
enc = wxFONTENCODING_CP932;
|
||||
break ;
|
||||
case kCFStringEncodingDOSChineseSimplif :
|
||||
enc = wxFONTENCODING_CP936;
|
||||
break ;
|
||||
case kCFStringEncodingDOSKorean :
|
||||
enc = wxFONTENCODING_CP949;
|
||||
break ;
|
||||
case kCFStringEncodingDOSChineseTrad :
|
||||
enc = wxFONTENCODING_CP950;
|
||||
break ;
|
||||
|
||||
case kCFStringEncodingWindowsLatin2 :
|
||||
enc = wxFONTENCODING_CP1250;
|
||||
break ;
|
||||
case kCFStringEncodingWindowsCyrillic :
|
||||
enc = wxFONTENCODING_CP1251;
|
||||
break ;
|
||||
case kCFStringEncodingWindowsLatin1 :
|
||||
enc = wxFONTENCODING_CP1252;
|
||||
break ;
|
||||
case kCFStringEncodingWindowsGreek :
|
||||
enc = wxFONTENCODING_CP1253;
|
||||
break ;
|
||||
case kCFStringEncodingWindowsLatin5 :
|
||||
enc = wxFONTENCODING_CP1254;
|
||||
break ;
|
||||
case kCFStringEncodingWindowsHebrew :
|
||||
enc = wxFONTENCODING_CP1255;
|
||||
break ;
|
||||
case kCFStringEncodingWindowsArabic :
|
||||
enc = wxFONTENCODING_CP1256;
|
||||
break ;
|
||||
case kCFStringEncodingWindowsBalticRim :
|
||||
enc =wxFONTENCODING_CP1257 ;
|
||||
break ;
|
||||
case kCFStringEncodingEUC_JP :
|
||||
enc = wxFONTENCODING_EUC_JP;
|
||||
break ;
|
||||
|
||||
case kCFStringEncodingUTF8 :
|
||||
enc = wxFONTENCODING_UTF8;
|
||||
break ;
|
||||
case kCFStringEncodingUTF16BE :
|
||||
enc = wxFONTENCODING_UTF16BE;
|
||||
break ;
|
||||
case kCFStringEncodingUTF16LE :
|
||||
enc = wxFONTENCODING_UTF16LE;
|
||||
break ;
|
||||
case kCFStringEncodingUTF32BE :
|
||||
enc = wxFONTENCODING_UTF32BE;
|
||||
break ;
|
||||
case kCFStringEncodingUTF32LE :
|
||||
enc = wxFONTENCODING_UTF32LE;
|
||||
break ;
|
||||
|
||||
#if 0
|
||||
case wxFONTENCODING_UTF7 :
|
||||
enc = CreateTextEncoding(kCFStringEncodingUnicodeDefault,0,kUnicodeUTF7Format) ;
|
||||
break ;
|
||||
#endif
|
||||
case kCFStringEncodingMacRoman :
|
||||
enc = wxFONTENCODING_MACROMAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacJapanese :
|
||||
enc = wxFONTENCODING_MACJAPANESE ;
|
||||
break ;
|
||||
case kCFStringEncodingMacChineseTrad :
|
||||
enc = wxFONTENCODING_MACCHINESETRAD ;
|
||||
break ;
|
||||
case kCFStringEncodingMacKorean :
|
||||
enc = wxFONTENCODING_MACKOREAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacArabic :
|
||||
enc =wxFONTENCODING_MACARABIC ;
|
||||
break ;
|
||||
case kCFStringEncodingMacHebrew :
|
||||
enc = wxFONTENCODING_MACHEBREW ;
|
||||
break ;
|
||||
case kCFStringEncodingMacGreek :
|
||||
enc = wxFONTENCODING_MACGREEK ;
|
||||
break ;
|
||||
case kCFStringEncodingMacCyrillic :
|
||||
enc = wxFONTENCODING_MACCYRILLIC ;
|
||||
break ;
|
||||
case kCFStringEncodingMacDevanagari :
|
||||
enc = wxFONTENCODING_MACDEVANAGARI ;
|
||||
break ;
|
||||
case kCFStringEncodingMacGurmukhi :
|
||||
enc = wxFONTENCODING_MACGURMUKHI ;
|
||||
break ;
|
||||
case kCFStringEncodingMacGujarati :
|
||||
enc = wxFONTENCODING_MACGUJARATI ;
|
||||
break ;
|
||||
case kCFStringEncodingMacOriya :
|
||||
enc =wxFONTENCODING_MACORIYA ;
|
||||
break ;
|
||||
case kCFStringEncodingMacBengali :
|
||||
enc =wxFONTENCODING_MACBENGALI ;
|
||||
break ;
|
||||
case kCFStringEncodingMacTamil :
|
||||
enc = wxFONTENCODING_MACTAMIL ;
|
||||
break ;
|
||||
case kCFStringEncodingMacTelugu :
|
||||
enc = wxFONTENCODING_MACTELUGU ;
|
||||
break ;
|
||||
case kCFStringEncodingMacKannada :
|
||||
enc = wxFONTENCODING_MACKANNADA ;
|
||||
break ;
|
||||
case kCFStringEncodingMacMalayalam :
|
||||
enc = wxFONTENCODING_MACMALAJALAM ;
|
||||
break ;
|
||||
case kCFStringEncodingMacSinhalese :
|
||||
enc = wxFONTENCODING_MACSINHALESE ;
|
||||
break ;
|
||||
case kCFStringEncodingMacBurmese :
|
||||
enc = wxFONTENCODING_MACBURMESE ;
|
||||
break ;
|
||||
case kCFStringEncodingMacKhmer :
|
||||
enc = wxFONTENCODING_MACKHMER ;
|
||||
break ;
|
||||
case kCFStringEncodingMacThai :
|
||||
enc = wxFONTENCODING_MACTHAI ;
|
||||
break ;
|
||||
case kCFStringEncodingMacLaotian :
|
||||
enc = wxFONTENCODING_MACLAOTIAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacGeorgian :
|
||||
enc = wxFONTENCODING_MACGEORGIAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacArmenian :
|
||||
enc = wxFONTENCODING_MACARMENIAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacChineseSimp :
|
||||
enc = wxFONTENCODING_MACCHINESESIMP ;
|
||||
break ;
|
||||
case kCFStringEncodingMacTibetan :
|
||||
enc = wxFONTENCODING_MACTIBETAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacMongolian :
|
||||
enc = wxFONTENCODING_MACMONGOLIAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacEthiopic :
|
||||
enc = wxFONTENCODING_MACETHIOPIC ;
|
||||
break ;
|
||||
case kCFStringEncodingMacCentralEurRoman:
|
||||
enc = wxFONTENCODING_MACCENTRALEUR ;
|
||||
break ;
|
||||
case kCFStringEncodingMacVietnamese:
|
||||
enc = wxFONTENCODING_MACVIATNAMESE ;
|
||||
break ;
|
||||
case kCFStringEncodingMacExtArabic :
|
||||
enc = wxFONTENCODING_MACARABICEXT ;
|
||||
break ;
|
||||
case kCFStringEncodingMacSymbol :
|
||||
enc = wxFONTENCODING_MACSYMBOL ;
|
||||
break ;
|
||||
case kCFStringEncodingMacDingbats :
|
||||
enc = wxFONTENCODING_MACDINGBATS ;
|
||||
break ;
|
||||
case kCFStringEncodingMacTurkish :
|
||||
enc = wxFONTENCODING_MACTURKISH ;
|
||||
break ;
|
||||
case kCFStringEncodingMacCroatian :
|
||||
enc = wxFONTENCODING_MACCROATIAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacIcelandic :
|
||||
enc = wxFONTENCODING_MACICELANDIC ;
|
||||
break ;
|
||||
case kCFStringEncodingMacRomanian :
|
||||
enc = wxFONTENCODING_MACROMANIAN ;
|
||||
break ;
|
||||
case kCFStringEncodingMacCeltic :
|
||||
enc = wxFONTENCODING_MACCELTIC ;
|
||||
break ;
|
||||
case kCFStringEncodingMacGaelic :
|
||||
enc = wxFONTENCODING_MACGAELIC ;
|
||||
break ;
|
||||
case 41 /* kTextEncodingMacKeyboardGlyphs */ :
|
||||
enc = wxFONTENCODING_MACKEYBOARD ;
|
||||
break ;
|
||||
} ;
|
||||
return enc ;
|
||||
}
|
||||
|
||||
|
||||
//
|
||||
// CFStringRefs
|
||||
//
|
||||
|
||||
// converts this string into a core foundation string with optional pc 2 mac encoding
|
||||
|
||||
wxCFStringRef::wxCFStringRef( const wxString &st , wxFontEncoding WXUNUSED_IN_UNICODE(encoding) )
|
||||
{
|
||||
if (st.IsEmpty())
|
||||
{
|
||||
reset( wxCFRetain( CFSTR("") ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
wxString str = st ;
|
||||
wxMacConvertNewlines13To10( &str ) ;
|
||||
#if wxUSE_UNICODE
|
||||
#if SIZEOF_WCHAR_T == 2
|
||||
reset( CFStringCreateWithCharacters( kCFAllocatorDefault,
|
||||
(UniChar*)str.wc_str() , str.Len() ) );
|
||||
#else
|
||||
wxMBConvUTF16 converter ;
|
||||
size_t unicharbytes = converter.FromWChar( NULL , 0 , str.wc_str() , str.Length() ) ;
|
||||
wxASSERT( unicharbytes != wxCONV_FAILED );
|
||||
if ( unicharbytes == wxCONV_FAILED )
|
||||
{
|
||||
// create an empty string
|
||||
reset( wxCFRetain( CFSTR("") ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
// unicharbytes: number of bytes needed for UTF-16 encoded string (without terminating null)
|
||||
// unichars: number of UTF-16 characters (without terminating null)
|
||||
size_t unichars = unicharbytes / sizeof(UniChar) ;
|
||||
UniChar *unibuf = new UniChar[ unichars ] ;
|
||||
converter.FromWChar( (char*)unibuf , unicharbytes , str.wc_str() , str.Length() ) ;
|
||||
reset( CFStringCreateWithCharacters( kCFAllocatorDefault , unibuf , unichars ) ) ;
|
||||
delete[] unibuf ;
|
||||
}
|
||||
#endif
|
||||
#else // not wxUSE_UNICODE
|
||||
reset( CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
|
||||
wxMacGetSystemEncFromFontEnc( encoding ) ) );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
|
||||
{
|
||||
if ( !get() )
|
||||
return wxEmptyString ;
|
||||
|
||||
Size cflen = CFStringGetLength( get() ) ;
|
||||
size_t noChars ;
|
||||
wxChar* buf = NULL ;
|
||||
|
||||
#if wxUSE_UNICODE
|
||||
#if SIZEOF_WCHAR_T == 2
|
||||
buf = new wxChar[ cflen + 1 ] ;
|
||||
CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) buf ) ;
|
||||
noChars = cflen ;
|
||||
#else
|
||||
UniChar* unibuf = new UniChar[ cflen + 1 ] ;
|
||||
CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) unibuf ) ;
|
||||
unibuf[cflen] = 0 ;
|
||||
wxMBConvUTF16 converter ;
|
||||
noChars = converter.MB2WC( NULL , (const char*)unibuf , 0 ) ;
|
||||
wxASSERT_MSG( noChars != wxCONV_FAILED, _T("Unable to count the number of characters in this string!") );
|
||||
buf = new wxChar[ noChars + 1 ] ;
|
||||
noChars = converter.MB2WC( buf , (const char*)unibuf , noChars + 1 ) ;
|
||||
wxASSERT_MSG( noChars != wxCONV_FAILED, _T("Conversion of string failed!") );
|
||||
delete[] unibuf ;
|
||||
#endif
|
||||
#else
|
||||
CFIndex cStrLen ;
|
||||
CFStringGetBytes( get() , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
|
||||
'?' , false , NULL , 0 , &cStrLen ) ;
|
||||
buf = new wxChar[ cStrLen + 1 ] ;
|
||||
CFStringGetBytes( get() , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
|
||||
'?' , false , (unsigned char*) buf , cStrLen , &cStrLen) ;
|
||||
noChars = cStrLen ;
|
||||
#endif
|
||||
|
||||
buf[noChars] = 0 ;
|
||||
wxString result(buf) ;
|
||||
delete[] buf ;
|
||||
wxMacConvertNewlines10To13( &result);
|
||||
return result ;
|
||||
}
|
||||
|
||||
//
|
||||
// wxMacUniCharBuffer
|
||||
//
|
||||
|
||||
wxMacUniCharBuffer::wxMacUniCharBuffer( const wxString &str )
|
||||
{
|
||||
m_chars = str.length() ;
|
||||
m_ubuf = NULL ;
|
||||
|
||||
#if SIZEOF_WCHAR_T == 4
|
||||
wxMBConvUTF16 converter ;
|
||||
#if wxUSE_UNICODE
|
||||
size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ;
|
||||
m_ubuf = (UniChar*) malloc( unicharlen + 2 ) ;
|
||||
converter.WC2MB( (char*) m_ubuf , str.wc_str(), unicharlen + 2 ) ;
|
||||
#else
|
||||
const wxWCharBuffer wchar = str.wc_str( wxConvLocal ) ;
|
||||
size_t unicharlen = converter.WC2MB( NULL , wchar.data() , 0 ) ;
|
||||
m_ubuf = (UniChar*) malloc( unicharlen + 2 ) ;
|
||||
converter.WC2MB( (char*) m_ubuf , wchar.data() , unicharlen + 2 ) ;
|
||||
#endif
|
||||
m_chars = unicharlen / 2 ;
|
||||
#else // SIZEOF_WCHAR_T is then 2
|
||||
#if wxUSE_UNICODE
|
||||
m_ubuf = malloc( m_chars * 2 + 2 ) ;
|
||||
memcpy( m_ubuf , (UniChar*) str.wc_str() , m_chars * 2 + 2 ) ;
|
||||
#else
|
||||
wxWCharBuffer wchar = str.wc_str( wxConvLocal ) ;
|
||||
m_chars = wxWcslen( wchar.data() ) ;
|
||||
m_ubuf = malloc( m_chars * 2 + 2 ) ;
|
||||
memcpy( m_ubuf , (UniChar*) wchar.data() , m_chars * 2 + 2 ) ;
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
wxMacUniCharBuffer::~wxMacUniCharBuffer()
|
||||
{
|
||||
free( m_ubuf ) ;
|
||||
}
|
||||
|
||||
UniCharPtr wxMacUniCharBuffer::GetBuffer()
|
||||
{
|
||||
return m_ubuf ;
|
||||
}
|
||||
|
||||
UniCharCount wxMacUniCharBuffer::GetChars()
|
||||
{
|
||||
return m_chars ;
|
||||
}
|
Reference in New Issue
Block a user