X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f66ecdc4fbfa14f18f95331ba859a85baee36ae6..3678169caab0f713415414dce013a638305f3cce:/src/osx/core/cfstring.cpp?ds=inline diff --git a/src/osx/core/cfstring.cpp b/src/osx/core/cfstring.cpp index b603e5b48d..3aca67c90d 100644 --- a/src/osx/core/cfstring.cpp +++ b/src/osx/core/cfstring.cpp @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: src/osx/corefoundation/cfstring.cpp +// Name: src/osx/core/cfstring.cpp // Purpose: wxCFStringHolder and other string functions // Author: Stefan Csomor // Modified by: @@ -186,8 +186,8 @@ wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding) #if 0 case wxFONTENCODING_UTF7 : enc = CreateTextEncoding(kCFStringEncodingUnicodeDefault,0,kUnicodeUTF7Format) ; -#endif break ; +#endif case wxFONTENCODING_UTF8 : enc = kCFStringEncodingUTF8; break ; @@ -632,16 +632,27 @@ wxCFStringRef::wxCFStringRef( const wxString &st , wxFontEncoding WXUNUSED_IN_UN } } +wxString wxCFStringRef::AsStringWithNormalizationFormC( CFStringRef ref, wxFontEncoding encoding ) +{ + if ( !ref ) + return wxEmptyString ; + + CFMutableStringRef cfMutableString = CFStringCreateMutableCopy(NULL, 0, ref); + CFStringNormalize(cfMutableString,kCFStringNormalizationFormC); + wxString str = wxCFStringRef::AsString(ref,encoding); + CFRelease(cfMutableString); + return str; +} + wxString wxCFStringRef::AsString( CFStringRef ref, wxFontEncoding WXUNUSED_IN_UNICODE(encoding) ) { if ( !ref ) return wxEmptyString ; Size cflen = CFStringGetLength( ref ) ; - char* buf = NULL ; - CFStringEncoding cfencoding = 0; - wxString result; + CFStringEncoding cfencoding; + wxString result; #if wxUSE_UNICODE #if wxUSE_UNICODE_WCHAR cfencoding = kCFStringEncodingUTF32Native; @@ -657,10 +668,10 @@ wxString wxCFStringRef::AsString( CFStringRef ref, wxFontEncoding WXUNUSED_IN_UN CFIndex cStrLen ; CFStringGetBytes( ref , CFRangeMake(0, cflen) , cfencoding , '?' , false , NULL , 0 , &cStrLen ) ; - buf = new char[ cStrLen ] ; + char* buf = new char[cStrLen]; CFStringGetBytes( ref , CFRangeMake(0, cflen) , cfencoding, '?' , false , (unsigned char*) buf , cStrLen , &cStrLen) ; - + #if wxUSE_UNICODE #if wxUSE_UNICODE_WCHAR result = wxString( (const wchar_t*) buf , cStrLen/4); @@ -672,7 +683,7 @@ wxString wxCFStringRef::AsString( CFStringRef ref, wxFontEncoding WXUNUSED_IN_UN #else result = wxString(buf, cStrLen) ; #endif - + delete[] buf ; wxMacConvertNewlines10To13( &result); return result ; @@ -684,11 +695,16 @@ wxString wxCFStringRef::AsString(wxFontEncoding encoding) const } #if wxOSX_USE_COCOA_OR_IPHONE -wxString wxCFStringRef::AsString( NSString* ref, wxFontEncoding encoding ) +wxString wxCFStringRef::AsString( NSString* ref, wxFontEncoding encoding ) { return AsString( (CFStringRef) ref, encoding ); } -#endif + +wxString wxCFStringRef::AsStringWithNormalizationFormC( NSString* ref, wxFontEncoding encoding ) +{ + return AsStringWithNormalizationFormC( (CFStringRef) ref, encoding ); +} +#endif // wxOSX_USE_COCOA_OR_IPHONE // @@ -697,10 +713,6 @@ wxString wxCFStringRef::AsString( NSString* ref, wxFontEncoding encoding ) 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 ) ; @@ -713,17 +725,6 @@ wxMacUniCharBuffer::wxMacUniCharBuffer( const wxString &str ) 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() @@ -731,11 +732,11 @@ wxMacUniCharBuffer::~wxMacUniCharBuffer() free( m_ubuf ) ; } -UniCharPtr wxMacUniCharBuffer::GetBuffer() +UniCharPtr wxMacUniCharBuffer::GetBuffer() { return m_ubuf ; } - + UniCharCount wxMacUniCharBuffer::GetChars() { return m_chars ;