OSDN Git Service

stop using trunk or dist directory in rec10 project.
[rec10/rec10-git.git] / dist / trunk / tstools / epgdump / aribstr.c
diff --git a/dist/trunk/tstools/epgdump/aribstr.c b/dist/trunk/tstools/epgdump/aribstr.c
deleted file mode 100755 (executable)
index 44c62bf..0000000
+++ /dev/null
@@ -1,685 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <string.h>
-#include <iconv.h>
-
-#include "aribstr.h"
-
-#define CODE_UNKNOWN           0       // 不明なグラフィックセット(非対応)
-#define CODE_KANJI             1       // Kanji
-#define CODE_ALPHANUMERIC      2       // Alphanumeric
-#define CODE_HIRAGANA          3       // Hiragana
-#define CODE_KATAKANA          4       // Katakana
-#define CODE_MOSAIC_A          5       // Mosaic A
-#define CODE_MOSAIC_B          6       // Mosaic B
-#define CODE_MOSAIC_C          7       // Mosaic C
-#define CODE_MOSAIC_D          8       // Mosaic D
-#define CODE_PROP_ALPHANUMERIC         9       // Proportional Alphanumeric
-#define CODE_PROP_HIRAGANA     10      // Proportional Hiragana
-#define CODE_PROP_KATAKANA     11      // Proportional Katakana
-#define CODE_JIS_X0201_KATAKANA 12     // JIS X 0201 Katakana
-#define CODE_JIS_KANJI_PLANE_1         13      // JIS compatible Kanji Plane 1
-#define CODE_JIS_KANJI_PLANE_2         14      // JIS compatible Kanji Plane 2
-#define CODE_ADDITIONAL_SYMBOLS        15      // Additional symbols
-
-
-#define TCHAR char
-#define BYTE  char
-#define WORD  int
-#define DWORD int
-#define bool  int
-#define true  1
-#define false 0
-#define TEXT(a) a
-#define _T(a) a
-#define CODE_SET int
-
-static int m_CodeG[4];
-static int *m_pLockingGL;
-static int *m_pLockingGR;
-static int *m_pSingleGL;
-       
-static BYTE m_byEscSeqCount;
-static BYTE m_byEscSeqIndex;
-static bool m_bIsEscSeqDrcs;
-
-
-static const DWORD AribToStringInternal(TCHAR *lpszDst, const BYTE *pSrcData, const DWORD dwSrcLen);
-static const DWORD ProcessCharCode(TCHAR *lpszDst, const WORD wCode, const CODE_SET CodeSet);
-
-static const DWORD PutKanjiChar(TCHAR *lpszDst, const WORD wCode);
-static const DWORD PutAlphanumericChar(TCHAR *lpszDst, const WORD wCode);
-//static       const DWORD PutAlphanumericHankakuChar(TCHAR *lpszDst, const WORD wCode);
-static const DWORD PutHiraganaChar(TCHAR *lpszDst, const WORD wCode);
-static const DWORD PutKatakanaChar(TCHAR *lpszDst, const WORD wCode);
-static const DWORD PutJisKatakanaChar(TCHAR *lpszDst, const WORD wCode);
-static const DWORD PutSymbolsChar(TCHAR *lpszDst, const WORD wCode);
-
-static void ProcessEscapeSeq(const BYTE byCode);
-
-static void LockingShiftGL(const BYTE byIndexG);
-static void LockingShiftGR(const BYTE byIndexG);
-static void SingleShiftGL(const BYTE byIndexG);
-
-static const bool DesignationGSET(const BYTE byIndexG, const BYTE byCode);
-static const bool DesignationDRCS(const BYTE byIndexG, const BYTE byCode);
-
-static const bool abCharSizeTable[] =
-{
-       false,  // CODE_UNKNOWN                                 不明なグラフィックセット(非対応)
-       true,   // CODE_KANJI                                   Kanji
-       false,  // CODE_ALPHANUMERIC                    Alphanumeric
-       false,  // CODE_HIRAGANA                                Hiragana
-       false,  // CODE_KATAKANA                                Katakana
-       false,  // CODE_MOSAIC_A                                Mosaic A
-       false,  // CODE_MOSAIC_B                                Mosaic B
-       false,  // CODE_MOSAIC_C                                Mosaic C
-       false,  // CODE_MOSAIC_D                                Mosaic D
-       false,  // CODE_PROP_ALPHANUMERIC               Proportional Alphanumeric
-       false,  // CODE_PROP_HIRAGANA                   Proportional Hiragana
-       false,  // CODE_PROP_KATAKANA                   Proportional Katakana
-       false,  // CODE_JIS_X0201_KATAKANA              JIS X 0201 Katakana
-       true,   // CODE_JIS_KANJI_PLANE_1               JIS compatible Kanji Plane 1
-       true,   // CODE_JIS_KANJI_PLANE_2               JIS compatible Kanji Plane 2
-       true    // CODE_ADDITIONAL_SYMBOLS              Additional symbols
-};
-
-typedef enum{
-       STR_SMALL = 0,  //SSZ
-       STR_MEDIUM,             //MSZ
-       STR_NORMAL,             //NSZ
-       STR_MICRO,              //SZX 0x60
-       STR_HIGH_W,             //SZX 0x41
-       STR_WIDTH_W,    //SZX 0x44
-       STR_W,                  //SZX 0x45
-       STR_SPECIAL_1,  //SZX 0x6B
-       STR_SPECIAL_2,  //SZX 0x64
-} STRING_SIZE;
-
-STRING_SIZE m_emStrSize;
-
-bool IsSmallCharMode(void)
-{
-       bool bRet = false;
-       switch(m_emStrSize){
-               case STR_SMALL:
-                       bRet = true;
-                       break;
-               case STR_MEDIUM:
-                       bRet = true;
-                       break;
-               case STR_NORMAL:
-                       bRet = false;
-                       break;
-               case STR_MICRO:
-                       bRet = true;
-                       break;
-               case STR_HIGH_W:
-                       bRet = false;
-                       break;
-               case STR_WIDTH_W:
-                       bRet = false;
-                       break;
-               case STR_W:
-                       bRet = false;
-                       break;
-               case STR_SPECIAL_1:
-                       bRet = false;
-                       break;
-               case STR_SPECIAL_2:
-                       bRet = false;
-                       break;
-               default:
-                       break;
-       }
-       return bRet;
-}
-
-int AribToString(
-       char *lpszDst, 
-       const char *pSrcData, 
-       const int dwSrcLen) {
-  
-       return AribToStringInternal(lpszDst, pSrcData, dwSrcLen);
-}
-
-
-const DWORD AribToStringInternal(TCHAR *lpszDst, 
-                                                                const BYTE *pSrcData, const DWORD dwSrcLen)
-{
-       if(!pSrcData || !dwSrcLen || !lpszDst)return 0UL;
-  
-       DWORD dwSrcPos = 0UL;
-       DWORD dwDstLen = 0UL;
-       int   dwSrcData;
-  
-       // 状態初期設定
-       m_byEscSeqCount = 0U;
-       m_pSingleGL = NULL;
-
-       m_CodeG[0] = CODE_KANJI;
-       m_CodeG[1] = CODE_ALPHANUMERIC;
-       m_CodeG[2] = CODE_HIRAGANA;
-       m_CodeG[3] = CODE_KATAKANA;
-
-       m_pLockingGL = &m_CodeG[0];
-       m_pLockingGR = &m_CodeG[2];
-
-       m_emStrSize = STR_NORMAL;
-       while(dwSrcPos < dwSrcLen){
-               dwSrcData = pSrcData[dwSrcPos] & 0xFF;
-
-               //printf("Arib:pos%d:%d:%s\n",dwSrcPos,dwSrcData,lpszDst);
-               if(!m_byEscSeqCount){
-      
-                       // GL/GR領域
-                       if((dwSrcData >= 0x21U) && (dwSrcData <= 0x7EU)){
-                               // GL領域
-                               const CODE_SET CurCodeSet = (m_pSingleGL)? *m_pSingleGL : *m_pLockingGL;
-                               m_pSingleGL = NULL;
-                               
-                               if(abCharSizeTable[CurCodeSet]){
-                                       // 2バイトコード
-                                       if((dwSrcLen - dwSrcPos) < 2UL)break;
-                                       
-                                       dwDstLen += ProcessCharCode(&lpszDst[dwDstLen], ((WORD)pSrcData[dwSrcPos + 0] << 8) | (WORD)pSrcData[dwSrcPos + 1], CurCodeSet);
-                                       dwSrcPos++;
-                               }
-                               else{
-                                       // 1バイトコード
-                                       dwDstLen += ProcessCharCode(&lpszDst[dwDstLen], (WORD)dwSrcData, CurCodeSet);
-                               }
-                       }
-                       else if((dwSrcData >= 0xA1U) && (dwSrcData <= 0xFEU)){
-                               // GR領域
-                               const CODE_SET CurCodeSet = *m_pLockingGR;
-                               
-                               if(abCharSizeTable[CurCodeSet]){
-                                       // 2バイトコード
-                                       if((dwSrcLen - dwSrcPos) < 2UL)break;
-                                       
-                                       dwDstLen += ProcessCharCode(&lpszDst[dwDstLen], ((WORD)(pSrcData[dwSrcPos + 0] & 0x7FU) << 8) | (WORD)(pSrcData[dwSrcPos + 1] & 0x7FU), CurCodeSet);
-                                       dwSrcPos++;
-                               }
-                               else{
-                                       // 1バイトコード
-                                       dwDstLen += ProcessCharCode(&lpszDst[dwDstLen], (WORD)(dwSrcData & 0x7FU), CurCodeSet);
-                               }
-                       }
-                       else{
-                               // 制御コード
-                               switch(dwSrcData){
-                               case 0x0FU      : LockingShiftGL(0U);                           break;  // LS0
-                               case 0x0EU      : LockingShiftGL(1U);                           break;  // LS1
-                               case 0x19U      : SingleShiftGL(2U);                            break;  // SS2
-                               case 0x1DU      : SingleShiftGL(3U);                            break;  // SS3
-                               case 0x1BU      : m_byEscSeqCount = 1U;                         break;  // ESC
-                               case 0x89U      : m_emStrSize = STR_MEDIUM;                     break;  // MSZ
-                               case 0x8AU      : m_emStrSize = STR_NORMAL;                     break;  // NSZ
-                               case 0x20U      :
-                               case 0xA0U      :
-                                       //SP 空白
-                                       //空白は文字サイズの影響あり
-                                       if( IsSmallCharMode() == false ){
-                                               strcpy(&lpszDst[dwDstLen], " ");
-                                               dwDstLen += 3U;
-                                       } else {
-                                               lpszDst[dwDstLen++] = TEXT(' ');
-                                       }
-                                       break;
-                               default         : break;        // 非対応
-                               }
-                       }
-               }
-               else{
-                       // エスケープシーケンス処理
-                       ProcessEscapeSeq(dwSrcData);
-               }
-               
-               dwSrcPos++;
-       }
-
-       // 終端文字
-       lpszDst[dwDstLen] = TEXT('\0');
-       return dwDstLen;
-}
-
-const DWORD ProcessCharCode(TCHAR *lpszDst, const WORD wCode, const CODE_SET CodeSet)
-{
-       switch(CodeSet){
-       case CODE_KANJI :
-       case CODE_JIS_KANJI_PLANE_1 :
-       case CODE_JIS_KANJI_PLANE_2 :
-               // 漢字コード出力
-               return PutKanjiChar(lpszDst, wCode);
-
-       case CODE_ALPHANUMERIC :
-       case CODE_PROP_ALPHANUMERIC :
-               // 英数字コード出力
-               if( IsSmallCharMode() == false ){
-                       //全角テーブルコード取得
-               return PutAlphanumericChar(lpszDst, wCode);
-               } else {
-                       //半角はそのまま出力
-                       lpszDst[0] = wCode;
-                       return 1UL;
-               }
-
-       case CODE_HIRAGANA :
-       case CODE_PROP_HIRAGANA :
-               // ひらがなコード出力
-               return PutHiraganaChar(lpszDst, wCode);
-
-       case CODE_PROP_KATAKANA :
-       case CODE_KATAKANA :
-               // カタカナコード出力
-               return PutKatakanaChar(lpszDst, wCode);
-
-       case CODE_JIS_X0201_KATAKANA :
-               // JISカタカナコード出力
-               return PutJisKatakanaChar(lpszDst, wCode);
-
-       case CODE_ADDITIONAL_SYMBOLS :
-               // 追加シンボルコード出力
-               return PutSymbolsChar(lpszDst, wCode);
-
-       default :
-               return 0UL;
-       }
-}
-
-const DWORD PutKanjiChar(TCHAR *lpszDst, const WORD wCode)
-{
-       char code[9];
-       char xcode[5];
-       iconv_t cd;
-
-       size_t inbyte = 8;
-       size_t outbyte = sizeof(xcode);
-
-       memset(xcode, '\0', sizeof(xcode));
-  
-       const char *fptr;
-       char *tptr;
-
-       code[0] = 0x1BU;
-       code[1] = 0x24U;
-       code[2] = 0x40U;
-       code[3] = wCode >> 8;
-       code[4] = wCode & 0xFF;
-       code[5] = 0x1BU;
-       code[6] = 0x28U;
-       code[7] = 0x4AU;
-       code[8] = '\0';
-
-       cd = iconv_open("UTF-8","ISO-2022-JP");
-
-       fptr = code;
-       tptr = xcode;
-       iconv(cd, &fptr, &inbyte, &tptr, &outbyte);
-
-       iconv_close(cd);
-
-       strncpy(lpszDst, xcode, strlen(xcode));
-
-       return strlen(lpszDst);
-}
-
-const DWORD PutAlphanumericChar(TCHAR *lpszDst, const WORD wCode)
-{
-       // 英数字全角文字コード変換
-       static const TCHAR *acAlphanumericTable = 
-               TEXT("                ")
-               TEXT("                ")
-               TEXT(" !”#$%&’()*+,-./")
-               TEXT("0123456789:;<=>?")
-               TEXT("@ABCDEFGHIJKLMNO")
-               TEXT("PQRSTUVWXYZ[¥]^_")
-               TEXT(" abcdefghijklmno")
-               TEXT("pqrstuvwxyz{|} ̄ ");
-
-#ifdef _UNICODE
-       lpszDst[0] = acAlphanumericTableZenkaku[wCode];
-
-       return 1UL;
-#else
-       lpszDst[0] = acAlphanumericTable[wCode * 3U + 0U];
-       lpszDst[1] = acAlphanumericTable[wCode * 3U + 1U];
-       lpszDst[2] = acAlphanumericTable[wCode * 3U + 2U];
-
-       return 3UL;
-#endif
-}
-
-const DWORD PutHiraganaChar(TCHAR *lpszDst, const WORD wCode)
-{
-       // ひらがな文字コード変換
-       static const TCHAR *acHiraganaTable = 
-               TEXT("                ")
-               TEXT("                ")
-               TEXT(" ぁあぃいぅうぇえぉおかがきぎく")
-               TEXT("ぐけげこごさざしじすずせぜそぞた")
-               TEXT("だちぢっつづてでとどなにぬねのは")
-               TEXT("ばぱひびぴふぶぷへべぺほぼぽまみ")
-               TEXT("むめもゃやゅゆょよらりるれろゎわ")
-               TEXT("ゐゑをん   ゝゞー。「」、・ ");
-       
-#ifdef _UNICODE
-       lpszDst[0] = acHiraganaTable[wCode];
-
-       return 1UL;
-#else
-       lpszDst[0] = acHiraganaTable[wCode * 3U + 0U];
-       lpszDst[1] = acHiraganaTable[wCode * 3U + 1U];
-       lpszDst[2] = acHiraganaTable[wCode * 3U + 2U];
-
-       return 3UL;
-#endif
-}
-
-const DWORD PutKatakanaChar(TCHAR *lpszDst, const WORD wCode)
-{
-       // カタカナ英数字文字コード変換
-       static const TCHAR *acKatakanaTable = 
-               TEXT("                ")
-               TEXT("                ")
-               TEXT(" ァアィイゥウェエォオカガキギク")
-               TEXT("グケゲコゴサザシジスズセゼソゾタ")
-               TEXT("ダチヂッツヅテデトドナニヌネノハ")
-               TEXT("バパヒビピフブプヘベペホボポマミ")
-               TEXT("ムメモャヤュユョヨラリルレロヮワ")
-               TEXT("ヰヱヲンヴヵヶヽヾー。「」、・ ");
-       
-#ifdef _UNICODE
-       lpszDst[0] = acKatakanaTable[wCode];
-
-       return 1UL;
-#else
-       lpszDst[0] = acKatakanaTable[wCode * 3U + 0U];
-       lpszDst[1] = acKatakanaTable[wCode * 3U + 1U];
-       lpszDst[2] = acKatakanaTable[wCode * 3U + 2U];
-
-       return 3UL;
-#endif
-}
-
-const DWORD PutJisKatakanaChar(TCHAR *lpszDst, const WORD wCode)
-{
-       // JISカタカナ文字コード変換
-       static const TCHAR *acJisKatakanaTable = 
-               TEXT("                ")
-               TEXT("                ")
-               TEXT(" 。「」、・ヲァィゥェォャュョッ")
-               TEXT("ーアイウエオカキクケコサシスセソ")
-               TEXT("タチツテトナニヌネノハヒフヘホマ")
-               TEXT("ミムメモヤユヨラリルレロワン゛゜")
-               TEXT("                ")
-               TEXT("                ");
-       
-#ifdef _UNICODE
-       lpszDst[0] = acJisKatakanaTable[wCode];
-
-       return 1UL;
-#else
-       lpszDst[0] = acJisKatakanaTable[wCode * 3U + 0U];
-       lpszDst[1] = acJisKatakanaTable[wCode * 3U + 1U];
-       lpszDst[2] = acJisKatakanaTable[wCode * 3U + 2U];
-
-       return 3UL;
-#endif
-}
-
-const DWORD PutSymbolsChar(TCHAR *lpszDst, const WORD wCode)
-{
-       // 追加シンボル文字コード変換(とりあえず必要そうなものだけ)
-       static const TCHAR *aszSymbolsTable1[] =
-               {
-                       _T("[HV]"),             _T("[SD]"),             _T("[P]"),            _T("[W]"),            _T("[MV]"),             _T("[手]"),            _T("[字]"),            _T("[双]"),                    // 0x7A50 - 0x7A57      90/48 - 90/55
-                       _T("[デ]"),            _T("[S]"),            _T("[二]"),            _T("[多]"),            _T("[解]"),            _T("[SS]"),             _T("[B]"),            _T("[N]"),                    // 0x7A58 - 0x7A5F      90/56 - 90/63
-                       _T("■"),              _T("●"),              _T("[天]"),            _T("[交]"),            _T("[映]"),            _T("[無]"),            _T("[料]"),            _T("[年齢制限]"),   // 0x7A60 - 0x7A67      90/64 - 90/71
-                       _T("[前]"),            _T("[後]"),            _T("[再]"),            _T("[新]"),            _T("[初]"),            _T("[終]"),            _T("[生]"),            _T("[販]"),                    // 0x7A68 - 0x7A6F      90/72 - 90/79
-                       _T("[声]"),            _T("[吹]"),            _T("[PPV]"),    _T("(秘)"),            _T("ほか")                                                                                                                    // 0x7A70 - 0x7A74      90/80 - 90/84
-               };
-
-       static const TCHAR *aszSymbolsTable2[] =
-               {
-                       _T("→"),              _T("←"),              _T("↑"),              _T("↓"),              _T("●"),              _T("○"),              _T("年"),              _T("月"),                      // 0x7C21 - 0x7C28      92/01 - 92/08
-                       _T("日"),              _T("円"),              _T("㎡"),              _T("㎥"),              _T("㎝"),              _T("㎠"),              _T("㎤"),              _T("0."),                     // 0x7C29 - 0x7C30      92/09 - 92/16
-                       _T("1."),             _T("2."),             _T("3."),             _T("4."),             _T("5."),             _T("6."),             _T("7."),             _T("8."),                     // 0x7C31 - 0x7C38      92/17 - 92/24
-                       _T("9."),             _T("氏"),              _T("副"),              _T("元"),              _T("故"),              _T("前"),              _T("新"),              _T("0,"),                     // 0x7C39 - 0x7C40      92/25 - 92/32
-                       _T("1,"),             _T("2,"),             _T("3,"),             _T("4,"),             _T("5,"),             _T("6,"),             _T("7,"),             _T("8,"),                     // 0x7C41 - 0x7C48      92/33 - 92/40
-                       _T("9,"),             _T("(社)"),            _T("(財)"),            _T("(有)"),            _T("(株)"),            _T("(代)"),            _T("(問)"),            _T("▶"),                      // 0x7C49 - 0x7C50      92/41 - 92/48
-                       _T("◀"),              _T("〖"),              _T("〗"),              _T("⟐"),              _T("^2"),               _T("^3"),               _T("(CD)"),             _T("(vn)"),                     // 0x7C51 - 0x7C58      92/49 - 92/56
-                       _T("(ob)"),             _T("(cb)"),             _T("(ce"),              _T("mb)"),              _T("(hp)"),             _T("(br)"),             _T("(p)"),              _T("(s)"),                      // 0x7C59 - 0x7C60      92/57 - 92/64
-                       _T("(ms)"),             _T("(t)"),              _T("(bs)"),             _T("(b)"),              _T("(tb)"),             _T("(tp)"),             _T("(ds)"),             _T("(ag)"),                     // 0x7C61 - 0x7C68      92/65 - 92/72
-                       _T("(eg)"),             _T("(vo)"),             _T("(fl)"),             _T("(ke"),              _T("y)"),               _T("(sa"),              _T("x)"),               _T("(sy"),                      // 0x7C69 - 0x7C70      92/73 - 92/80
-                       _T("n)"),               _T("(or"),              _T("g)"),               _T("(pe"),              _T("r)"),               _T("(R)"),              _T("(C)"),              _T("(箏)"),                    // 0x7C71 - 0x7C78      92/81 - 92/88
-                       _T("DJ"),               _T("[演]"),            _T("Fax")                                                                                                                                                                                       // 0x7C79 - 0x7C7B      92/89 - 92/91
-               };
-
-       static const TCHAR *aszSymbolsTable3[] =
-               {
-                       _T("㈪"),              _T("㈫"),              _T("㈬"),              _T("㈭"),              _T("㈮"),              _T("㈯"),              _T("㈰"),              _T("㈷"),                      // 0x7D21 - 0x7D28      93/01 - 93/08
-                       _T("㍾"),              _T("㍽"),              _T("㍼"),              _T("㍻"),              _T("№"),              _T("℡"),              _T("〶"),              _T("○"),                      // 0x7D29 - 0x7D30      93/09 - 93/16
-                       _T("〔本〕"),        _T("〔三〕"),        _T("〔二〕"),        _T("〔安〕"),        _T("〔点〕"),        _T("〔打〕"),        _T("〔盗〕"),        _T("〔勝〕"),                // 0x7D31 - 0x7D38      93/17 - 93/24
-                       _T("〔敗〕"),        _T("〔S〕"),        _T("[投]"),        _T("[捕]"),        _T("[一]"),        _T("[二]"),        _T("[三]"),        _T("[遊]"),                // 0x7D39 - 0x7D40      93/25 - 93/32
-                       _T("[左]"),        _T("[中]"),        _T("[右]"),        _T("[指]"),        _T("[走]"),        _T("[打]"),        _T("㍑"),              _T("㎏"),                      // 0x7D41 - 0x7D48      93/33 - 93/40
-                       _T("㎐"),              _T("ha"),               _T("㎞"),              _T("㎢"),              _T("㍱"),              _T("・"),              _T("・"),              _T("1/2"),                      // 0x7D49 - 0x7D50      93/41 - 93/48
-                       _T("0/3"),              _T("1/3"),              _T("2/3"),              _T("1/4"),              _T("3/4"),              _T("1/5"),              _T("2/5"),              _T("3/5"),                      // 0x7D51 - 0x7D58      93/49 - 93/56
-                       _T("4/5"),              _T("1/6"),              _T("5/6"),              _T("1/7"),              _T("1/8"),              _T("1/9"),              _T("1/10"),             _T("☀"),                      // 0x7D59 - 0x7D60      93/57 - 93/64
-                       _T("☁"),              _T("☂"),              _T("☃"),              _T("☖"),              _T("☗"),              _T("▽"),              _T("▼"),              _T("♦"),                      // 0x7D61 - 0x7D68      93/65 - 93/72
-                       _T("♥"),              _T("♣"),              _T("♠"),              _T("⌺"),              _T("⦿"),              _T("‼"),              _T("⁉"),              _T("(曇/晴)"),                // 0x7D69 - 0x7D70      93/73 - 93/80
-                       _T("☔"),              _T("(雨)"),            _T("(雪)"),            _T("(大雪)"), _T("⚡"),              _T("(雷雨)"), _T(" "),              _T("・"),                      // 0x7D71 - 0x7D78      93/81 - 93/88
-                       _T("・"),              _T("♬"),              _T("☎")                                                                                                                                                                                       // 0x7D79 - 0x7D7B      93/89 - 93/91
-               };
-
-       static const TCHAR *aszSymbolsTable4[] =
-               {
-                       _T("Ⅰ"),              _T("Ⅱ"),              _T("Ⅲ"),              _T("Ⅳ"),              _T("Ⅴ"),              _T("Ⅵ"),              _T("Ⅶ"),              _T("Ⅷ"),                      // 0x7E21 - 0x7E28      94/01 - 94/08
-                       _T("Ⅸ"),              _T("Ⅹ"),              _T("Ⅺ"),              _T("Ⅻ"),              _T("⑰"),              _T("⑱"),              _T("⑲"),              _T("⑳"),                      // 0x7E29 - 0x7E30      94/09 - 94/16
-                       _T("⑴"),              _T("⑵"),              _T("⑶"),              _T("⑷"),              _T("⑸"),              _T("⑹"),              _T("⑺"),              _T("⑻"),                      // 0x7E31 - 0x7E38      94/17 - 94/24
-                       _T("⑼"),              _T("⑽"),              _T("⑾"),              _T("⑿"),              _T("㉑"),              _T("㉒"),              _T("㉓"),              _T("㉔"),                      // 0x7E39 - 0x7E40      94/25 - 94/32
-                       _T("(A)"),              _T("(B)"),              _T("(C)"),              _T("(D)"),              _T("(E)"),              _T("(F)"),              _T("(G)"),              _T("(H)"),                      // 0x7E41 - 0x7E48      94/33 - 94/40
-                       _T("(I)"),              _T("(J)"),              _T("(K)"),              _T("(L)"),              _T("(M)"),              _T("(N)"),              _T("(O)"),              _T("(P)"),                      // 0x7E49 - 0x7E50      94/41 - 94/48
-                       _T("(Q)"),              _T("(R)"),              _T("(S)"),              _T("(T)"),              _T("(U)"),              _T("(V)"),              _T("(W)"),              _T("(X)"),                      // 0x7E51 - 0x7E58      94/49 - 94/56
-                       _T("(Y)"),              _T("(Z)"),              _T("㉕"),              _T("㉖"),              _T("㉗"),              _T("㉘"),              _T("㉙"),              _T("㉚"),                      // 0x7E59 - 0x7E60      94/57 - 94/64
-                       _T("①"),              _T("②"),              _T("③"),              _T("④"),              _T("⑤"),              _T("⑥"),              _T("⑦"),              _T("⑧"),                      // 0x7E61 - 0x7E68      94/65 - 94/72
-                       _T("⑨"),              _T("⑩"),              _T("⑪"),              _T("⑫"),              _T("⑬"),              _T("⑭"),              _T("⑮"),              _T("⑯"),                      // 0x7E69 - 0x7E70      94/73 - 94/80
-                       _T("❶"),              _T("❷"),              _T("❸"),              _T("❹"),              _T("❺"),              _T("❻"),              _T("❼"),              _T("❽"),                      // 0x7E71 - 0x7E78      94/81 - 94/88
-                       _T("❾"),              _T("❿"),              _T("⓫"),              _T("⓬"),              _T("㉛")                                                                                                                       // 0x7E79 - 0x7E7D      94/89 - 94/93
-               };
-
-       static const TCHAR *aszSymbolsTable5[] =
-               {
-                       _T("㐂"),              _T("亭"),              _T("份"),              _T("仿"),              _T("侚"),              _T("俉"),              _T("傜"),              _T("儞"),                      // 0x7521 - 0x7528      85/01 - 85/08
-                       _T("冼"),              _T("㔟"),              _T("匇"),              _T("卡"),              _T("卬"),              _T("詹"),              _T("吉"),              _T("呍"),                      // 0x7529 - 0x7530      85/09 - 85/16
-                       _T("咖"),              _T("咜"),              _T("咩"),              _T("唎"),              _T("啊"),              _T("噲"),              _T("囤"),              _T("圳"),                      // 0x7531 - 0x7538      85/17 - 85/24
-                       _T("圴"),              _T("塚"),              _T("墀"),              _T("姤"),              _T("娣"),              _T("婕"),              _T("寬"),              _T("﨑"),                      // 0x7539 - 0x7540      85/25 - 85/32
-                       _T("㟢"),              _T("庬"),              _T("弴"),              _T("彅"),              _T("德"),              _T("怗"),              _T("恵"),              _T("愰"),                      // 0x7541 - 0x7548      85/33 - 85/40
-                       _T("昤"),              _T("曈"),              _T("曙"),              _T("曺"),              _T("曻"),              _T("桒"),              _T("・"),              _T("椑"),                      // 0x7549 - 0x7550      85/41 - 85/48
-                       _T("椻"),              _T("橅"),              _T("檑"),              _T("櫛"),              _T("・"),              _T("・"),              _T("・"),              _T("毱"),                      // 0x7551 - 0x7558      85/49 - 85/56
-                       _T("泠"),              _T("洮"),              _T("海"),              _T("涿"),              _T("淊"),              _T("淸"),              _T("渚"),              _T("潞"),                      // 0x7559 - 0x7560      85/57 - 85/64
-                       _T("濹"),              _T("灤"),              _T("・"),              _T("・"),              _T("煇"),              _T("燁"),              _T("爀"),              _T("玟"),                      // 0x7561 - 0x7568      85/65 - 85/72
-                       _T("・"),              _T("珉"),              _T("珖"),              _T("琛"),              _T("琡"),              _T("琢"),              _T("琦"),              _T("琪"),                      // 0x7569 - 0x7570      85/73 - 85/80
-                       _T("琬"),              _T("琹"),              _T("瑋"),              _T("㻚"),              _T("畵"),              _T("疁"),              _T("睲"),              _T("䂓"),                      // 0x7571 - 0x7578      85/81 - 85/88
-                       _T("磈"),              _T("磠"),              _T("祇"),              _T("禮"),              _T("・"),              _T("・")                                                                                       // 0x7579 - 0x757E      85/89 - 85/94
-               };
-
-       static const TCHAR *aszSymbolsTable6[] =
-               {
-                       _T("・"),              _T("秚"),              _T("稞"),              _T("筿"),              _T("簱"),              _T("䉤"),              _T("綋"),              _T("羡"),                      // 0x7621 - 0x7628      86/01 - 86/08
-                       _T("脘"),              _T("脺"),              _T("・"),              _T("芮"),              _T("葛"),              _T("蓜"),              _T("蓬"),              _T("蕙"),                      // 0x7629 - 0x7630      86/09 - 86/16
-                       _T("藎"),              _T("蝕"),              _T("蟬"),              _T("蠋"),              _T("裵"),              _T("角"),              _T("諶"),              _T("跎"),                      // 0x7631 - 0x7638      86/17 - 86/24
-                       _T("辻"),              _T("迶"),              _T("郝"),              _T("鄧"),              _T("鄭"),              _T("醲"),              _T("鈳"),              _T("銈"),                      // 0x7639 - 0x7640      86/25 - 86/32
-                       _T("錡"),              _T("鍈"),              _T("閒"),              _T("雞"),              _T("餃"),              _T("饀"),              _T("髙"),              _T("鯖"),                      // 0x7641 - 0x7648      86/33 - 86/40
-                       _T("鷗"),              _T("麴"),              _T("麵")                                                                                                                                                                                       // 0x7649 - 0x764B      86/41 - 86/43
-               };
-
-       // シンボルを変換する
-       if((wCode >= 0x7A50U) && (wCode <= 0x7A74U)){
-               strcpy(lpszDst, aszSymbolsTable1[wCode - 0x7A50U]);
-       }
-       else if((wCode >= 0x7C21U) && (wCode <= 0x7C7BU)){
-               strcpy(lpszDst, aszSymbolsTable2[wCode - 0x7C21U]);
-       }
-       else if((wCode >= 0x7D21U) && (wCode <= 0x7D7BU)){
-               strcpy(lpszDst, aszSymbolsTable3[wCode - 0x7D21U]);
-       }
-       else if((wCode >= 0x7E21U) && (wCode <= 0x7E7DU)){
-               strcpy(lpszDst, aszSymbolsTable4[wCode - 0x7E21U]);
-       }
-       else if((wCode >= 0x7521U) && (wCode <= 0x757EU)){
-               strcpy(lpszDst, aszSymbolsTable5[wCode - 0x7521U]);
-       }
-       else if((wCode >= 0x7621U) && (wCode <= 0x764BU)){
-               strcpy(lpszDst, aszSymbolsTable6[wCode - 0x7621U]);
-       }
-       else{
-               strcpy(lpszDst, TEXT("・"));
-       }
-
-       return strlen(lpszDst);
-}
-
-void ProcessEscapeSeq(const BYTE byCode)
-{
-       // エスケープシーケンス処理
-       switch(m_byEscSeqCount){
-               // 1バイト目
-       case 1U :
-               switch(byCode){
-                       // Invocation of code elements
-               case 0x6EU      : LockingShiftGL(2U);   m_byEscSeqCount = 0U;   return;         // LS2
-               case 0x6FU      : LockingShiftGL(3U);   m_byEscSeqCount = 0U;   return;         // LS3
-               case 0x7EU      : LockingShiftGR(1U);   m_byEscSeqCount = 0U;   return;         // LS1R
-               case 0x7DU      : LockingShiftGR(2U);   m_byEscSeqCount = 0U;   return;         // LS2R
-               case 0x7CU      : LockingShiftGR(3U);   m_byEscSeqCount = 0U;   return;         // LS3R
-
-                       // Designation of graphic sets
-               case 0x24U      :       
-               case 0x28U      : m_byEscSeqIndex = 0U;         break;
-               case 0x29U      : m_byEscSeqIndex = 1U;         break;
-               case 0x2AU      : m_byEscSeqIndex = 2U;         break;
-               case 0x2BU      : m_byEscSeqIndex = 3U;         break;
-               default         : m_byEscSeqCount = 0U;         return;         // エラー
-               }
-               break;
-
-               // 2バイト目
-       case 2U :
-               if(DesignationGSET(m_byEscSeqIndex, byCode)){
-                       m_byEscSeqCount = 0U;
-                       return;
-               }
-                       
-               switch(byCode){
-               case 0x20       : m_bIsEscSeqDrcs = true;       break;
-               case 0x28       : m_bIsEscSeqDrcs = true;       m_byEscSeqIndex = 0U;   break;
-               case 0x29       : m_bIsEscSeqDrcs = false;      m_byEscSeqIndex = 1U;   break;
-               case 0x2A       : m_bIsEscSeqDrcs = false;      m_byEscSeqIndex = 2U;   break;
-               case 0x2B       : m_bIsEscSeqDrcs = false;      m_byEscSeqIndex = 3U;   break;
-               default         : m_byEscSeqCount = 0U;         return;         // エラー
-               }
-               break;
-
-               // 3バイト目
-       case 3U :
-               if(!m_bIsEscSeqDrcs){
-                       if(DesignationGSET(m_byEscSeqIndex, byCode)){
-                               m_byEscSeqCount = 0U;
-                               return;
-                       }
-               }
-               else{
-                       if(DesignationDRCS(m_byEscSeqIndex, byCode)){
-                               m_byEscSeqCount = 0U;
-                               return;
-                       }
-               }
-
-               if(byCode == 0x20U){
-                       m_bIsEscSeqDrcs = true;
-               }
-               else{
-                       // エラー
-                       m_byEscSeqCount = 0U;
-                       return;
-               }
-               break;
-
-               // 4バイト目
-       case 4U :
-               DesignationDRCS(m_byEscSeqIndex, byCode);
-               m_byEscSeqCount = 0U;
-               return;
-       }
-
-       m_byEscSeqCount++;
-}
-
-void LockingShiftGL(const BYTE byIndexG)
-{
-       // LSx
-       m_pLockingGL = &m_CodeG[byIndexG];
-}
-
-void LockingShiftGR(const BYTE byIndexG)
-{
-       // LSxR
-       m_pLockingGR = &m_CodeG[byIndexG];
-}
-
-void SingleShiftGL(const BYTE byIndexG)
-{
-       // SSx
-       m_pSingleGL  = &m_CodeG[byIndexG];
-}
-
-const bool DesignationGSET(const BYTE byIndexG, const BYTE byCode)
-{
-       // Gのグラフィックセットを割り当てる
-       switch(byCode){
-       case 0x42U      : m_CodeG[byIndexG] = CODE_KANJI;                               return true;    // Kanji
-       case 0x4AU      : m_CodeG[byIndexG] = CODE_ALPHANUMERIC;                return true;    // Alphanumeric
-       case 0x30U      : m_CodeG[byIndexG] = CODE_HIRAGANA;                    return true;    // Hiragana
-       case 0x31U      : m_CodeG[byIndexG] = CODE_KATAKANA;                    return true;    // Katakana
-       case 0x32U      : m_CodeG[byIndexG] = CODE_MOSAIC_A;                    return true;    // Mosaic A
-       case 0x33U      : m_CodeG[byIndexG] = CODE_MOSAIC_B;                    return true;    // Mosaic B
-       case 0x34U      : m_CodeG[byIndexG] = CODE_MOSAIC_C;                    return true;    // Mosaic C
-       case 0x35U      : m_CodeG[byIndexG] = CODE_MOSAIC_D;                    return true;    // Mosaic D
-       case 0x36U      : m_CodeG[byIndexG] = CODE_PROP_ALPHANUMERIC;   return true;    // Proportional Alphanumeric
-       case 0x37U      : m_CodeG[byIndexG] = CODE_PROP_HIRAGANA;               return true;    // Proportional Hiragana
-       case 0x38U      : m_CodeG[byIndexG] = CODE_PROP_KATAKANA;               return true;    // Proportional Katakana
-       case 0x49U      : m_CodeG[byIndexG] = CODE_JIS_X0201_KATAKANA;  return true;    // JIS X 0201 Katakana
-       case 0x39U      : m_CodeG[byIndexG] = CODE_JIS_KANJI_PLANE_1;   return true;    // JIS compatible Kanji Plane 1
-       case 0x3AU      : m_CodeG[byIndexG] = CODE_JIS_KANJI_PLANE_2;   return true;    // JIS compatible Kanji Plane 2
-       case 0x3BU      : m_CodeG[byIndexG] = CODE_ADDITIONAL_SYMBOLS;  return true;    // Additional symbols
-       default         : return false;         // 不明なグラフィックセット
-       }
-}
-
-const bool DesignationDRCS(const BYTE byIndexG, const BYTE byCode)
-{
-       // DRCSのグラフィックセットを割り当てる
-       switch(byCode){
-       case 0x40U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-0
-       case 0x41U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-1
-       case 0x42U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-2
-       case 0x43U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-3
-       case 0x44U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-4
-       case 0x45U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-5
-       case 0x46U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-6
-       case 0x47U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-7
-       case 0x48U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-8
-       case 0x49U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-9
-       case 0x4AU      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-10
-       case 0x4BU      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-11
-       case 0x4CU      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-12
-       case 0x4DU      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-13
-       case 0x4EU      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-14
-       case 0x4FU      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // DRCS-15
-       case 0x70U      : m_CodeG[byIndexG] = CODE_UNKNOWN;                             return true;    // Macro
-       default         : return false;         // 不明なグラフィックセット
-}
-}