[ttssh2-commit] [10736] 各モジュール間APIをUnicode版のみを使用するようにした

Back to archive index
scmno****@osdn***** scmno****@osdn*****
2023年 6月 4日 (日) 01:56:16 JST


Revision: 10736
          https://osdn.net/projects/ttssh2/scm/svn/commits/10736
Author:   zmatsuo
Date:     2023-06-04 01:56:16 +0900 (Sun, 04 Jun 2023)
Log Message:
-----------
各モジュール間APIをUnicode版のみを使用するようにした

- buffer.c 内 BuffPutChar() -> BuffPutUnicode()
- vtterm.c 内 PutChar() -> PutU32()

Modified Paths:
--------------
    branches/input_charset/teraterm/teraterm/buffer.c
    branches/input_charset/teraterm/teraterm/buffer.h
    branches/input_charset/teraterm/teraterm/charset.c
    branches/input_charset/teraterm/teraterm/charset.h
    branches/input_charset/teraterm/teraterm/vtterm.c

-------------- next part --------------
Modified: branches/input_charset/teraterm/teraterm/buffer.c
===================================================================
--- branches/input_charset/teraterm/teraterm/buffer.c	2023-06-03 16:56:06 UTC (rev 10735)
+++ branches/input_charset/teraterm/teraterm/buffer.c	2023-06-03 16:56:16 UTC (rev 10736)
@@ -3244,11 +3244,6 @@
 	return move_x;
 }
 
-void BuffPutChar(BYTE b, TCharAttr Attr, BOOL Insert)
-{
-	BuffPutUnicode(b, Attr, Insert);
-}
-
 static BOOL CheckSelect(int x, int y)
 //  subroutine called by BuffUpdateRect
 {

Modified: branches/input_charset/teraterm/teraterm/buffer.h
===================================================================
--- branches/input_charset/teraterm/teraterm/buffer.h	2023-06-03 16:56:06 UTC (rev 10735)
+++ branches/input_charset/teraterm/teraterm/buffer.h	2023-06-03 16:56:16 UTC (rev 10736)
@@ -98,7 +98,6 @@
 wchar_t *BuffCBCopyUnicode(BOOL Table);
 void BuffPrint(BOOL ScrollRegion);
 void BuffDumpCurrentLine(PrintFile *handle, BYTE TERM);
-void BuffPutChar(BYTE b, TCharAttr Attr, BOOL Insert);
 int BuffPutUnicode(unsigned int uc, TCharAttr Attr, BOOL Insert);
 void BuffUpdateRect(int XStart, int YStart, int XEnd, int YEnd);
 void UpdateStr(void);

Modified: branches/input_charset/teraterm/teraterm/charset.c
===================================================================
--- branches/input_charset/teraterm/teraterm/charset.c	2023-06-03 16:56:06 UTC (rev 10735)
+++ branches/input_charset/teraterm/teraterm/charset.c	2023-06-03 16:56:16 UTC (rev 10736)
@@ -70,6 +70,11 @@
 
 static VttermKanjiWork KanjiWork;
 
+// Unicode\x83x\x81[\x83X\x82ɐ؂\xE8\x91ւ\xA6
+static void PutChar(BYTE b)
+{
+	PutU32(b);
+}
 
 /**
  *	ISO2022\x97p\x83\x8F\x81[\x83N\x82\xF0\x8F\x89\x8A\x{227B0B7}\x82\xE9
@@ -492,17 +497,13 @@
 	if (b<=US) {
 		ParseControl(b);
 	} else if ((b>=0x20) && (b<=0x7E)) {
-		//Kanji = 0;
-		//PutKanji(b);
-		PutChar(b);
+		PutU32(b);
 	} else if ((b==0x8E) || (b==0x8F)) {
 		PutChar('?');
 	} else if ((b>=0x80) && (b<=0x9F)) {
 		ParseControl(b);
 	} else if (b>=0xA0) {
-		//Kanji = 0;
-		//PutKanji(b);
-		PutChar(b);
+		PutU32(b);
 	}
 }
 
@@ -800,10 +801,13 @@
 /**
  *	DEC\x93\xC1\x8E\xEA\x83t\x83H\x83\x93\x83g(Tera Special font)
  *	0140(0x60) ... 0176(0x7f) \x82Ɍr\x90\xFC\x82ŃA\x83T\x83C\x83\x93\x82\xB3\x82\xEA\x82Ă\xA2\x82\xE9
+ *      (0xe0) ...     (0xff) \x82\xE0?
  *	<ESC>(0 \x82Ƃ\xA2\x82\xA4\x93\xC1\x8E\xEA\x82ȃG\x83X\x83P\x81[\x83v\x83V\x81[\x83P\x83\x93\x83X\x82Œ\xE8\x8B`
  *	about/emulations.html
  *
  *	@param	b		\x83R\x81[\x83h
+ *	@retval	TRUE	IdSpecial
+ *	@retval	FALSE	IdSpecial\x82ł͂Ȃ\xA2
  */
 BOOL CharSetIsSpecial(BYTE b)
 {

Modified: branches/input_charset/teraterm/teraterm/charset.h
===================================================================
--- branches/input_charset/teraterm/teraterm/charset.h	2023-06-03 16:56:06 UTC (rev 10735)
+++ branches/input_charset/teraterm/teraterm/charset.h	2023-06-03 16:56:16 UTC (rev 10736)
@@ -36,7 +36,6 @@
 void ParseFirst(BYTE b);
 
 // output buffer
-void PutChar(BYTE b);
 void PutU32(unsigned int code);
 void CarriageReturn(BOOL logFlag);
 void LineFeed(BYTE b, BOOL logFlag);

Modified: branches/input_charset/teraterm/teraterm/vtterm.c
===================================================================
--- branches/input_charset/teraterm/teraterm/vtterm.c	2023-06-03 16:56:06 UTC (rev 10735)
+++ branches/input_charset/teraterm/teraterm/vtterm.c	2023-06-03 16:56:16 UTC (rev 10736)
@@ -694,6 +694,11 @@
 	if (NeedsOutputBufs()) OutputLogByte(HT);
 }
 
+static void BuffPutChar(BYTE b, TCharAttr Attr, BOOL Insert)
+{
+	BuffPutUnicode(b, Attr, Insert);
+}
+
 static void RepeatChar(BYTE b, int count)
 {
 	int i;
@@ -742,8 +747,163 @@
 	}
 }
 
