unifying CFTypes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
80539f0490
commit
504f8052fd
@ -22,11 +22,7 @@
|
||||
|
||||
#include "wx/mac/corefoundation/cfstring.h"
|
||||
|
||||
#ifdef __DARWIN__
|
||||
#include <CoreServices/CoreServices.h>
|
||||
#else
|
||||
#include <TextCommon.h>
|
||||
#endif
|
||||
#include <CoreServices/CoreServices.h>
|
||||
|
||||
void wxMacConvertNewlines13To10( char * data )
|
||||
{
|
||||
@ -593,25 +589,16 @@ wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding)
|
||||
|
||||
|
||||
//
|
||||
// CFStringRefs (Carbon only)
|
||||
// CFStringRefs
|
||||
//
|
||||
|
||||
// converts this string into a carbon foundation string with optional pc 2 mac encoding
|
||||
// converts this string into a core foundation string with optional pc 2 mac encoding
|
||||
|
||||
void wxMacCFStringHolder::Assign( CFStringRef ref , bool release )
|
||||
wxCFStringRef::wxCFStringRef( const wxString &st , wxFontEncoding WXUNUSED_IN_UNICODE(encoding) )
|
||||
{
|
||||
Release();
|
||||
m_cfs = ref;
|
||||
m_release = release;
|
||||
}
|
||||
|
||||
void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding WXUNUSED_IN_UNICODE(encoding) )
|
||||
{
|
||||
Release() ;
|
||||
if (st.IsEmpty())
|
||||
{
|
||||
m_cfs = CFSTR("") ;
|
||||
CFRetain( m_cfs ) ;
|
||||
reset( wxCFRetain( CFSTR("") ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -619,8 +606,8 @@ void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding WXUNUSED_I
|
||||
wxMacConvertNewlines13To10( &str ) ;
|
||||
#if wxUSE_UNICODE
|
||||
#if SIZEOF_WCHAR_T == 2
|
||||
m_cfs = CFStringCreateWithCharacters( kCFAllocatorDefault,
|
||||
(UniChar*)str.wc_str() , str.Len() );
|
||||
reset( CFStringCreateWithCharacters( kCFAllocatorDefault,
|
||||
(UniChar*)str.wc_str() , str.Len() ) );
|
||||
#else
|
||||
wxMBConvUTF16 converter ;
|
||||
size_t unicharlen = converter.WC2MB( NULL , str.wc_str() , 0 ) ;
|
||||
@ -631,30 +618,29 @@ void wxMacCFStringHolder::Assign( const wxString &st , wxFontEncoding WXUNUSED_I
|
||||
delete[] unibuf ;
|
||||
#endif
|
||||
#else // not wxUSE_UNICODE
|
||||
m_cfs = CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
|
||||
wxMacGetSystemEncFromFontEnc( encoding ) ) ;
|
||||
reset( CFStringCreateWithCString( kCFAllocatorSystemDefault , str.c_str() ,
|
||||
wxMacGetSystemEncFromFontEnc( encoding ) ) );
|
||||
#endif
|
||||
}
|
||||
m_release = true ;
|
||||
}
|
||||
|
||||
wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
|
||||
wxString wxCFStringRef::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encoding))
|
||||
{
|
||||
if ( m_cfs == NULL )
|
||||
if ( !get() )
|
||||
return wxEmptyString ;
|
||||
|
||||
Size cflen = CFStringGetLength( m_cfs ) ;
|
||||
Size cflen = CFStringGetLength( get() ) ;
|
||||
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 ) ;
|
||||
CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) buf ) ;
|
||||
noChars = cflen ;
|
||||
#else
|
||||
UniChar* unibuf = new UniChar[ cflen + 1 ] ;
|
||||
CFStringGetCharacters( m_cfs , CFRangeMake( 0 , cflen ) , (UniChar*) unibuf ) ;
|
||||
CFStringGetCharacters( get() , CFRangeMake( 0 , cflen ) , (UniChar*) unibuf ) ;
|
||||
unibuf[cflen] = 0 ;
|
||||
wxMBConvUTF16 converter ;
|
||||
noChars = converter.MB2WC( NULL , (const char*)unibuf , 0 ) ;
|
||||
@ -666,10 +652,10 @@ wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encodi
|
||||
#endif
|
||||
#else
|
||||
CFIndex cStrLen ;
|
||||
CFStringGetBytes( m_cfs , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
|
||||
CFStringGetBytes( get() , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
|
||||
'?' , false , NULL , 0 , &cStrLen ) ;
|
||||
buf = new wxChar[ cStrLen + 1 ] ;
|
||||
CFStringGetBytes( m_cfs , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
|
||||
CFStringGetBytes( get() , CFRangeMake(0, cflen) , wxMacGetSystemEncFromFontEnc( encoding ) ,
|
||||
'?' , false , (unsigned char*) buf , cStrLen , &cStrLen) ;
|
||||
noChars = cStrLen ;
|
||||
#endif
|
||||
@ -681,6 +667,9 @@ wxString wxMacCFStringHolder::AsString(wxFontEncoding WXUNUSED_IN_UNICODE(encodi
|
||||
return result ;
|
||||
}
|
||||
|
||||
//
|
||||
// wxMacUniCharBuffer
|
||||
//
|
||||
|
||||
wxMacUniCharBuffer::wxMacUniCharBuffer( const wxString &str )
|
||||
{
|
||||
|
@ -140,8 +140,7 @@ bool wxHIDDevice::Create (int nClass, int nType, int nDev)
|
||||
CFStringRef cfsProduct = (CFStringRef)
|
||||
CFDictionaryGetValue(pDictionary, CFSTR(kIOHIDProductKey));
|
||||
m_szProductName =
|
||||
wxMacCFStringHolder( cfsProduct,
|
||||
false
|
||||
wxCFStringRef( wxCFRetain(cfsProduct)
|
||||
).AsString();
|
||||
|
||||
//Get the Product ID Key
|
||||
|
@ -85,7 +85,7 @@ static wxString BundleRelativeURLToPath(CFURLRef relativeURL)
|
||||
wxCHECK_MSG(absoluteURL, wxEmptyString, wxT("Failed to resolve relative URL to absolute URL"));
|
||||
CFStringRef cfStrPath = CFURLCopyFileSystemPath(absoluteURL,kDefaultPathStyle);
|
||||
CFRelease(absoluteURL);
|
||||
return wxMacCFStringHolder(cfStrPath).AsString(wxLocale::GetSystemEncoding());
|
||||
return wxCFStringRef(cfStrPath).AsString(wxLocale::GetSystemEncoding());
|
||||
}
|
||||
|
||||
wxString wxStandardPathsCF::GetFromFunc(wxCFURLRef (*func)(wxCFBundleRef)) const
|
||||
|
@ -87,7 +87,7 @@ long wxMacExecute(wxChar **argv,
|
||||
CFURLRef cfurlApp =
|
||||
CFURLCreateWithFileSystemPath(
|
||||
kCFAllocatorDefault,
|
||||
wxMacCFStringHolder(path),
|
||||
wxCFStringRef(path),
|
||||
kDefaultPathStyle,
|
||||
true); //false == not a directory
|
||||
|
||||
@ -155,7 +155,7 @@ long wxMacExecute(wxChar **argv,
|
||||
// First, try creating as a directory
|
||||
cfurlCurrentFile = CFURLCreateWithFileSystemPath(
|
||||
kCFAllocatorDefault,
|
||||
wxMacCFStringHolder(*argv),
|
||||
wxCFStringRef(*argv),
|
||||
kDefaultPathStyle,
|
||||
true); //true == directory
|
||||
}
|
||||
@ -165,7 +165,7 @@ long wxMacExecute(wxChar **argv,
|
||||
// as a regular file
|
||||
cfurlCurrentFile = CFURLCreateWithFileSystemPath(
|
||||
kCFAllocatorDefault,
|
||||
wxMacCFStringHolder(*argv),
|
||||
wxCFStringRef(*argv),
|
||||
kDefaultPathStyle,
|
||||
false); //false == regular file
|
||||
}
|
||||
@ -176,7 +176,7 @@ long wxMacExecute(wxChar **argv,
|
||||
// so try creating it through CFURLCreateWithString
|
||||
cfurlCurrentFile = CFURLCreateWithString(
|
||||
kCFAllocatorDefault,
|
||||
wxMacCFStringHolder(*argv),
|
||||
wxCFStringRef(*argv),
|
||||
NULL);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user