📄 cfstring.cpp
字号:
enc = wxFONTENCODING_ISO8859_1 ;
break ;
case kTextEncodingISOLatin2 :
enc = wxFONTENCODING_ISO8859_2;
break ;
case kTextEncodingISOLatin3 :
enc = wxFONTENCODING_ISO8859_3 ;
break ;
case kTextEncodingISOLatin4 :
enc = wxFONTENCODING_ISO8859_4;
break ;
case kTextEncodingISOLatinCyrillic :
enc = wxFONTENCODING_ISO8859_5;
break ;
case kTextEncodingISOLatinArabic :
enc = wxFONTENCODING_ISO8859_6;
break ;
case kTextEncodingISOLatinGreek :
enc = wxFONTENCODING_ISO8859_7;
break ;
case kTextEncodingISOLatinHebrew :
enc = wxFONTENCODING_ISO8859_8;
break ;
case kTextEncodingISOLatin5 :
enc = wxFONTENCODING_ISO8859_9;
break ;
case kTextEncodingISOLatin6 :
enc = wxFONTENCODING_ISO8859_10;
break ;
case kTextEncodingISOLatin7 :
enc = wxFONTENCODING_ISO8859_13;
break ;
case kTextEncodingISOLatin8 :
enc = wxFONTENCODING_ISO8859_14;
break ;
case kTextEncodingISOLatin9 :
enc =wxFONTENCODING_ISO8859_15 ;
break ;
case kTextEncodingKOI8_R :
enc = wxFONTENCODING_KOI8;
break ;
/*
case :
enc = wxFONTENCODING_BULGARIAN;
break ;
*/
case kTextEncodingDOSLatinUS :
enc = wxFONTENCODING_CP437;
break ;
case kTextEncodingDOSLatin1 :
enc = wxFONTENCODING_CP850;
break ;
case kTextEncodingDOSLatin2 :
enc =wxFONTENCODING_CP852 ;
break ;
case kTextEncodingDOSCyrillic :
enc = wxFONTENCODING_CP855;
break ;
case kTextEncodingDOSRussian :
enc = wxFONTENCODING_CP866;
break ;
case kTextEncodingDOSThai :
enc =wxFONTENCODING_CP874 ;
break ;
case kTextEncodingDOSJapanese :
enc = wxFONTENCODING_CP932;
break ;
case kTextEncodingDOSChineseSimplif :
enc = wxFONTENCODING_CP936;
break ;
case kTextEncodingDOSKorean :
enc = wxFONTENCODING_CP949;
break ;
case kTextEncodingDOSChineseTrad :
enc = wxFONTENCODING_CP950;
break ;
case kTextEncodingWindowsLatin2 :
enc = wxFONTENCODING_CP1250;
break ;
case kTextEncodingWindowsCyrillic :
enc = wxFONTENCODING_CP1251;
break ;
case kTextEncodingWindowsLatin1 :
enc = wxFONTENCODING_CP1252;
break ;
case kTextEncodingWindowsGreek :
enc = wxFONTENCODING_CP1253;
break ;
case kTextEncodingWindowsLatin5 :
enc = wxFONTENCODING_CP1254;
break ;
case kTextEncodingWindowsHebrew :
enc = wxFONTENCODING_CP1255;
break ;
case kTextEncodingWindowsArabic :
enc = wxFONTENCODING_CP1256;
break ;
case kTextEncodingWindowsBalticRim :
enc =wxFONTENCODING_CP1257 ;
break ;
case kTextEncodingEUC_JP :
enc = wxFONTENCODING_EUC_JP;
break ;
#if 0
case wxFONTENCODING_UTF7 :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicodeUTF7Format) ;
break ;
case wxFONTENCODING_UTF8 :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicodeUTF8Format) ;
break ;
case wxFONTENCODING_UTF16BE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode16BitFormat) ;
break ;
case wxFONTENCODING_UTF16LE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode16BitFormat) ;
break ;
case wxFONTENCODING_UTF32BE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode32BitFormat) ;
break ;
case wxFONTENCODING_UTF32LE :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicode32BitFormat) ;
break ;
#endif
case kTextEncodingMacRoman :
enc = wxFONTENCODING_MACROMAN ;
break ;
case kTextEncodingMacJapanese :
enc = wxFONTENCODING_MACJAPANESE ;
break ;
case kTextEncodingMacChineseTrad :
enc = wxFONTENCODING_MACCHINESETRAD ;
break ;
case kTextEncodingMacKorean :
enc = wxFONTENCODING_MACKOREAN ;
break ;
case kTextEncodingMacArabic :
enc =wxFONTENCODING_MACARABIC ;
break ;
case kTextEncodingMacHebrew :
enc = wxFONTENCODING_MACHEBREW ;
break ;
case kTextEncodingMacGreek :
enc = wxFONTENCODING_MACGREEK ;
break ;
case kTextEncodingMacCyrillic :
enc = wxFONTENCODING_MACCYRILLIC ;
break ;
case kTextEncodingMacDevanagari :
enc = wxFONTENCODING_MACDEVANAGARI ;
break ;
case kTextEncodingMacGurmukhi :
enc = wxFONTENCODING_MACGURMUKHI ;
break ;
case kTextEncodingMacGujarati :
enc = wxFONTENCODING_MACGUJARATI ;
break ;
case kTextEncodingMacOriya :
enc =wxFONTENCODING_MACORIYA ;
break ;
case kTextEncodingMacBengali :
enc =wxFONTENCODING_MACBENGALI ;
break ;
case kTextEncodingMacTamil :
enc = wxFONTENCODING_MACTAMIL ;
break ;
case kTextEncodingMacTelugu :
enc = wxFONTENCODING_MACTELUGU ;
break ;
case kTextEncodingMacKannada :
enc = wxFONTENCODING_MACKANNADA ;
break ;
case kTextEncodingMacMalayalam :
enc = wxFONTENCODING_MACMALAJALAM ;
break ;
case kTextEncodingMacSinhalese :
enc = wxFONTENCODING_MACSINHALESE ;
break ;
case kTextEncodingMacBurmese :
enc = wxFONTENCODING_MACBURMESE ;
break ;
case kTextEncodingMacKhmer :
enc = wxFONTENCODING_MACKHMER ;
break ;
case kTextEncodingMacThai :
enc = wxFONTENCODING_MACTHAI ;
break ;
case kTextEncodingMacLaotian :
enc = wxFONTENCODING_MACLAOTIAN ;
break ;
case kTextEncodingMacGeorgian :
enc = wxFONTENCODING_MACGEORGIAN ;
break ;
case kTextEncodingMacArmenian :
enc = wxFONTENCODING_MACARMENIAN ;
break ;
case kTextEncodingMacChineseSimp :
enc = wxFONTENCODING_MACCHINESESIMP ;
break ;
case kTextEncodingMacTibetan :
enc = wxFONTENCODING_MACTIBETAN ;
break ;
case kTextEncodingMacMongolian :
enc = wxFONTENCODING_MACMONGOLIAN ;
break ;
case kTextEncodingMacEthiopic :
enc = wxFONTENCODING_MACETHIOPIC ;
break ;
case kTextEncodingMacCentralEurRoman:
enc = wxFONTENCODING_MACCENTRALEUR ;
break ;
case kTextEncodingMacVietnamese:
enc = wxFONTENCODING_MACVIATNAMESE ;
break ;
case kTextEncodingMacExtArabic :
enc = wxFONTENCODING_MACARABICEXT ;
break ;
case kTextEncodingMacSymbol :
enc = wxFONTENCODING_MACSYMBOL ;
break ;
case kTextEncodingMacDingbats :
enc = wxFONTENCODING_MACDINGBATS ;
break ;
case kTextEncodingMacTurkish :
enc = wxFONTENCODING_MACTURKISH ;
break ;
case kTextEncodingMacCroatian :
enc = wxFONTENCODING_MACCROATIAN ;
break ;
case kTextEncodingMacIcelandic :
enc = wxFONTENCODING_MACICELANDIC ;
break ;
case kTextEncodingMacRomanian :
enc = wxFONTENCODING_MACROMANIAN ;
break ;
case kTextEncodingMacCeltic :
enc = wxFONTENCODING_MACCELTIC ;
break ;
case kTextEncodingMacGaelic :
enc = wxFONTENCODING_MACGAELIC ;
break ;
case kTextEncodingMacKeyboardGlyphs :
enc = wxFONTENCODING_MACKEYBOARD ;
break ;
} ;
return enc ;
}
//
// CFStringRefs (Carbon only)
//
// converts this string into a carbon foundation string with optional pc 2 mac encoding
void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding encoding )
{
Release() ;
if (st.IsEmpty())
{
m_cfs = CFSTR("") ;
CFRetain( m_cfs ) ;
}
else
{
wxString str = st ;
wxMacConvertNewlines13To10( &str ) ;
#if wxUSE_UNICODE
#if SIZEOF_WCHAR_T == 2
m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault,
(UniChar*)str.wc_str() , str.Len() );
#else
wxMBConvUTF16 converter ;
size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ;
UniChar *unibuf = new UniChar[ unicharlen / sizeof(UniChar) + 1 ] ;
converter.WC2MB( (char*)unibuf , str.wc_str() , unicharlen ) ;
m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault ,
unibuf , unicharlen / sizeof(UniChar) ) ;
delete[] unibuf ;
#endif
#else // not wxUSE_UNICODE
m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
wxMacGetSystemEncFromFontEnc( encoding ) ) ;
#endif
}
m_release = true ;
}
wxString wxMacCFStringHolder::AsString(wxFontEncoding encoding)
{
if ( m_cfs == NULL )
return wxEmptyString ;
Size cflen = CFStringGetLength( m_cfs ) ;
size_t noChars ;
wxChar* buf = NULL ;
#if wxUSE_UNICODE
#if SIZEOF_WCHAR_T == 2
buf = new wxChar[ cflen + 1 ] ;
CFStringGetCharacters( m_cfs , CFRangeMake( 0 , cflen ) , (UniChar*) buf ) ;
noChars = cflen ;
#else
UniChar* unibuf = new UniChar[ cflen + 1 ] ;
CFStringGetCharacters( m_cfs , 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( m_cfs , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
'?' , false , NULL , 0 , &cStrLen ) ;
buf = new wxChar[ cStrLen + 1 ] ;
CFStringGetBytes( m_cfs , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
'?' , false , (unsigned char*) buf , cStrLen , &cStrLen) ;
noChars = cStrLen ;
#endif
buf[noChars] = 0 ;
wxMacConvertNewlines10To13( buf ) ;
wxString result(buf) ;
delete[] buf ;
return result ;
}
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 ) ;
}
UniCharArrayPtr wxMacUniCharBuffer::GetBuffer()
{
return m_ubuf ;
}
UniCharCount wxMacUniCharBuffer::GetChars()
{
return m_chars ;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -