#include <CoreFoundation/CoreFoundation.h>
+
void wxMacConvertNewlines13To10( char * data )
{
char * buf = data ;
#if 0
case wxFONTENCODING_UTF7 :
enc = CreateTextEncoding(kCFStringEncodingUnicodeDefault,0,kUnicodeUTF7Format) ;
-#endif
break ;
+#endif
case wxFONTENCODING_UTF8 :
enc = kCFStringEncodingUTF8;
break ;
#if wxUSE_UNICODE
#if wxUSE_UNICODE_WCHAR
// native = wchar_t 4 bytes for us
- reset( CFStringCreateWithBytes( kCFAllocatorDefault,
- (const UInt8*)str.wc_str() , str.length()*4, kCFStringEncodingUTF32, false /* no BOM */ ) );
+ const wchar_t * const data = str.wc_str();
+ const size_t size = str.length()*sizeof(wchar_t);
+ CFStringBuiltInEncodings cfencoding = kCFStringEncodingUTF32Native;
#elif wxUSE_UNICODE_UTF8
// native = utf8
- reset( CFStringCreateWithBytes( kCFAllocatorDefault,
- (const UInt8*) str.utf8_str() , str.utf8_length() , kCFStringEncodingUTF8, false /* no BOM */ ) );
+ const char * const data = str.utf8_str();
+ const size_t size = str.utf8_length();
+ CFStringBuiltInEncodings cfencoding = kCFStringEncodingUTF8;
#else
- #error "unsupported unicode representation"
+ #error "unsupported Unicode representation"
#endif
+
+ reset( CFStringCreateWithBytes( kCFAllocatorDefault,
+ (const UInt8*)data, size, cfencoding, false /* no BOM */ ) );
#else // not wxUSE_UNICODE
reset( CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
wxMacGetSystemEncFromFontEnc( encoding ) ) );
}
}
-wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
+wxString wxCFStringRef::AsString( CFStringRef ref, wxFontEncoding WXUNUSED_IN_UNICODE(encoding) )
{
- if ( !get() )
+ if ( !ref )
return wxEmptyString ;
- Size cflen = CFStringGetLength( get() ) ;
- char* buf = NULL ;
+ Size cflen = CFStringGetLength( ref ) ;
- CFStringEncoding cfencoding = 0;
- wxString result;
+ CFStringEncoding cfencoding;
+ wxString result;
#if wxUSE_UNICODE
#if wxUSE_UNICODE_WCHAR
- cfencoding = kCFStringEncodingUTF32;
+ cfencoding = kCFStringEncodingUTF32Native;
#elif wxUSE_UNICODE_UTF8
cfencoding = kCFStringEncodingUTF8;
#else
#endif
CFIndex cStrLen ;
- CFStringGetBytes( get() , CFRangeMake(0, cflen) , cfencoding ,
+ CFStringGetBytes( ref , CFRangeMake(0, cflen) , cfencoding ,
'?' , false , NULL , 0 , &cStrLen ) ;
- buf = new char[ cStrLen ] ;
- CFStringGetBytes( get() , CFRangeMake(0, cflen) , cfencoding,
+ 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);
#error "unsupported unicode representation"
#endif
#else
- wxString result(buf, cStrLen) ;
+ result = wxString(buf, cStrLen) ;
#endif
-
+
delete[] buf ;
wxMacConvertNewlines10To13( &result);
return result ;
}
+wxString wxCFStringRef::AsString(wxFontEncoding encoding) const
+{
+ return AsString( get(), encoding );
+}
+
+#if wxOSX_USE_COCOA_OR_IPHONE
+wxString wxCFStringRef::AsString( NSString* ref, wxFontEncoding encoding )
+{
+ return AsString( (CFStringRef) ref, encoding );
+}
+#endif
+
+
//
// wxMacUniCharBuffer
//
free( m_ubuf ) ;
}
-UniCharPtr wxMacUniCharBuffer::GetBuffer()
+UniCharPtr wxMacUniCharBuffer::GetBuffer()
{
return m_ubuf ;
}
-
+
UniCharCount wxMacUniCharBuffer::GetChars()
{
return m_chars ;