adding new encoding

Hristo Simenov Hristov <[email protected]>
Newsgroups gmane.comp.openoffice.devel.porting
Message-ID <[email protected]>
Hi,
I want to add new encoding for filters of encoded text files. This encoding is 
not oficla, it it unoficial encoding used in Bulgaria. It is a little bit 
similar with 866 encoding but some symbols are replaced. I made the patch but 
it is not working. I have attached the patch wich I made. If somebody can 
look and help me what more I have to do that this encoding to work.
Thanks

Best regards.
-- 
-------------------------------------------------------------
Hristo Simeonov Hristov
Leader of OpenOffice.org - Bulgaria
add-bulgarian-mik-encoding.diff (text/x-diff, 9 KB)
diff -urN ooo_SRC680_m86_src.orig/sal/inc/rtl/textenc.h ooo_SRC680_m86_src/sal/inc/rtl/textenc.h
--- ooo_SRC680_m86_src.orig/sal/inc/rtl/textenc.h	2005-03-14 17:54:05.000000000 +0200
+++ ooo_SRC680_m86_src/sal/inc/rtl/textenc.h	2005-03-14 21:50:29.000000000 +0200
@@ -180,6 +180,7 @@
 #define RTL_TEXTENCODING_ADOBE_STANDARD         (RTL_TEXTENC_CAST( 91 ))
 #define RTL_TEXTENCODING_ADOBE_SYMBOL           (RTL_TEXTENC_CAST( 92 ))
 #define RTL_TEXTENCODING_PT154                  (RTL_TEXTENC_CAST( 93 ))
+#define RTL_TEXTENCODING_MIK                    (RTL_TEXTENC_CAST( 94 ))
 /* ATTENTION!  Whenever some encoding is added here, make sure to update
  * rtl_isOctetTextEncoding in tencinfo.c.
  */
@@ -229,6 +230,7 @@
 Cyrillic (Apple Macintosh/Ukrainian)            RTL_TEXTENCODING_APPLE_UKRAINIAN
 Cyrillic (DOS/OS2-855)                          RTL_TEXTENCODING_IBM_855
 Cyrillic (DOS/OS2-866/Russian)                  RTL_TEXTENCODING_IBM_866
+Cyrillic (DOS/MIK/Bulgarian)                    RTL_TEXTENCODING_MIK
 Cyrillic (ISO-8859-5)                           RTL_TEXTENCODING_ISO_8859_5
 Cyrillic (KOI8-R)                               RTL_TEXTENCODING_KOI8_R
 Cyrillic (KOI8-U)                               RTL_TEXTENCODING_KOI8_U
diff -urN ooo_SRC680_m86_src.orig/sal/textenc/tcvtest1.tab ooo_SRC680_m86_src/sal/textenc/tcvtest1.tab
--- ooo_SRC680_m86_src.orig/sal/textenc/tcvtest1.tab	2005-03-14 17:54:11.000000000 +0200
+++ ooo_SRC680_m86_src/sal/textenc/tcvtest1.tab	2005-03-14 21:58:42.000000000 +0200
@@ -4616,3 +4616,153 @@
         "PTCP154",
         RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
     /* SCRIPT_CYRILLIC */
