[ttssh2-commit] [10776] CharSet2022Invoke() の引数を変更

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2023年 6月 22日 (木) 00:08:55 JST


Revision: 10776
          https://osdn.net/projects/ttssh2/scm/svn/commits/10776
Author:   zmatsuo
Date:     2023-06-22 00:08:55 +0900 (Thu, 22 Jun 2023)
Log Message:
-----------
CharSet2022Invoke() の引数を変更

Modified Paths:
--------------
    trunk/teraterm/teraterm/charset.cpp
    trunk/teraterm/teraterm/charset.h
    trunk/teraterm/teraterm/vtterm.c

-------------- next part --------------
Modified: trunk/teraterm/teraterm/charset.cpp
===================================================================
--- trunk/teraterm/teraterm/charset.cpp	2023-06-20 14:22:56 UTC (rev 10775)
+++ trunk/teraterm/teraterm/charset.cpp	2023-06-21 15:08:55 UTC (rev 10776)
@@ -931,22 +931,53 @@
 
 /**
  *	\x8CĂяo\x82\xB5(Invoke)
- *	@param	glr				0/1 = GL/GR (Locking shift\x8E\x9E\x82̂ݗL\x8C\xF8)
- *	@param	gn				0/1/2/3 = G0/G1/G2/G3
- *	@param	single_shift	FALSE	Locking shift
- *							TRUE	Single shift
+ *	@param	shift
  */
-void CharSet2022Invoke(int glr, int gn, BOOL single_shift)
+void CharSet2022Invoke(CharSet2022Shift shift)
 {
 	VttermKanjiWork *w = &KanjiWork;
-	if (single_shift == FALSE) {
-		// Locking shift
-		w->Glr[glr] = gn;
-	}
-	else {
-		// Single shift
-		GLtmp = gn;
+	switch (shift) {
+	case CHARSET_LS0:
+		// Locking Shift 0 (G0->GL)
+		w->Glr[0] = 0;
+		break;
+	case CHARSET_LS1:
+		// Locking Shift 1 (G1->GL)
+		w->Glr[0] = 1;
+		break;
+	case CHARSET_LS2:
+		// Locking Shift 2 (G2->GL)
+		w->Glr[0] = 2;
+		break;
+	case CHARSET_LS3:
+		// Locking Shift 3 (G3->GL)
+		w->Glr[0] = 3;
+		break;
+	case CHARSET_LS1R:
+		// Locking Shift 1 (G1->GR)
+		w->Glr[1] = 1;
+		break;
+	case CHARSET_LS2R:
+		// Locking Shift 2 (G2->GR)
+		w->Glr[1] = 2;
+		break;
+	case CHARSET_LS3R:
+		// Locking Shift 3 (G3->GR)
+		w->Glr[1] = 3;
+		break;
+	case CHARSET_SS2:
+		// Single Shift 2
+		GLtmp = 2;
 		SSflag = TRUE;
+		break;
+	case CHARSET_SS3:
+		// Single Shift 3
+		GLtmp = 3;
+		SSflag = TRUE;
+		break;
+	default:
+		assert(FALSE);
+		break;
 	}
 }
 

Modified: trunk/teraterm/teraterm/charset.h
===================================================================
--- trunk/teraterm/teraterm/charset.h	2023-06-20 14:22:56 UTC (rev 10775)
+++ trunk/teraterm/teraterm/charset.h	2023-06-21 15:08:55 UTC (rev 10776)
@@ -44,9 +44,20 @@
 void ParseControl(BYTE b);
 
 // control
+typedef enum {
+	CHARSET_LS0,	// Locking Shift 0, SI, 0F (G0->GL)
+	CHARSET_LS1,	// Locking Shift 1, SO, 0E (G1->GL)
+	CHARSET_LS2,	// Locking Shift 2, ESC n, 1B 6E (G2->GL)
+	CHARSET_LS3,	// Locking Shift 3, ESC o, 1B 6F(G3->GL)
+	CHARSET_LS1R,	// Locking Shift 1R, ESC ~, 1B 7E (G1->GR)
+	CHARSET_LS2R,	// Locking Shift 2R, ESC }, 1B 7D (G2->GR)
+	CHARSET_LS3R,	// Locking Shift 3R, ESC |, 1B 7C (G3->GR)
+	CHARSET_SS2,	// Single Shift 2, SS2, 8E, ESC N, 1B 4E
+	CHARSET_SS3,	// Single Shift 3, SS3, 8F, ESC O, 1B 4F
+} CharSet2022Shift;
 void CharSetInit(void);
 void CharSet2022Designate(int gn, int cs);
-void CharSet2022Invoke(int glr, int gn, BOOL single_shift);
+void CharSet2022Invoke(CharSet2022Shift shift);
 BOOL CharSetIsSpecial(BYTE b);
 void CharSetSaveState(CharSetState *state);
 void CharSetLoadState(const CharSetState *state);

Modified: trunk/teraterm/teraterm/vtterm.c
===================================================================
--- trunk/teraterm/teraterm/vtterm.c	2023-06-20 14:22:56 UTC (rev 10775)
+++ trunk/teraterm/teraterm/vtterm.c	2023-06-21 15:08:55 UTC (rev 10776)
@@ -1010,7 +1010,7 @@
 				CharSet2022Designate(1, IdKatakana);
 			}
 			/* LS1 */