-void PutChar(BYTE b)
+/**
+ *	unicode(UTF-32,wchar_t)\x82\xF0\x83o\x83b\x83t\x83@\x82֏\x91\x82\xAB\x8D\x9E\x82\xDE
+ *	\x83\x8D\x83O\x82ɂ\xE0\x8F\x91\x82\xAB\x8D\x9E\x82\xDE
+ *
+ *	PutChar() \x82\xCC UTF-32\x94\xC5
+ */
+void PutU32(unsigned int code)
 {
+	unsigned short cset;
+	int LineEnd;
+
+	TCharAttr CharAttrTmp;
+	CharAttrTmp = CharAttr;
+	if (code <= US) {
+		// U+0000 .. U+001f
+		// C0\x90\xA7\x8C䕶\x8E\x9A, C0 Coontrols
+		ParseControl(code);
+		return;
+	} else if ((0x80<=code) && (code<=0x9F)) {
+		// U+0080 .. u+009f
+		// C1\x90\xA7\x8C䕶\x8E\x9A, C1 Controls
+		ParseControl(code);
+		return;
+	}
+
+	{
+		int r;
+		BOOL SpecialNew = FALSE;
+
+		if (code <= 0xff) {
+			SpecialNew = CharSetIsSpecial(code);
+			if (SpecialNew) {
+				code = code & 0x7F;
+			}
+		}
+
+		// Unicode\x82\xA9\x82\xE7DEC\x93\xC1\x8Eꕶ\x8E\x9A\x82ւ̃}\x83b\x83s\x83\x93\x83O
+		if (SpecialNew == FALSE && ts.UnicodeDecSpMapping) {
+			cset = UTF32ToDecSp(code);
+			if (((cset >> 8) & ts.UnicodeDecSpMapping) != 0) {
+				SpecialNew = TRUE;
+				code = cset & 0xff;
+			}
+		}
+
+		if (SpecialNew != Special) {
+			UpdateStr();
+			Special = SpecialNew;
+		}
+
+		if (Special) {
+			CharAttrTmp.Attr |= AttrSpecial;
+		}
+		else {
+			CharAttrTmp.Attr |= CharAttr.Attr;
+		}
+
+		if (CursorX > CursorRightM)
+			LineEnd = NumOfColumns - 1;
+		else
+			LineEnd = CursorRightM;
+
+		// Wrap\x8F\x88\x97\x9D\x81A\x83J\x81[\x83\\x83\x8B\x88ړ\xAE
+		if (Wrap) {
+			// \x8C\xBB\x8D\xDD Wrap \x8F\xF3\x91\xD4
+			if (!BuffIsCombiningCharacter(CursorX, CursorY, code)) {
+				// \x95\xB6\x8E\x9A\x83R\x81[\x83h\x82\xAA\x8C\x8B\x8D\x87\x95\xB6\x8E\x9A\x82ł͂Ȃ\xA2 = \x83J\x81[\x83\\x83\x8B\x82\xAA\x88ړ\xAE\x82\xB7\x82\xE9
+
+				// \x83J\x81[\x83\\x83\x8B\x88ʒu\x82ɍs\x8Cp\x91\xB1\x83A\x83g\x83\x8A\x83r\x83\x85\x81[\x83g\x82\xF0\x92lj\xC1
+				TCharAttr t = BuffGetCursorCharAttr(CursorX, CursorY);
+				t.Attr |= AttrLineContinued;
+				t.AttrEx = t.Attr;
+				BuffSetCursorCharAttr(CursorX, CursorY, t);
+
+				// \x8Ds\x8Cp\x91\xB1\x83A\x83g\x83\x8A\x83r\x83\x85\x81[\x83g\x82\xF0\x82‚\xAF\x82\xE9
+				CharAttrTmp.Attr |= AttrLineContinued;
+				CharAttrTmp.AttrEx = CharAttrTmp.Attr;
+
+				// \x8E\x9F\x82̍s\x82̍s\x93\xAA\x82\xD6
+				CarriageReturn(FALSE);
+				LineFeed(LF,FALSE);
+			}
+		}
+
+		// \x83o\x83b\x83t\x83@\x82ɕ\xB6\x8E\x9A\x82\xF0\x93\xFC\x82\xEA\x82\xE9
+		//	BuffPutUnicode()\x82\xB5\x82\xBD\x96߂\xE8\x92l\x82ŕ\xB6\x8E\x9A\x82̃Z\x83\x8B\x90\x94\x82\xF0\x92m\x82邱\x82Ƃ\xAA\x82ł\xAB\x82\xE9
+		//		\x83G\x83\x89\x81[\x8E\x9E\x82̓J\x81[\x83\\x83\x8B\x88ʒu\x82\xF0\x8C\x9F\x93\xA2\x82\xB7\x82\xE9
+		CharAttrTmp.AttrEx = CharAttrTmp.Attr;
+	retry:
+		r = BuffPutUnicode(code, CharAttrTmp, InsertMode);
+		if (r == -1) {
+			// \x95\xB6\x8E\x9A\x91S\x8Ap\x82ōs\x96\x96\x81A\x93\xFC\x97͂ł\xAB\x82Ȃ\xA2
+
+			if (AutoWrapMode) {
+				// \x8E\xA9\x93\xAE\x89\xFC\x8Ds
+				// \x81Awrap\x8F\x88\x97\x9D
+				CharAttrTmp = CharAttr;
+				CharAttrTmp.Attr |= AttrLineContinued;
+				CharAttrTmp.AttrEx = CharAttrTmp.Attr | AttrPadding;
+				// AutoWrapMode
+				// ts.EnableContinuedLineCopy
+				//if (CursorX != LineEnd){
+				//&& BuffIsHalfWidthFromCode(&ts, code)) {
+
+				// full width\x8Fo\x97͂\xAA\x94\xBC\x95\xAA\x8Fo\x97͂ɂȂ\xE7\x82Ȃ\xA2\x82悤\x82\xC90x20\x82\xF0\x8Fo\x97\xCD
+				BuffPutUnicode(0x20, CharAttrTmp, FALSE);
+				CharAttrTmp.AttrEx = CharAttrTmp.AttrEx & ~AttrPadding;
+
+				// \x8E\x9F\x82̍s\x82̍s\x93\xAA\x82\xD6
+				CarriageReturn(FALSE);
+				LineFeed(LF,FALSE);
+			}
+			else {
+				// \x8Ds\x93\xAA\x82ɖ߂\xB7
+				CursorX = 0;
+			}
+
+			//CharAttrTmp.Attr &= ~AttrLineContinued;
+			goto retry;
+		}
+		else if (r == 0) {
+			// \x83J\x81[\x83\\x83\x8B\x82̈ړ\xAE\x82Ȃ\xB5,\x8C\x8B\x8D\x87\x95\xB6\x8E\x9A,\x8D\x87\x8E\x9A\x82Ȃ\xC7
+			// Wrap \x82͕ω\xBB\x82\xB5\x82Ȃ\xA2
+			UpdateStr();	// \x81u\x82فv->\x81u\x82ہv\x82ȂǁA\x95ω\xBB\x82\xB7\x82邱\x82Ƃ\xAA\x82\xA0\x82\xE9\x82̂ŕ`\x89悷\x82\xE9
+		} else if (r == 1) {
+			// \x94\xBC\x8Ap(1\x83Z\x83\x8B)
+			if (CursorX + 0 == CursorRightM || CursorX >= NumOfColumns - 1) {
+				UpdateStr();
+				Wrap = AutoWrapMode;
+			} else {
+				MoveRight();
+				Wrap = FALSE;
+			}
+		} else if (r == 2) {
+			// \x91S\x8Ap(2\x83Z\x83\x8B)
+			if (CursorX + 1 == CursorRightM || CursorX + 1 >= NumOfColumns - 1) {
+				MoveRight();	// \x91S\x8Ap\x82̉E\x91\xA4\x82ɃJ\x81[\x83\\x83\x8B\x88ړ\xAE
+				UpdateStr();
+				Wrap = AutoWrapMode;
+			} else {
+				MoveRight();
+				MoveRight();
+				Wrap = FALSE;
+			}
+		}
+		else {
+			assert(FALSE);
+		}
+	}
+
+	// \x83\x8D\x83O\x82\xF0\x8Fo\x97\xCD
+	OutputLogUTF32(code);
+}
+
+#if 0
+static void PutChar(BYTE b)
+{
 	BOOL SpecialNew;
 	TCharAttr CharAttrTmp;
 
@@ -839,6 +999,11 @@
 		MoveRight();
 	}
 }
