summaryrefslogtreecommitdiff
path: root/sal
diff options
context:
space:
mode:
authorOliver Bolte <obo@openoffice.org>2005-01-05 12:44:28 +0000
committerOliver Bolte <obo@openoffice.org>2005-01-05 12:44:28 +0000
commit66b035b10d7d1803692056c8aca11e23095322e3 (patch)
treec31ac5e941c95a3a5c8beeb267251316db859269 /sal
parent63ca07131817708c0b3109ac8be685a8bdadbc73 (diff)
INTEGRATION: CWS html03 (1.5.50); FILE MERGED
2004/11/04 17:07:10 sb 1.5.50.1: #98452# When converting from Unicode to ISO-2022-JP, assume the initial state is ASCII and do not write any unnecessary <ESC> ( B sequences to initially switch to ASCII.
Diffstat (limited to 'sal')
-rw-r--r--sal/textenc/convertiso2022jp.c50
1 files changed, 20 insertions, 30 deletions
diff --git a/sal/textenc/convertiso2022jp.c b/sal/textenc/convertiso2022jp.c
index 624dc644a..3546e0f2f 100644
--- a/sal/textenc/convertiso2022jp.c
+++ b/sal/textenc/convertiso2022jp.c
@@ -2,9 +2,9 @@
*
* $RCSfile: convertiso2022jp.c,v $
*
- * $Revision: 1.5 $
+ * $Revision: 1.6 $
*
- * last change: $Author: rt $ $Date: 2004-06-17 11:41:18 $
+ * last change: $Author: obo $ $Date: 2005-01-05 13:44:28 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -103,17 +103,10 @@ typedef struct
sal_uInt32 m_nRow;
} ImplIso2022JpToUnicodeContext;
-typedef enum
-{
- IMPL_UNICODE_TO_ISO_2022_JP_SET_NONE,
- IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII,
- IMPL_UNICODE_TO_ISO_2022_JP_SET_0208
-} ImplUnicodeToIso2022JpSet;
-
typedef struct
{
sal_Unicode m_nHighSurrogate;
- ImplUnicodeToIso2022JpSet m_eSet;
+ sal_Bool m_b0208;
} ImplUnicodeToIso2022JpContext;
void * ImplCreateIso2022JpToUnicodeContext(void)
@@ -362,8 +355,7 @@ void * ImplCreateUnicodeToIso2022JpContext(void)
void * pContext
= rtl_allocateMemory(sizeof (ImplUnicodeToIso2022JpContext));
((ImplUnicodeToIso2022JpContext *) pContext)->m_nHighSurrogate = 0;
- ((ImplUnicodeToIso2022JpContext *) pContext)->m_eSet
- = IMPL_UNICODE_TO_ISO_2022_JP_SET_NONE;
+ ((ImplUnicodeToIso2022JpContext *) pContext)->m_b0208 = sal_False;
return pContext;
}
@@ -372,8 +364,7 @@ void ImplResetUnicodeToIso2022JpContext(void * pContext)
if (pContext)
{
((ImplUnicodeToIso2022JpContext *) pContext)->m_nHighSurrogate = 0;
- ((ImplUnicodeToIso2022JpContext *) pContext)->m_eSet
- = IMPL_UNICODE_TO_ISO_2022_JP_SET_NONE;
+ ((ImplUnicodeToIso2022JpContext *) pContext)->m_b0208 = sal_False;
}
}
@@ -391,7 +382,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
= ((ImplIso2022JpConverterData const *) pData)->
m_pUnicodeToJisX0208Data;
sal_Unicode nHighSurrogate = 0;
- ImplUnicodeToIso2022JpSet eSet = IMPL_UNICODE_TO_ISO_2022_JP_SET_NONE;
+ sal_Bool b0208 = sal_False;
sal_uInt32 nInfo = 0;
sal_Size nConverted = 0;
sal_Char * pDestBufPtr = pDestBuf;
@@ -402,7 +393,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
{
nHighSurrogate
= ((ImplUnicodeToIso2022JpContext *) pContext)->m_nHighSurrogate;
- eSet = ((ImplUnicodeToIso2022JpContext *) pContext)->m_eSet;
+ b0208 = ((ImplUnicodeToIso2022JpContext *) pContext)->m_b0208;
}
for (; nConverted < nSrcChars; ++nConverted)
@@ -433,16 +424,16 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
if (nChar == 0x0A || nChar == 0x0D) /* LF, CR */
{
- if (eSet == IMPL_UNICODE_TO_ISO_2022_JP_SET_0208)
+ if (b0208)
if (pDestBufEnd - pDestBufPtr >= 3)
{
*pDestBufPtr++ = 0x1B; /* ESC */
*pDestBufPtr++ = 0x28; /* ( */
*pDestBufPtr++ = 0x42; /* B */
+ b0208 = sal_False;
}
else
goto no_output;
- eSet = IMPL_UNICODE_TO_ISO_2022_JP_SET_NONE;
if (pDestBufPtr != pDestBufEnd)
*pDestBufPtr++ = (sal_Char) nChar;
else
@@ -452,13 +443,13 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
goto bad_input;
else if (nChar < 0x80)
{
- if (eSet != IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII)
+ if (b0208)
if (pDestBufEnd - pDestBufPtr >= 3)
{
*pDestBufPtr++ = 0x1B; /* ESC */
*pDestBufPtr++ = 0x28; /* ( */
*pDestBufPtr++ = 0x42; /* B */
- eSet = IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII;
+ b0208 = sal_False;
}
else
goto no_output;
@@ -497,13 +488,13 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
}
if (nBytes != 0)
{
- if (eSet != IMPL_UNICODE_TO_ISO_2022_JP_SET_0208)
+ if (!b0208)
if (pDestBufEnd - pDestBufPtr >= 3)
{
*pDestBufPtr++ = 0x1B; /* ESC */
*pDestBufPtr++ = 0x24; /* $ */
*pDestBufPtr++ = 0x42; /* B */
- eSet = IMPL_UNICODE_TO_ISO_2022_JP_SET_0208;
+ b0208 = sal_True;
}
else
goto no_output;
@@ -530,7 +521,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
pDestBufEnd,
&nInfo,
"\x1B(B",
- eSet == IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII ? 0 : 3,
+ b0208 ? 3 : 0,
&bWritten))
{
case IMPL_BAD_INPUT_STOP:
@@ -539,7 +530,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
case IMPL_BAD_INPUT_CONTINUE:
if (bWritten)
- eSet = IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII;
+ b0208 = sal_False;
nHighSurrogate = 0;
continue;
@@ -571,8 +562,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
pDestBufEnd,
&nInfo,
"\x1B(B",
- eSet == IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII ?
- 0 : 3,
+ b0208 ? 3 : 0,
&bWritten))
{
case IMPL_BAD_INPUT_STOP:
@@ -582,7 +572,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
case IMPL_BAD_INPUT_CONTINUE:
if (bWritten)
- eSet = IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII;
+ b0208 = sal_False;
nHighSurrogate = 0;
break;
@@ -591,7 +581,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
break;
}
if (bFlush
- && eSet == IMPL_UNICODE_TO_ISO_2022_JP_SET_0208
+ && b0208
&& (nFlags & RTL_UNICODETOTEXT_FLAGS_FLUSH) != 0)
{
if (pDestBufEnd - pDestBufPtr >= 3)
@@ -599,7 +589,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
*pDestBufPtr++ = 0x1B; /* ESC */
*pDestBufPtr++ = 0x28; /* ( */
*pDestBufPtr++ = 0x42; /* B */
- eSet = IMPL_UNICODE_TO_ISO_2022_JP_SET_ASCII;
+ b0208 = sal_False;
}
else
nInfo |= RTL_UNICODETOTEXT_INFO_DESTBUFFERTOSMALL;
@@ -610,7 +600,7 @@ sal_Size ImplConvertUnicodeToIso2022Jp(ImplTextConverterData const * pData,
{
((ImplUnicodeToIso2022JpContext *) pContext)->m_nHighSurrogate
= nHighSurrogate;
- ((ImplUnicodeToIso2022JpContext *) pContext)->m_eSet = eSet;
+ ((ImplUnicodeToIso2022JpContext *) pContext)->m_b0208 = b0208;
}
if (pInfo)
*pInfo = nInfo;