-			CharSet2022Invoke(0, 1, FALSE);
+			CharSet2022Invoke(CHARSET_LS1);
 			return;
 		}
 		break;
@@ -1017,7 +1017,7 @@
 	case SI:
 		if ((ts.ISO2022Flag & ISO2022_SI) && ! DirectPrn) {
 			/* LS0 */
-			CharSet2022Invoke(0, 0, FALSE);
+			CharSet2022Invoke(CHARSET_LS0);
 			return;
 		}
 		break;
@@ -1152,12 +1152,12 @@
 				CharSet2022Designate(1, IdKatakana);
 			}
 
-			CharSet2022Invoke(0, 1, FALSE);
+			CharSet2022Invoke(CHARSET_LS1);
 		}
 		break;
 	case SI: /* LS0 */
 		if (ts.ISO2022Flag & ISO2022_SI) {
-			CharSet2022Invoke(0, 0, FALSE);
+			CharSet2022Invoke(CHARSET_LS0);
 		}
 		break;
 	case DLE:
@@ -1207,12 +1207,12 @@
 		break;
 	case SS2:
 		if (ts.ISO2022Flag & ISO2022_SS2) {
-			CharSet2022Invoke(0, 2, TRUE);
+			CharSet2022Invoke(CHARSET_SS2);
 		}
 		break;
 	case SS3:
 		if (ts.ISO2022Flag & ISO2022_SS3) {
-			CharSet2022Invoke(0, 3, TRUE);
+			CharSet2022Invoke(CHARSET_SS3);
 		}
 		break;
 	case DCS:
@@ -1344,7 +1344,7 @@
 				CharSet2022Designate(0, IdKanji);
 				if ((ts.TermFlag & TF_AUTOINVOKE)!=0) {
 					/* G0->GL */
-					CharSet2022Invoke(0, 0, FALSE);
+					CharSet2022Invoke(CHARSET_LS0);
 				}
 			}
 			break;
@@ -1370,7 +1370,7 @@
 				CharSet2022Designate(Dist, IdKanji);
 				if (((ts.TermFlag & TF_AUTOINVOKE)!=0) && (Dist==0)) {
 					/* G0->GL */
-					CharSet2022Invoke(0, 0, FALSE);
+					CharSet2022Invoke(CHARSET_LS0);
 				}
 			}
 			break;