+
+/* ======================================================================= */
+
+/* MIK */
+/* Standard Charset for Bulgarian DOS MIK Cyrillic */
+/* Single Byte, 0x00-0x7F equals ASCII */
+/* Conversion Tables: hand made */
+
+#define MIKUNI_START 0x80
+#define MIKUNI_END 0xFF
+static sal_uInt16 const aImplMIKToUniTab[MIKUNI_END - MIKUNI_START + 1] =
+{
+/*       0       1       2       3       4       5       6       7 */
+/*       8       9       A       B       C       D       E       F */
+    0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, /* 0x80 */
+    0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, /* 0x80 */
+    0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, /* 0x90 */
+    0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, /* 0x90 */
+    0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437, /* 0xA0 */
+    0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, /* 0xA0 */
+    0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, /* 0xB0 */
+    0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, /* 0xB0 */
+    0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x2563, 0x2551, /* 0xC0 */
+    0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2510, /* 0xC0 */
+    0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2116, 0x00A7, 0x2557, /* 0xD0 */
+    0x255D, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580, /* 0xD0 */
+    0x03B1, 0x03B2, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4, /* 0xE0 */
+    0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x2205, 0x2208, 0x2229, /* 0xE0 */
+    0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248, /* 0xF0 */
+    0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0  /* 0xF0 */
+};
+
+#define MIKCHAR_START 0x0410
+#define MIKCHAR_END 0x044F
+static sal_uChar const
+aImplMIKToCharTab[MIKCHAR_END - MIKCHAR_START + 1] =
+{
+/*     0     1     2     3     4     5     6     7 */
+/*     8     9     A     B     C     D     E     F */
+    0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, /* 0x0410 */
+    0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, /* 0x0410 */
+    0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, /* 0x0420 */
+    0x98, 0x99, 0x9A, 0x9B, 0x9C, 0x9D, 0x9E, 0x9F, /* 0x0420 */
+    0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, /* 0x0430 */
+    0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, /* 0x0430 */
+    0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0xB7, /* 0x0440 */
+    0xB8, 0xB9, 0xBA, 0xBB, 0xBC, 0xBD, 0xBE, 0xBF /* 0x0440 */
+};
+
+#define MIKTOCHARTABEX_COUNT 64
+static ImplUniCharTabData const aImplMIKToCharTabEx[MIKTOCHARTABEX_COUNT] =
+{
+  { 0x00A0, 0xFF },
+  { 0x00A7, 0xD6 },
+  { 0x00B0, 0xF8 },
+  { 0x00B1, 0xF1 },
+  { 0x00B2, 0xFD },
+  { 0x00B7, 0xFA },
+  { 0x00F7, 0xF6 },
+  { 0x0393, 0xE2 },
+  { 0x0398, 0xE9 },
+  { 0x03A3, 0xE4 },
+  { 0x03A6, 0xE8 },
+  { 0x03A9, 0xEA },
+  { 0x03B1, 0xE0 },
+  { 0x03B2, 0xE1 },
+  { 0x03B4, 0xEB },
+  { 0x03BC, 0xE6 },
+  { 0x03C0, 0xE3 },
+  { 0x03C3, 0xE5 },
+  { 0x03C4, 0xE7 },
+  { 0x207F, 0xFC },
+  { 0x2116, 0xD5 },
+  { 0x2205, 0xED },
+  { 0x2208, 0xEE },
+  { 0x2219, 0xF9 },
+  { 0x221A, 0xFB },
+  { 0x221E, 0xEC },
+  { 0x2229, 0xEF },
+  { 0x2248, 0xF7 },
+  { 0x2261, 0xF0 },
+  { 0x2264, 0xF3 },
+  { 0x2265, 0xF2 },
+  { 0x2320, 0xF4 },
+  { 0x2321, 0xF5 },
+  { 0x2500, 0xC4 },
+  { 0x2502, 0xD3 },
+  { 0x250C, 0xDA },
+  { 0x2510, 0xCF },
+  { 0x2514, 0xC0 },
+  { 0x2518, 0xD9 },
+  { 0x251C, 0xC3 },
+  { 0x2524, 0xD4 },
+  { 0x252C, 0xC2 },
+  { 0x2534, 0xC1 },
+  { 0x253C, 0xC5 },
+  { 0x2550, 0xCD },
+  { 0x2551, 0xC7 },
+  { 0x2554, 0xC9 },
+  { 0x2557, 0xD7 },
+  { 0x255A, 0xC8 },
+  { 0x255D, 0xD8 },
+  { 0x2560, 0xCC },
+  { 0x2563, 0xC6 },
+  { 0x2566, 0xCB },
+  { 0x2569, 0xCA },
+  { 0x256C, 0xCE },
+  { 0x2580, 0xDF },
+  { 0x2584, 0xDC },
+  { 0x2588, 0xDB },
+  { 0x258C, 0xDD },
+  { 0x2590, 0xDE },
+  { 0x2591, 0xD0 },
+  { 0x2592, 0xD1 },
+  { 0x2593, 0xD2 },
+  { 0x25A0, 0xFE }
+};
+
+static ImplByteConvertData const aImplMIKByteCvtData =
+{
+    aImplMIKToUniTab,
+    NULL,
+    MIKUNI_START, MIKUNI_END,
+    NOTABUNI_START, NOTABUNI_END,
+    aImplMIKToCharTab,
+    NULL,
+    aImplMIKToCharTabEx,
+    MIKCHAR_START, MIKCHAR_END,
+    NOTABCHAR_START, NOTABCHAR_END,
+    MIKTOCHARTABEX_COUNT
+};
+
+static ImplTextEncodingData const aImplMIKTextEncodingData
+    = { { &aImplMIKByteCvtData,
+          ImplCharToUnicode,
+          ImplUnicodeToChar,
+          NULL,
+          NULL,
+          NULL,
+          NULL,
+          NULL,
+          NULL },
+        1,
+        1,
+        1,
+        238,
+        "iso8859-5",
+        "MIK",
+        RTL_TEXTENCODING_INFO_ASCII | RTL_TEXTENCODING_INFO_MIME };
+    /* SCRIPT_CYRILLIC Bulgarian MIK encoding*/
diff -urN ooo_SRC680_m86_src.orig/sal/textenc/tencinfo.c ooo_SRC680_m86_src/sal/textenc/tencinfo.c
--- ooo_SRC680_m86_src.orig/sal/textenc/tencinfo.c	2005-03-14 17:54:13.000000000 +0200
+++ ooo_SRC680_m86_src/sal/textenc/tencinfo.c	2005-03-14 21:56:46.000000000 +0200
@@ -86,7 +86,7 @@
 sal_Bool SAL_CALL rtl_isOctetTextEncoding(rtl_TextEncoding nEncoding)
 {
     return nEncoding > RTL_TEXTENCODING_DONTKNOW
-           && nEncoding <= RTL_TEXTENCODING_PT154
+           && nEncoding <= RTL_TEXTENCODING_MIK
                /* always update this! */
            && nEncoding != 9; /* RTL_TEXTENCODING_SYSTEM */
 }
