📄 cfstring.cpp
字号:
case kTextEncodingISOLatin1 : 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 encodingvoid 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 + -