| 1 |
/* |
/* |
| 2 |
* Copyright (C) 1994-1998 T. Teranishi |
* Copyright (C) 1994-1998 T. Teranishi |
| 3 |
* (C) 2004-2019 TeraTerm Project |
* (C) 2004-2020 TeraTerm Project |
| 4 |
* All rights reserved. |
* All rights reserved. |
| 5 |
* |
* |
| 6 |
* Redistribution and use in source and binary forms, with or without |
* Redistribution and use in source and binary forms, with or without |
| 5819 |
else |
else |
| 5820 |
LineEnd = CursorRightM; |
LineEnd = CursorRightM; |
| 5821 |
|
|
| 5822 |
|
// Wrap処理、カーソル移動 |
| 5823 |
if (Wrap) { |
if (Wrap) { |
| 5824 |
TCharAttr t = BuffGetCursorCharAttr(CursorX, CursorY); |
// 現在 Wrap 状態 |
| 5825 |
t.Attr |= AttrLineContinued; |
if (!BuffIsCombiningCharacter(CursorX, CursorY, code)) { |
| 5826 |
t.AttrEx = t.Attr; |
// 文字コードが結合文字ではない = カーソルが移動する |
| 5827 |
BuffSetCursorCharAttr(CursorX, CursorY, t); |
|
| 5828 |
CarriageReturn(FALSE); |
// カーソル位置に行継続アトリビュートを追加 |
| 5829 |
LineFeed(LF,FALSE); |
TCharAttr t = BuffGetCursorCharAttr(CursorX, CursorY); |
| 5830 |
CharAttrTmp.Attr |= AttrLineContinued; |
t.Attr |= AttrLineContinued; |
| 5831 |
CharAttrTmp.AttrEx = CharAttrTmp.Attr; |
t.AttrEx = t.Attr; |
| 5832 |
|
BuffSetCursorCharAttr(CursorX, CursorY, t); |
| 5833 |
|
|
| 5834 |
|
// 行継続アトリビュートをつける |
| 5835 |
|
CharAttrTmp.Attr |= AttrLineContinued; |
| 5836 |
|
CharAttrTmp.AttrEx = CharAttrTmp.Attr; |
| 5837 |
|
|
| 5838 |
|
// 次の行の行頭へ |
| 5839 |
|
CarriageReturn(FALSE); |
| 5840 |
|
LineFeed(LF,FALSE); |
| 5841 |
|
} |
| 5842 |
} |
} |
| 5843 |
|
|
| 5844 |
|
// バッファに文字を入れる |
| 5845 |
// BuffPutUnicode()した戻り値で文字のセル数を知ることができる |
// BuffPutUnicode()した戻り値で文字のセル数を知ることができる |
| 5846 |
// エラー時はカーソル位置を検討する |
// エラー時はカーソル位置を検討する |
|
Wrap = FALSE; |
|
| 5847 |
is_update = FALSE; |
is_update = FALSE; |
| 5848 |
CharAttrTmp.AttrEx = CharAttrTmp.Attr; |
CharAttrTmp.AttrEx = CharAttrTmp.Attr; |
| 5849 |
retry: |
retry: |
| 5866 |
BuffPutUnicode(0x20, CharAttrTmp, FALSE); |
BuffPutUnicode(0x20, CharAttrTmp, FALSE); |
| 5867 |
CharAttrTmp.AttrEx = CharAttrTmp.AttrEx & ~AttrPadding; |
CharAttrTmp.AttrEx = CharAttrTmp.AttrEx & ~AttrPadding; |
| 5868 |
|
|
| 5869 |
|
// 次の行の行頭へ |
| 5870 |
CarriageReturn(FALSE); |
CarriageReturn(FALSE); |
| 5871 |
LineFeed(LF,FALSE); |
LineFeed(LF,FALSE); |
| 5872 |
} |
} |
| 5879 |
goto retry; |
goto retry; |
| 5880 |
} |
} |
| 5881 |
else if (r == 0) { |
else if (r == 0) { |
| 5882 |
// カーソルの移動なし,合字など |
// カーソルの移動なし,結合文字,合字など |
| 5883 |
; |
// Wrap は変化しない |
| 5884 |
|
UpdateStr(); // 「ほ」->「ぽ」など、変化することがあるので描画する |
| 5885 |
} else if (r == 1) { |
} else if (r == 1) { |
| 5886 |
// 半角(1セル) |
// 半角(1セル) |
| 5887 |
if (CursorX + 0 == CursorRightM || CursorX >= NumOfColumns - 1) { |
if (CursorX + 0 == CursorRightM || CursorX >= NumOfColumns - 1) { |
| 5889 |
Wrap = AutoWrapMode; |
Wrap = AutoWrapMode; |
| 5890 |
} else { |
} else { |
| 5891 |
MoveRight(); |
MoveRight(); |
| 5892 |
|
Wrap = FALSE; |
| 5893 |
} |
} |
| 5894 |
} else if (r == 2) { |
} else if (r == 2) { |
| 5895 |
// 全角(2セル) |
// 全角(2セル) |
| 5900 |
} else { |
} else { |
| 5901 |
MoveRight(); |
MoveRight(); |
| 5902 |
MoveRight(); |
MoveRight(); |
| 5903 |
|
Wrap = FALSE; |
| 5904 |
} |
} |
| 5905 |
} |
} |
| 5906 |
else { |
else { |