📄 cfstring.cpp
字号:
/////////////////////////////////////////////////////////////////////////////
// Name: src/mac/corefoundation/cfstring.cpp
// Purpose: wxCFStringHolder and other string functions
// Author: Stefan Csomor
// Modified by:
// Created: 2004-10-29 (from code in src/mac/carbon/utils.cpp)
// RCS-ID: $Id: cfstring.cpp,v 1.8 2006/06/29 17:23:37 SC Exp $
// Copyright: (c) Stefan Csomor
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/wxprec.h"
#ifndef WX_PRECOMP
#include "wx/string.h"
#include "wx/intl.h"
#if wxUSE_GUI
#include "wx/font.h"
#endif
#endif
#include "wx/mac/corefoundation/cfstring.h"
#ifdef __DARWIN__
#include <CoreServices/CoreServices.h>
#else
#include <TextCommon.h>
#endif
void wxMacConvertNewlines13To10( char * data )
{
char * buf = data ;
while( (buf=strchr(buf,0x0d)) != NULL )
{
*buf = 0x0a ;
buf++ ;
}
}
void wxMacConvertNewlines10To13( char * data )
{
char * buf = data ;
while( (buf=strchr(buf,0x0a)) != NULL )
{
*buf = 0x0d ;
buf++ ;
}
}
void wxMacConvertNewlines13To10( wxString * data )
{
size_t len = data->Length() ;
if ( len == 0 || wxStrchr(data->c_str(),0x0d)==NULL)
return ;
wxString temp(*data) ;
wxStringBuffer buf(*data,len ) ;
memcpy( buf , temp.c_str() , (len+1)*sizeof(wxChar) ) ;
wxMacConvertNewlines13To10( buf ) ;
}
void wxMacConvertNewlines10To13( wxString * data )
{
size_t len = data->Length() ;
if ( data->Length() == 0 || wxStrchr(data->c_str(),0x0a)==NULL)
return ;
wxString temp(*data) ;
wxStringBuffer buf(*data,len ) ;
memcpy( buf , temp.c_str() , (len+1)*sizeof(wxChar) ) ;
wxMacConvertNewlines10To13( buf ) ;
}
#if wxUSE_UNICODE
void wxMacConvertNewlines13To10( wxChar * data )
{
wxChar * buf = data ;
while( (buf=wxStrchr(buf,0x0d)) != NULL )
{
*buf = 0x0a ;
buf++ ;
}
}
void wxMacConvertNewlines10To13( wxChar * data )
{
wxChar * buf = data ;
while( (buf=wxStrchr(buf,0x0a)) != NULL )
{
*buf = 0x0d ;
buf++ ;
}
}
#endif
wxUint32 wxMacGetSystemEncFromFontEnc(wxFontEncoding encoding)
{
TextEncodingBase enc = 0 ;
if ( encoding == wxFONTENCODING_DEFAULT )
{
#if wxUSE_GUI
encoding = wxFont::GetDefaultEncoding() ;
#else
encoding = wxLocale::GetSystemEncoding() ;
#endif
}
if ( encoding == wxFONTENCODING_SYSTEM )
{
enc = CFStringGetSystemEncoding();
}
switch( encoding)
{
case wxFONTENCODING_ISO8859_1 :
enc = kTextEncodingISOLatin1 ;
break ;
case wxFONTENCODING_ISO8859_2 :
enc = kTextEncodingISOLatin2;
break ;
case wxFONTENCODING_ISO8859_3 :
enc = kTextEncodingISOLatin3 ;
break ;
case wxFONTENCODING_ISO8859_4 :
enc = kTextEncodingISOLatin4;
break ;
case wxFONTENCODING_ISO8859_5 :
enc = kTextEncodingISOLatinCyrillic;
break ;
case wxFONTENCODING_ISO8859_6 :
enc = kTextEncodingISOLatinArabic;
break ;
case wxFONTENCODING_ISO8859_7 :
enc = kTextEncodingISOLatinGreek;
break ;
case wxFONTENCODING_ISO8859_8 :
enc = kTextEncodingISOLatinHebrew;
break ;
case wxFONTENCODING_ISO8859_9 :
enc = kTextEncodingISOLatin5;
break ;
case wxFONTENCODING_ISO8859_10 :
enc = kTextEncodingISOLatin6;
break ;
case wxFONTENCODING_ISO8859_13 :
enc = kTextEncodingISOLatin7;
break ;
case wxFONTENCODING_ISO8859_14 :
enc = kTextEncodingISOLatin8;
break ;
case wxFONTENCODING_ISO8859_15 :
enc = kTextEncodingISOLatin9;
break ;
case wxFONTENCODING_KOI8 :
enc = kTextEncodingKOI8_R;
break ;
case wxFONTENCODING_ALTERNATIVE : // MS-DOS CP866
enc = kTextEncodingDOSRussian;
break ;
/*
case wxFONTENCODING_BULGARIAN :
enc = ;
break ;
*/
case wxFONTENCODING_CP437 :
enc =kTextEncodingDOSLatinUS ;
break ;
case wxFONTENCODING_CP850 :
enc = kTextEncodingDOSLatin1;
break ;
case wxFONTENCODING_CP852 :
enc = kTextEncodingDOSLatin2;
break ;
case wxFONTENCODING_CP855 :
enc = kTextEncodingDOSCyrillic;
break ;
case wxFONTENCODING_CP866 :
enc =kTextEncodingDOSRussian ;
break ;
case wxFONTENCODING_CP874 :
enc = kTextEncodingDOSThai;
break ;
case wxFONTENCODING_CP932 :
enc = kTextEncodingDOSJapanese;
break ;
case wxFONTENCODING_CP936 :
enc = kTextEncodingDOSChineseSimplif ;
break ;
case wxFONTENCODING_CP949 :
enc = kTextEncodingDOSKorean;
break ;
case wxFONTENCODING_CP950 :
enc = kTextEncodingDOSChineseTrad;
break ;
case wxFONTENCODING_CP1250 :
enc = kTextEncodingWindowsLatin2;
break ;
case wxFONTENCODING_CP1251 :
enc =kTextEncodingWindowsCyrillic ;
break ;
case wxFONTENCODING_CP1252 :
enc =kTextEncodingWindowsLatin1 ;
break ;
case wxFONTENCODING_CP1253 :
enc = kTextEncodingWindowsGreek;
break ;
case wxFONTENCODING_CP1254 :
enc = kTextEncodingWindowsLatin5;
break ;
case wxFONTENCODING_CP1255 :
enc =kTextEncodingWindowsHebrew ;
break ;
case wxFONTENCODING_CP1256 :
enc =kTextEncodingWindowsArabic ;
break ;
case wxFONTENCODING_CP1257 :
enc = kTextEncodingWindowsBalticRim;
break ;
case wxFONTENCODING_UTF7 :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicodeUTF7Format) ;
break ;
case wxFONTENCODING_UTF8 :
enc = CreateTextEncoding(kTextEncodingUnicodeDefault,0,kUnicodeUTF8Format) ;
break ;
case wxFONTENCODING_EUC_JP :
enc = kTextEncodingEUC_JP;
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 ;
case wxFONTENCODING_MACROMAN :
enc = kTextEncodingMacRoman ;
break ;
case wxFONTENCODING_MACJAPANESE :
enc = kTextEncodingMacJapanese ;
break ;
case wxFONTENCODING_MACCHINESETRAD :
enc = kTextEncodingMacChineseTrad ;
break ;
case wxFONTENCODING_MACKOREAN :
enc = kTextEncodingMacKorean ;
break ;
case wxFONTENCODING_MACARABIC :
enc = kTextEncodingMacArabic ;
break ;
case wxFONTENCODING_MACHEBREW :
enc = kTextEncodingMacHebrew ;
break ;
case wxFONTENCODING_MACGREEK :
enc = kTextEncodingMacGreek ;
break ;
case wxFONTENCODING_MACCYRILLIC :
enc = kTextEncodingMacCyrillic ;
break ;
case wxFONTENCODING_MACDEVANAGARI :
enc = kTextEncodingMacDevanagari ;
break ;
case wxFONTENCODING_MACGURMUKHI :
enc = kTextEncodingMacGurmukhi ;
break ;
case wxFONTENCODING_MACGUJARATI :
enc = kTextEncodingMacGujarati ;
break ;
case wxFONTENCODING_MACORIYA :
enc = kTextEncodingMacOriya ;
break ;
case wxFONTENCODING_MACBENGALI :
enc = kTextEncodingMacBengali ;
break ;
case wxFONTENCODING_MACTAMIL :
enc = kTextEncodingMacTamil ;
break ;
case wxFONTENCODING_MACTELUGU :
enc = kTextEncodingMacTelugu ;
break ;
case wxFONTENCODING_MACKANNADA :
enc = kTextEncodingMacKannada ;
break ;
case wxFONTENCODING_MACMALAJALAM :
enc = kTextEncodingMacMalayalam ;
break ;
case wxFONTENCODING_MACSINHALESE :
enc = kTextEncodingMacSinhalese ;
break ;
case wxFONTENCODING_MACBURMESE :
enc = kTextEncodingMacBurmese ;
break ;
case wxFONTENCODING_MACKHMER :
enc = kTextEncodingMacKhmer ;
break ;
case wxFONTENCODING_MACTHAI :
enc = kTextEncodingMacThai ;
break ;
case wxFONTENCODING_MACLAOTIAN :
enc = kTextEncodingMacLaotian ;
break ;
case wxFONTENCODING_MACGEORGIAN :
enc = kTextEncodingMacGeorgian ;
break ;
case wxFONTENCODING_MACARMENIAN :
enc = kTextEncodingMacArmenian ;
break ;
case wxFONTENCODING_MACCHINESESIMP :
enc = kTextEncodingMacChineseSimp ;
break ;
case wxFONTENCODING_MACTIBETAN :
enc = kTextEncodingMacTibetan ;
break ;
case wxFONTENCODING_MACMONGOLIAN :
enc = kTextEncodingMacMongolian ;
break ;
case wxFONTENCODING_MACETHIOPIC :
enc = kTextEncodingMacEthiopic ;
break ;
case wxFONTENCODING_MACCENTRALEUR :
enc = kTextEncodingMacCentralEurRoman ;
break ;
case wxFONTENCODING_MACVIATNAMESE :
enc = kTextEncodingMacVietnamese ;
break ;
case wxFONTENCODING_MACARABICEXT :
enc = kTextEncodingMacExtArabic ;
break ;
case wxFONTENCODING_MACSYMBOL :
enc = kTextEncodingMacSymbol ;
break ;
case wxFONTENCODING_MACDINGBATS :
enc = kTextEncodingMacDingbats ;
break ;
case wxFONTENCODING_MACTURKISH :
enc = kTextEncodingMacTurkish ;
break ;
case wxFONTENCODING_MACCROATIAN :
enc = kTextEncodingMacCroatian ;
break ;
case wxFONTENCODING_MACICELANDIC :
enc = kTextEncodingMacIcelandic ;
break ;
case wxFONTENCODING_MACROMANIAN :
enc = kTextEncodingMacRomanian ;
break ;
case wxFONTENCODING_MACCELTIC :
enc = kTextEncodingMacCeltic ;
break ;
case wxFONTENCODING_MACGAELIC :
enc = kTextEncodingMacGaelic ;
break ;
case wxFONTENCODING_MACKEYBOARD :
enc = kTextEncodingMacKeyboardGlyphs ;
break ;
default : // to make gcc happy
break ;
};
return enc ;
}
wxFontEncoding wxMacGetFontEncFromSystemEnc(wxUint32 encoding)
{
wxFontEncoding enc = wxFONTENCODING_DEFAULT ;
switch( encoding)
{
case kTextEncodingISOLatin1 :
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -