19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifndef __DRM_I18N_H__ 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#define __DRM_I18N_H__ 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifdef __cplusplus 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectextern "C" { 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#include <drm_common_types.h> 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @name Charset value defines 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @ingroup i18n 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Charset value defines 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * see http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_81rn.asp 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecttypedef enum { 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_GBK = 936, /** Simplified Chinese GBK (CP936) */ 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_GB2312 = 20936, /** Simplified Chinese GB2312 (CP936) */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_BIG5 = 950, /** BIG5 (CP950) */ 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN1 = 28591, /** ISO 8859-1, Latin 1 */ 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN2 = 28592, /** ISO 8859-2, Latin 2 */ 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN3 = 28593, /** ISO 8859-3, Latin 3 */ 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN4 = 28594, /** ISO 8859-4, Latin 4 */ 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_CYRILLIC = 28595, /** ISO 8859-5, Cyrillic */ 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_ARABIC = 28596, /** ISO 8859-6, Arabic */ 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_GREEK = 28597, /** ISO 8859-7, Greek */ 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_HEBREW = 28598, /** ISO 8859-8, Hebrew */ 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN5 = 28599, /** ISO 8859-9, Latin 5 */ 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN6 = 865, /** ISO 8859-10, Latin 6 (not sure here) */ 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_THAI = 874, /** ISO 8859-11, Thai */ 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN7 = 1257, /** ISO 8859-13, Latin 7 (not sure here) */ 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN8 = 38598, /** ISO 8859-14, Latin 8 (not sure here) */ 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN9 = 28605, /** ISO 8859-15, Latin 9 */ 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_LATIN10 = 28606, /** ISO 8859-16, Latin 10 */ 539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_UTF8 = 65001, /** UTF-8 */ 549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_UTF16LE = 1200, /** UTF-16 LE */ 559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_UTF16BE = 1201, /** UTF-16 BE */ 569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_HINDI = 57002, /** Hindi/Mac Devanagari */ 579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project DRM_CHARSET_UNSUPPORTED = -1 589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} DRM_Charset_t; 599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Convert multibyte string of specified charset to unicode string. 629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Note NO terminating '\0' will be appended to the output unicode string. 639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param charset Charset of the multibyte string. 659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mbs Multibyte string to be converted. 669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mbsLen Number of the bytes (in mbs) to be converted. 679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param wcsBuf Buffer for the converted unicode characters. 689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If wcsBuf is NULL, the function returns the number of unicode 699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * characters required for the buffer. 709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bufSizeInWideChar The size (in wide char) of wcsBuf 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bytesConsumed The number of bytes in mbs that have been successfully 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * converted. The value of *bytesConsumed is undefined 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * if wcsBuf is NULL. 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Number of the successfully converted unicode characters if wcsBuf 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is not NULL. If wcsBuf is NULL, returns required unicode buffer 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * size. -1 for unrecoverable errors. 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint32_t DRM_i18n_mbsToWcs(DRM_Charset_t charset, 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const uint8_t *mbs, int32_t mbsLen, 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint16_t *wcsBuf, int32_t bufSizeInWideChar, 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int32_t *bytesConsumed); 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Convert unicode string to multibyte string with specified charset. 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Note NO terminating '\0' will be appended to the output multibyte string. 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param charset Charset of the multibyte string to be converted to. 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param wcs Unicode string to be converted. 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param wcsLen Number of the unicode characters (in wcs) to be converted. 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param mbsBuf Buffer for converted multibyte characters. 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If mbsBuf is NULL, the function returns the number of bytes 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * required for the buffer. 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param bufSizeInByte The size (in byte) of mbsBuf. 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Number of the successfully converted bytes. 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectint32_t DRM_i18n_wcsToMbs(DRM_Charset_t charset, 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project const uint16_t *wcs, int32_t wcsLen, 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uint8_t *mbsBuf, int32_t bufSizeInByte); 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#ifdef __cplusplus 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project#endif 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 108