xref: /aoo41x/main/l10ntools/source/utf8conv.cxx (revision cdf0e10c)
1 /*************************************************************************
2  *
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * Copyright 2000, 2010 Oracle and/or its affiliates.
6  *
7  * OpenOffice.org - a multi-platform office productivity suite
8  *
9  * This file is part of OpenOffice.org.
10  *
11  * OpenOffice.org is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU Lesser General Public License version 3
13  * only, as published by the Free Software Foundation.
14  *
15  * OpenOffice.org is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU Lesser General Public License version 3 for more details
19  * (a copy is included in the LICENSE file that accompanied this code).
20  *
21  * You should have received a copy of the GNU Lesser General Public License
22  * version 3 along with OpenOffice.org.  If not, see
23  * <http://www.openoffice.org/license.html>
24  * for a copy of the LGPLv3 License.
25  *
26  ************************************************************************/
27 
28 // MARKER(update_precomp.py): autogen include statement, do not remove
29 #include "precompiled_l10ntools.hxx"
30 #include "utf8conv.hxx"
31 
32 //
33 // class UTF8Converter
34 //
35 
36 #define MAX_CONV_BUFFER_SIZE	0xFF00
37 
38 #define TO_CVTFLAGS		(RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_MAPTOPRIVATE |\
39 			 			 RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT |\
40 			 			 RTL_TEXTTOUNICODE_FLAGS_INVALID_DEFAULT)
41 
42 #define FROM_CVTFLAGS  	(RTL_UNICODETOTEXT_FLAGS_UNDEFINED_DEFAULT |\
43 			 		   	 RTL_UNICODETOTEXT_FLAGS_INVALID_DEFAULT |\
44 					   	 RTL_UNICODETOTEXT_FLAGS_UNDEFINED_REPLACE |\
45 					   	 RTL_UNICODETOTEXT_FLAGS_PRIVATE_MAPTO0)
46 
47 /*****************************************************************************/
48 void UTF8Converter::Convert( ByteString &rBuffer,
49 	rtl_TextEncoding nSourceENC, rtl_TextEncoding nDestENC )
50 /*****************************************************************************/
51 {
52 	String sTemp( rBuffer, nSourceENC );
53 	rBuffer = ByteString( sTemp, nDestENC );
54 }
55 
56 /*****************************************************************************/
57 ByteString UTF8Converter::ConvertToUTF8(
58 	const ByteString &rASCII, rtl_TextEncoding nEncoding )
59 /*****************************************************************************/
60 {
61 	ByteString sReturn( rASCII );
62 	Convert( sReturn, nEncoding, RTL_TEXTENCODING_UTF8 );
63 	return sReturn;
64 }
65 
66 /*****************************************************************************/
67 ByteString UTF8Converter::ConvertFromUTF8(
68 	const ByteString &rUTF8, rtl_TextEncoding nEncoding )
69 /*****************************************************************************/
70 {
71 	ByteString sReturn( rUTF8 );
72 	Convert( sReturn, RTL_TEXTENCODING_UTF8, nEncoding );
73 	return sReturn;
74 }
75