diff -urN ooo_SRC680_m86_src.orig/sal/textenc/textenc.cxx ooo_SRC680_m86_src/sal/textenc/textenc.cxx
--- ooo_SRC680_m86_src.orig/sal/textenc/textenc.cxx	2005-03-14 17:54:13.000000000 +0200
+++ ooo_SRC680_m86_src/sal/textenc/textenc.cxx	2005-03-14 21:56:15.000000000 +0200
@@ -259,7 +259,8 @@
             &aImplJavaUtf8TextEncodingData, /* JAVA_UTF8 */
             &adobeStandardEncodingData, /* ADOBE_STANDARD */
             &adobeSymbolEncodingData, /* ADOBE_SYMBOL */
-            &aImplPT154TextEncodingData }; /* PT154 */
+            &aImplPT154TextEncodingData, /* PT154 */
+            &aImplMIKTextEncodingData }; /* MIK */
     return
         nEncoding < sizeof aData / sizeof aData[0] ? aData[nEncoding] : NULL;
 }
diff -urN ooo_SRC680_m86_src.orig/svx/source/dialog/txenctab.src ooo_SRC680_m86_src/svx/source/dialog/txenctab.src
--- ooo_SRC680_m86_src.orig/svx/source/dialog/txenctab.src	2005-03-14 17:52:55.000000000 +0200
+++ ooo_SRC680_m86_src/svx/source/dialog/txenctab.src	2005-03-14 22:01:11.000000000 +0200
@@ -101,6 +101,7 @@
 		< "Hebrдisch (DOS/OS2-862)"							; RTL_TEXTENCODING_IBM_862			; > ;
 		< "Arabisch (DOS/OS2-864)"							; RTL_TEXTENCODING_IBM_864			; > ;
 		< "Kyrillisch (DOS/OS2-866/Russisch)"				; RTL_TEXTENCODING_IBM_866			; > ;
+		< "Kyrillisch (DOS/MIK/Bulgarisch)"				; RTL_TEXTENCODING_MIK			; > ;
 		< "Griechisch (DOS/OS2-869/Modern)"					; RTL_TEXTENCODING_IBM_869			; > ;
 		< "Osteuropa (Windows-1250/WinLatin 2)"				; RTL_TEXTENCODING_MS_1250			; > ;
 		< "Kyrillisch (Windows-1251)"						; RTL_TEXTENCODING_MS_1251			; > ;
@@ -192,6 +193,7 @@
 		< "Hebrew (DOS/OS2-862)"							; RTL_TEXTENCODING_IBM_862			; > ;
 		< "Arabic (DOS/OS2-864)"							; RTL_TEXTENCODING_IBM_864			; > ;
 		< "Cyrillic (DOS/OS2-866/Russian)"				; RTL_TEXTENCODING_IBM_866			; > ;
+		< "Cyrillic (DOS/MIK/Bulgarian)"				; RTL_TEXTENCODING_MIK			; > ;
 		< "Greek (DOS/OS2-869/Modern)"					; RTL_TEXTENCODING_IBM_869			; > ;
 		< "Eastern Europe (Windows-1250/WinLatin 2)"				; RTL_TEXTENCODING_MS_1250			; > ;
 		< "Cyrillic (Windows-1251)"						; RTL_TEXTENCODING_MS_1251			; > ;
signature.asc (application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (GNU/Linux)

iD8DBQBCY2exJnCI2dDYlesRAmiTAKDS4F+jL/SLuoRm6K4/vWOy2RVYJgCfVHr+
dgigDCG/y+6LFbCtF1ii0k8=
=lzal
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.