+#endif
+static void PutChar(BYTE b)
+{
+	PutU32(b);
+}
 
 static void PutDebugChar(BYTE b)
 {
@@ -5224,160 +5389,6 @@
 }
 
 /**
- *	unicode(UTF-32,wchar_t)\x82\xF0\x83o\x83b\x83t\x83@\x82֏\x91\x82\xAB\x8D\x9E\x82\xDE
- *	\x83\x8D\x83O\x82ɂ\xE0\x8F\x91\x82\xAB\x8D\x9E\x82\xDE
- *
- *	PutChar() \x82\xCC UTF-32\x94\xC5
- */
-void PutU32(unsigned int code)
-{
-	unsigned short cset;
-	int LineEnd;
-
-	TCharAttr CharAttrTmp;
-	CharAttrTmp = CharAttr;
-	if (code <= US) {
-		// U+0000 .. U+001f
-		// C0\x90\xA7\x8C䕶\x8E\x9A, C0 Coontrols
-		ParseControl(code);
-		return;
-	} else if ((0x80<=code) && (code<=0x9F)) {
-		// U+0080 .. u+009f
-		// C1\x90\xA7\x8C䕶\x8E\x9A, C1 Controls
-		ParseControl(code);
-		return;
-	}
-
-	{
-		int r;
-		BOOL SpecialNew = FALSE;
-
-		if (code <= 0xff) {
-			SpecialNew = CharSetIsSpecial(code);
-			if (SpecialNew) {
-				code = code & 0x7F;
-			}
-		}
-
-		// Unicode\x82\xA9\x82\xE7DEC\x93\xC1\x8Eꕶ\x8E\x9A\x82ւ̃}\x83b\x83s\x83\x93\x83O
-		if (SpecialNew == FALSE && ts.UnicodeDecSpMapping) {
-			cset = UTF32ToDecSp(code);
-			if (((cset >> 8) & ts.UnicodeDecSpMapping) != 0) {
-				SpecialNew = TRUE;
-				code = cset & 0xff;
-			}
-		}
-
-		if (SpecialNew != Special) {
-			UpdateStr();
-			Special = SpecialNew;
-		}
-
-		if (Special) {
-			CharAttrTmp.Attr |= AttrSpecial;
-		}
-		else {
-			CharAttrTmp.Attr |= CharAttr.Attr;
-		}
-
-		if (CursorX > CursorRightM)
-			LineEnd = NumOfColumns - 1;
-		else
-			LineEnd = CursorRightM;
-
-		// Wrap\x8F\x88\x97\x9D\x81A\x83J\x81[\x83\\x83\x8B\x88ړ\xAE
-		if (Wrap) {
-			// \x8C\xBB\x8D\xDD Wrap \x8F\xF3\x91\xD4
-			if (!BuffIsCombiningCharacter(CursorX, CursorY, code)) {
-				// \x95\xB6\x8E\x9A\x83R\x81[\x83h\x82\xAA\x8C\x8B\x8D\x87\x95\xB6\x8E\x9A\x82ł͂Ȃ\xA2 = \x83J\x81[\x83\\x83\x8B\x82\xAA\x88ړ\xAE\x82\xB7\x82\xE9
-
-				// \x83J\x81[\x83\\x83\x8B\x88ʒu\x82ɍs\x8Cp\x91\xB1\x83A\x83g\x83\x8A\x83r\x83\x85\x81[\x83g\x82\xF0\x92lj\xC1
-				TCharAttr t = BuffGetCursorCharAttr(CursorX, CursorY);
-				t.Attr |= AttrLineContinued;
-				t.AttrEx = t.Attr;
-				BuffSetCursorCharAttr(CursorX, CursorY, t);
-
-				// \x8Ds\x8Cp\x91\xB1\x83A\x83g\x83\x8A\x83r\x83\x85\x81[\x83g\x82\xF0\x82‚\xAF\x82\xE9
-				CharAttrTmp.Attr |= AttrLineContinued;
-				CharAttrTmp.AttrEx = CharAttrTmp.Attr;
-
-				// \x8E\x9F\x82̍s\x82̍s\x93\xAA\x82\xD6
-				CarriageReturn(FALSE);
-				LineFeed(LF,FALSE);
-			}
-		}
-
-		// \x83o\x83b\x83t\x83@\x82ɕ\xB6\x8E\x9A\x82\xF0\x93\xFC\x82\xEA\x82\xE9
-		//	BuffPutUnicode()\x82\xB5\x82\xBD\x96߂\xE8\x92l\x82ŕ\xB6\x8E\x9A\x82̃Z\x83\x8B\x90\x94\x82\xF0\x92m\x82邱\x82Ƃ\xAA\x82ł\xAB\x82\xE9
-		//		\x83G\x83\x89\x81[\x8E\x9E\x82̓J\x81[\x83\\x83\x8B\x88ʒu\x82\xF0\x8C\x9F\x93\xA2\x82\xB7\x82\xE9
-		CharAttrTmp.AttrEx = CharAttrTmp.Attr;
-	retry:
-		r = BuffPutUnicode(code, CharAttrTmp, InsertMode);
-		if (r == -1) {
-			// \x95\xB6\x8E\x9A\x91S\x8Ap\x82ōs\x96\x96\x81A\x93\xFC\x97͂ł\xAB\x82Ȃ\xA2
-
-			if (AutoWrapMode) {
-				// \x8E\xA9\x93\xAE\x89\xFC\x8Ds
-				// \x81Awrap\x8F\x88\x97\x9D
-				CharAttrTmp = CharAttr;
-				CharAttrTmp.Attr |= AttrLineContinued;
-				CharAttrTmp.AttrEx = CharAttrTmp.Attr | AttrPadding;
-				// AutoWrapMode
-				// ts.EnableContinuedLineCopy
-				//if (CursorX != LineEnd){
-				//&& BuffIsHalfWidthFromCode(&ts, code)) {
-
-				// full width\x8Fo\x97͂\xAA\x94\xBC\x95\xAA\x8Fo\x97͂ɂȂ\xE7\x82Ȃ\xA2\x82悤\x82\xC90x20\x82\xF0\x8Fo\x97\xCD
-				BuffPutUnicode(0x20, CharAttrTmp, FALSE);
-				CharAttrTmp.AttrEx = CharAttrTmp.AttrEx & ~AttrPadding;
-
-				// \x8E\x9F\x82̍s\x82̍s\x93\xAA\x82\xD6
-				CarriageReturn(FALSE);
-				LineFeed(LF,FALSE);
-			}
-			else {
-				// \x8Ds\x93\xAA\x82ɖ߂\xB7
-				CursorX = 0;
-			}
-
-			//CharAttrTmp.Attr &= ~AttrLineContinued;
-			goto retry;
-		}
-		else if (r == 0) {
-			// \x83J\x81[\x83\\x83\x8B\x82̈ړ\xAE\x82Ȃ\xB5,\x8C\x8B\x8D\x87\x95\xB6\x8E\x9A,\x8D\x87\x8E\x9A\x82Ȃ\xC7
-			// Wrap \x82͕ω\xBB\x82\xB5\x82Ȃ\xA2
-			UpdateStr();	// \x81u\x82فv->\x81u\x82ہv\x82ȂǁA\x95ω\xBB\x82\xB7\x82邱\x82Ƃ\xAA\x82\xA0\x82\xE9\x82̂ŕ`\x89悷\x82\xE9
-		} else if (r == 1) {
-			// \x94\xBC\x8Ap(1\x83Z\x83\x8B)
-			if (CursorX + 0 == CursorRightM || CursorX >= NumOfColumns - 1) {
-				UpdateStr();
-				Wrap = AutoWrapMode;
-			} else {
-				MoveRight();
-				Wrap = FALSE;
-			}
-		} else if (r == 2) {
-			// \x91S\x8Ap(2\x83Z\x83\x8B)
-			if (CursorX + 1 == CursorRightM || CursorX + 1 >= NumOfColumns - 1) {
-				MoveRight();	// \x91S\x8Ap\x82̉E\x91\xA4\x82ɃJ\x81[\x83\\x83\x8B\x88ړ\xAE
-				UpdateStr();
-				Wrap = AutoWrapMode;
-			} else {
-				MoveRight();
-				MoveRight();
-				Wrap = FALSE;
-			}
-		}
-		else {
-			assert(FALSE);
-		}
-	}
-
-	// \x83\x8D\x83O\x82\xF0\x8Fo\x97\xCD
-	OutputLogUTF32(code);
-}
-
-/**
  *	1byte\x82\xE6\x82݂\xBE\x82\xB5
  *	\x82\xBD\x82\xBE\x82\xB5\x8E\x9F\x82̏ꍇ\x81A\x93ǂݏo\x82\xB5\x82\xF0\x8Ds\x82\xED\x82Ȃ\xA2
  *		- macro\x91\x97\x90M\x83o\x83b\x83t\x83@\x82ɗ]\x97T\x82\xAA\x82Ȃ\xA2


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