@@ -1417,7 +1417,7 @@
 
 	if (((ts.TermFlag & TF_AUTOINVOKE)!=0) && (Dist==0)) {
 		/* G0->GL */
-		CharSet2022Invoke(0, 0, FALSE);
+		CharSet2022Invoke(CHARSET_LS0);
 	}
 }
 
@@ -1526,12 +1526,12 @@
 			break;
 		case 'N': /* SS2 */
 			if (ts.ISO2022Flag & ISO2022_SS2) {
-				CharSet2022Invoke(0, 2, TRUE);
+				CharSet2022Invoke(CHARSET_SS2);
 			}
 			break;
 		case 'O': /* SS3 */
 			if (ts.ISO2022Flag & ISO2022_SS3) {
-				CharSet2022Invoke(0, 3, TRUE);
+				CharSet2022Invoke(CHARSET_SS3);
 			}
 			break;
 		case 'P': /* DCS */
@@ -1571,27 +1571,27 @@
 			break;
 		case 'n': /* LS2 */
 			if (ts.ISO2022Flag & ISO2022_LS2) {
-				CharSet2022Invoke(0, 2, FALSE);
+				CharSet2022Invoke(CHARSET_LS2);
 			}
 			break;
 		case 'o': /* LS3 */
 			if (ts.ISO2022Flag & ISO2022_LS3) {
-				CharSet2022Invoke(0, 3, FALSE);
+				CharSet2022Invoke(CHARSET_LS3);
 			}
 			break;
 		case '|': /* LS3R */
 			if (ts.ISO2022Flag & ISO2022_LS3R) {
-				CharSet2022Invoke(1, 3, FALSE);
+				CharSet2022Invoke(CHARSET_LS3R);
 			}
 			break;
 		case '}': /* LS2R */
 			if (ts.ISO2022Flag & ISO2022_LS2R) {
-				CharSet2022Invoke(1, 2, FALSE);
+				CharSet2022Invoke(CHARSET_LS2R);
 			}
 			break;
 		case '~': /* LS1R */
 			if (ts.ISO2022Flag & ISO2022_LS1R) {
-				CharSet2022Invoke(1, 1, FALSE);
+				CharSet2022Invoke(CHARSET_LS1R);
 			}
 			break;
 		}
@@ -2967,12 +2967,12 @@
 				CharSet2022Designate(1, IdKatakana);
 				CharSet2022Designate(2, IdKatakana);
 				CharSet2022Designate(3, IdKanji);
-				CharSet2022Invoke(0, 0, FALSE);
+				CharSet2022Invoke(CHARSET_LS0);
 				if ((ts.KanjiCode==IdJIS) && (ts.JIS7Katakana==0))
 					// 8-bit katakana
-					CharSet2022Invoke(1, 2, FALSE);
+					CharSet2022Invoke(CHARSET_LS2R);
 				else
-					CharSet2022Invoke(1, 3, FALSE);
+					CharSet2022Invoke(CHARSET_LS3R);
 			}
 			break;
 		  case 66: AppliKeyMode = TRUE; break;		// DECNKM
@@ -3137,12 +3137,12 @@
 				CharSet2022Designate(1, IdKatakana);
 				CharSet2022Designate(2, IdKatakana);
 				CharSet2022Designate(3, IdKanji);
-				CharSet2022Invoke(0, 0, FALSE);
+				CharSet2022Invoke(CHARSET_LS0);
 				if ((ts.KanjiCode==IdJIS) && (ts.JIS7Katakana==0))
 					// 8-bit katakana
-					CharSet2022Invoke(1, 2, FALSE);
+					CharSet2022Invoke(CHARSET_LS2R);
 				else
-					CharSet2022Invoke(1, 3, FALSE);
+					CharSet2022Invoke(CHARSET_LS3R);
 			}
 			break;
 		  case 66: AppliKeyMode = FALSE; break;		// DECNKM


ttssh2-commit メーリングリストの案内
Back to archive index