diff options
Diffstat (limited to 'vcl/unx/source/gdi/salcvt.cxx')
-rw-r--r-- | vcl/unx/source/gdi/salcvt.cxx | 148 |
1 files changed, 26 insertions, 122 deletions
diff --git a/vcl/unx/source/gdi/salcvt.cxx b/vcl/unx/source/gdi/salcvt.cxx index 517157a6df48..55258eef249e 100644 --- a/vcl/unx/source/gdi/salcvt.cxx +++ b/vcl/unx/source/gdi/salcvt.cxx @@ -2,9 +2,9 @@ * * $RCSfile: salcvt.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: cp $ $Date: 2000-12-19 11:21:45 $ + * last change: $Author: cp $ $Date: 2001-03-19 08:31:46 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -68,6 +68,16 @@ SalConverterCache::SalConverterCache() mpConverter = (ConverterT*)calloc( sizeof(ConverterT), RTL_TEXTENCODING_STD_COUNT ); } +SalConverterCache* +SalConverterCache::GetInstance () +{ + static SalConverterCache* pCvt = NULL; + if (pCvt == NULL) + pCvt = new SalConverterCache; + + return pCvt; +} + SalConverterCache::~SalConverterCache() { for ( int i = 0; i < RTL_TEXTENCODING_STD_COUNT; i++ ) @@ -95,8 +105,7 @@ SalConverterCache::GetU2TConverter( rtl_TextEncoding nEncoding ) rtl_createUnicodeToTextConverter( nEncoding ); // ---> FIXME if ( mpConverter[ nEncoding ].mpU2T == NULL ) - fprintf( stderr, "failed to create Unicode -> %s converter\n", - pGetEncodingName(nEncoding) ); + fprintf( stderr, "failed to create Unicode -> %i converter\n", nEncoding); // <--- } return mpConverter[ nEncoding ].mpU2T; @@ -115,8 +124,7 @@ SalConverterCache::GetT2UConverter( rtl_TextEncoding nEncoding ) rtl_createTextToUnicodeConverter( nEncoding ); // ---> FIXME if ( mpConverter[ nEncoding ].mpT2U == NULL ) - fprintf( stderr, "failed to create %s -> Unicode converter\n", - pGetEncodingName(nEncoding) ); + fprintf( stderr, "failed to create %i -> Unicode converter\n", nEncoding ); // <--- } return mpConverter[ nEncoding ].mpT2U; @@ -314,10 +322,11 @@ SalConverterCache::EncodingHasChar( rtl_TextEncoding nEncoding, // wrapper for rtl_convertUnicodeToText that handles the usual cases for // textconversion in drawtext and gettextwidth routines sal_Size -ConvertStringUTF16( const sal_Unicode *pText, int nTextLen, - sal_Char *pBuffer, sal_Size nBufferSize, - rtl_UnicodeToTextConverter aConverter ) +SalConverterCache::ConvertStringUTF16( const sal_Unicode *pText, int nTextLen, + sal_Char *pBuffer, sal_Size nBufferSize, rtl_TextEncoding nEncoding ) { + rtl_UnicodeToTextConverter aConverter = GetU2TConverter(nEncoding); + const sal_uInt32 nCvtFlags = RTL_UNICODETOTEXT_FLAGS_UNDEFINED_QUESTIONMARK | RTL_UNICODETOTEXT_FLAGS_INVALID_QUESTIONMARK ; @@ -333,119 +342,14 @@ ConvertStringUTF16( const sal_Unicode *pText, int nTextLen, rtl_destroyUnicodeToTextContext( aConverter, aContext ); - return nSize; -} - -typedef struct { - const rtl_TextEncoding nEncoding; - const char* pEncoding; -} DescriptionT; - -const DescriptionT pRTLEncoding[] = { - { RTL_TEXTENCODING_DONTKNOW, "DONTKNOW" }, - { RTL_TEXTENCODING_MS_1252, "MS_1252" }, - { RTL_TEXTENCODING_APPLE_ROMAN, "APPLE_ROMAN" }, - { RTL_TEXTENCODING_IBM_437, "IBM_437" }, - { RTL_TEXTENCODING_IBM_850, "IBM_850" }, - { RTL_TEXTENCODING_IBM_860, "IBM_860" }, - { RTL_TEXTENCODING_IBM_861, "IBM_861" }, - { RTL_TEXTENCODING_IBM_863, "IBM_863" }, - { RTL_TEXTENCODING_IBM_865, "IBM_865" }, - { RTL_TEXTENCODING_SYMBOL, "SYMBOL" }, - { RTL_TEXTENCODING_ASCII_US, "ASCII_US" }, - { RTL_TEXTENCODING_ISO_8859_1, "ISO_8859_1" }, - { RTL_TEXTENCODING_ISO_8859_2, "ISO_8859_2" }, - { RTL_TEXTENCODING_ISO_8859_3, "ISO_8859_3" }, - { RTL_TEXTENCODING_ISO_8859_4, "ISO_8859_4" }, - { RTL_TEXTENCODING_ISO_8859_5, "ISO_8859_5" }, - { RTL_TEXTENCODING_ISO_8859_6, "ISO_8859_6" }, - { RTL_TEXTENCODING_ISO_8859_7, "ISO_8859_7" }, - { RTL_TEXTENCODING_ISO_8859_8, "ISO_8859_8" }, - { RTL_TEXTENCODING_ISO_8859_9, "ISO_8859_9" }, - { RTL_TEXTENCODING_ISO_8859_14, "ISO_8859_14" }, - { RTL_TEXTENCODING_ISO_8859_15, "ISO_8859_15" }, - { RTL_TEXTENCODING_IBM_737, "IBM_737" }, - { RTL_TEXTENCODING_IBM_775, "IBM_775" }, - { RTL_TEXTENCODING_IBM_852, "IBM_852" }, - { RTL_TEXTENCODING_IBM_855, "IBM_855" }, - { RTL_TEXTENCODING_IBM_857, "IBM_857" }, - { RTL_TEXTENCODING_IBM_862, "IBM_862" }, - { RTL_TEXTENCODING_IBM_864, "IBM_864" }, - { RTL_TEXTENCODING_IBM_866, "IBM_866" }, - { RTL_TEXTENCODING_IBM_869, "IBM_869" }, - { RTL_TEXTENCODING_MS_874, "MS_874" }, - { RTL_TEXTENCODING_MS_1250, "MS_1250" }, - { RTL_TEXTENCODING_MS_1251, "MS_1251" }, - { RTL_TEXTENCODING_MS_1253, "MS_1253" }, - { RTL_TEXTENCODING_MS_1254, "MS_1254" }, - { RTL_TEXTENCODING_MS_1255, "MS_1255" }, - { RTL_TEXTENCODING_MS_1256, "MS_1256" }, - { RTL_TEXTENCODING_MS_1257, "MS_1257" }, - { RTL_TEXTENCODING_MS_1258, "MS_1258" }, - { RTL_TEXTENCODING_APPLE_ARABIC, "APPLE_ARABIC" }, - { RTL_TEXTENCODING_APPLE_CENTEURO, "APPLE_CENTEURO" }, - { RTL_TEXTENCODING_APPLE_CROATIAN, "APPLE_CROATIAN" }, - { RTL_TEXTENCODING_APPLE_CYRILLIC, "APPLE_CYRILLIC" }, - { RTL_TEXTENCODING_APPLE_DEVANAGARI,"APPLE_DEVANAGARI" }, - { RTL_TEXTENCODING_APPLE_FARSI, "APPLE_FARSI" }, - { RTL_TEXTENCODING_APPLE_GREEK, "APPLE_GREEK" }, - { RTL_TEXTENCODING_APPLE_GUJARATI, "APPLE_GUJARATI" }, - { RTL_TEXTENCODING_APPLE_GURMUKHI, "APPLE_GURMUKHI" }, - { RTL_TEXTENCODING_APPLE_HEBREW, "APPLE_HEBREW" }, - { RTL_TEXTENCODING_APPLE_ICELAND, "APPLE_ICELAND" }, - { RTL_TEXTENCODING_APPLE_ROMANIAN, "APPLE_ROMANIAN" }, - { RTL_TEXTENCODING_APPLE_THAI, "APPLE_THAI" }, - { RTL_TEXTENCODING_APPLE_TURKISH, "APPLE_TURKISH" }, - { RTL_TEXTENCODING_APPLE_UKRAINIAN, "APPLE_UKRAINIAN" }, - { RTL_TEXTENCODING_APPLE_CHINSIMP, "APPLE_CHINSIMP" }, - { RTL_TEXTENCODING_APPLE_CHINTRAD, "APPLE_CHINTRAD" }, - { RTL_TEXTENCODING_APPLE_JAPANESE, "APPLE_JAPANESE" }, - { RTL_TEXTENCODING_APPLE_KOREAN, "APPLE_KOREAN" }, - { RTL_TEXTENCODING_MS_932, "MS_932" }, - { RTL_TEXTENCODING_MS_936, "MS_936" }, - { RTL_TEXTENCODING_MS_949, "MS_949" }, - { RTL_TEXTENCODING_MS_950, "MS_950" }, - { RTL_TEXTENCODING_SHIFT_JIS, "SHIFT_JIS" }, - { RTL_TEXTENCODING_GB_2312, "GB_2312" }, - { RTL_TEXTENCODING_GBT_12345, "GBT_12345" }, - { RTL_TEXTENCODING_GBK, "GBK" }, - { RTL_TEXTENCODING_BIG5, "BIG5" }, - { RTL_TEXTENCODING_EUC_JP, "EUC_JP" }, - { RTL_TEXTENCODING_EUC_CN, "EUC_CN" }, - { RTL_TEXTENCODING_EUC_TW, "EUC_TW" }, - { RTL_TEXTENCODING_ISO_2022_JP, "ISO_2022_JP" }, - { RTL_TEXTENCODING_ISO_2022_CN, "ISO_2022_CN" }, - { RTL_TEXTENCODING_KOI8_R, "KOI8_R" }, - { RTL_TEXTENCODING_UTF7, "UTF7" }, - { RTL_TEXTENCODING_UTF8, "UTF8" }, - { RTL_TEXTENCODING_ISO_8859_10, "ISO_8859_10" }, - { RTL_TEXTENCODING_ISO_8859_13, "ISO_8859_13" }, - { RTL_TEXTENCODING_EUC_KR, "EUC_KR" }, - { RTL_TEXTENCODING_ISO_2022_KR, "ISO_2022_KR" }, - { RTL_TEXTENCODING_JIS_X_0208, "JISX_0208_1983" }, - { RTL_TEXTENCODING_JIS_X_0201, "JISX_0201_1976" }, - { RTL_TEXTENCODING_JIS_X_0212, "JISX_0212_1990" }, - #ifdef __notdef__ - { RTL_TEXTENCODING_KSC_5601_1992, "KSC_5601_1992" }, - { RTL_TEXTENCODING_TIS_620_2533, "TIS_620_2533" }, - { RTL_TEXTENCODING_SUNUDC_1997, "SUNUDC_1997" }, - #endif - { RTL_TEXTENCODING_STD_COUNT, "STD_COUNT" }, - { RTL_TEXTENCODING_USER_START, "USER_START" }, - { RTL_TEXTENCODING_USER_END, "USER_END" }, - { RTL_TEXTENCODING_UCS4, "UCS4" }, - { RTL_TEXTENCODING_UCS2, "UCS2" }, - { RTL_TEXTENCODING_UNICODE, "UNICODE" } -}; - -extern "C" const char* -pGetEncodingName( rtl_TextEncoding nEncoding ) -{ - for ( int i = 0; i < sizeof(pRTLEncoding)/sizeof(DescriptionT); i++ ) - if ( nEncoding == pRTLEncoding[i].nEncoding ) - return pRTLEncoding[i].pEncoding; + // XXX FIXME + if ( (nEncoding == RTL_TEXTENCODING_GB_2312) + || (nEncoding == RTL_TEXTENCODING_EUC_KR) ) + { + for (int n_char = 0; n_char < nSize; n_char++ ) + pBuffer[ n_char ] &= 0x7F; + } - static const char p_nil[] = "not_in_list"; - return p_nil; + return nSize; } |