/// <summary> /// <ja>指定位置に指定された数だけの半角スペースを挿入します。</ja> /// <en>The half angle space only of the number specified for a specified position is inserted. </en> /// </summary> /// <param name="start"><ja>削除する開始位置</ja><en>Start position</en></param> /// <param name="count"><ja>挿入する半角スペースの数</ja><en>Count space to insert</en></param> /// <param name="dec"><ja>空白領域のテキスト装飾</ja><en>text decoration for the new empty spaces</en></param> public void InsertBlanks(int start, int count, TextDecoration dec) { TextDecoration fillDec = dec; if (fillDec != null) { fillDec = fillDec.RetainBackColor(); if (fillDec.IsDefault) { fillDec = null; } } for (int i = _text.Length - 1; i >= _caretColumn; i--) { int j = i - count; if (j >= _caretColumn) { _text[i] = _text[j]; _attrs[i] = _attrs[j]; } else { _text[i] = ' '; _attrs[i] = new CharAttr(fillDec, CharGroup.LatinHankaku); } } }
/// 引数と同じ内容で初期化する。lineの内容は破壊されない。 /// 引数がnullのときは引数なしのコンストラクタと同じ結果になる。 /// <summary> /// <ja> /// 引数と同じ内容で初期化します。 /// </ja> /// <en> /// Initialize same as argument. /// </en> /// </summary> /// <param name="cc"> /// <ja> /// 設定するキャレット位置 /// </ja> /// <en> /// The caret position to set. /// </en> /// </param> /// <param name="line"> /// <ja>コピー元となるGLineオブジェクト</ja> /// <en>GLine object that becomes copy origin</en> /// </param> /// <remarks> /// <ja> /// <paramref name="line"/>がnullのときには、引数なしのコンストラクタと同じ結果になります。 /// </ja> /// <en> /// The same results with the constructor who doesn't have the argument when <paramref name="line"/> is null. /// </en> /// </remarks> public void Load(GLine line, int cc) { if (line == null) //これがnullになっているとしか思えないクラッシュレポートがあった。本来はないはずなんだが... { Clear(80); return; } Clear(line.Length); GWord w = line.FirstWord; _text = line.DuplicateBuffer(_text); int n = 0; while (w != null) { int nextoffset = line.GetNextOffset(w); while (n < nextoffset) { _attrs[n++] = new CharAttr(w.Decoration, w.CharGroup); } w = w.Next; } _eolType = line.EOLType; ExpandBuffer(cc + 1); this.CaretColumn = cc; //' 'で埋めることもあるのでプロパティセットを使う }
//得到某一个属性的最终值 public virtual float GetFinalAttr(CharAttr attrName) { switch (attrName) { case CharAttr.Hp: return(GetAttr(CharAttr.Hp) * (1 + GetAttr(CharAttr.HpPer))); case CharAttr.HpMax: return(GetAttr(CharAttr.HpMax) * (1 + GetAttr(CharAttr.HpMaxPer))); case CharAttr.AttackTime: int attackSpeed = GetAttr(CharAttr.AttackSpeed); return((attackSpeed == 0) ? 0 : (1.0f / (attackSpeed * (1 + GetAttr(CharAttr.AttackSpeedPer))))); case CharAttr.AttackSpeed: return(GetAttr(CharAttr.AttackSpeed) * (1 + GetAttr(CharAttr.AttackSpeedPer))); case CharAttr.AttackDamage: return(GetAttr(CharAttr.AttackDamage) * (1 + GetAttr(CharAttr.AttackDamagePer))); case CharAttr.Speed: return(GetAttr(CharAttr.Speed) * (1 + GetAttr(CharAttr.SpeedPer))); default: break; } return(GetAttr(attrName)); }
public void ChangeProtoAttr(object[] param) { CharAttr attrName = (CharAttr)param[1]; int attrNum = (int)param[2]; ChangeAttr(attrName, attrNum); }
void SetAttribute(CharAttr eAttr, int nVal) { switch (eAttr) { case CharAttr.ePhysical: ProPhysical.sliderValue = nVal / (float)nPhysicalUpperLimit; LabPhysical.text = nVal.ToString() + "/" + nPhysicalUpperLimit.ToString(); break; case CharAttr.eEndurance: ProEndurance.sliderValue = nVal / (float)nEnduranceUpperLimit; LabEndurance.text = nVal.ToString() + "/" + nEnduranceUpperLimit.ToString(); break; case CharAttr.eCharm: ProCharm.sliderValue = nVal / (float)nCharmUpperLimit; LabCharm.text = nVal.ToString() + "/" + nCharmUpperLimit.ToString(); break; case CharAttr.eTechnique: ProTechnique.sliderValue = nVal / (float)nTechniqueUpperLimit; LabTechnique.text = nVal.ToString() + "/" + nTechniqueUpperLimit.ToString(); break; } }
/// <summary> /// Converts character attribute to inner string. /// </summary> /// <param name="attr">Character attribute</param> /// <returns></returns> public static string CharAttr2Str(CharAttr attr) { if (_attr2StrMap.TryGetValue(attr, out string str)) { return(str); } return(null); }
/// <summary> /// <ja> /// データをエクスポートします。 /// </ja> /// <en> /// Export the data. /// </en> /// </summary> /// <returns><ja>エクスポートされたGLineオブジェクト</ja><en>Exported GLine object</en></returns> public GLine Export() { GWord firstWord; GWord lastWord; CharAttr firstAttr = _attrs[0]; if (firstAttr.Decoration == null) { firstAttr.Decoration = TextDecoration.Default; } firstWord = lastWord = new GWord(firstAttr.Decoration, 0, firstAttr.CharGroup); int limit = _text.Length; int offset; if (_text[0] == '\0') { offset = 0; } else { CharAttr prevAttr = firstAttr; for (offset = 1; offset < limit; offset++) { char ch = _text[offset]; if (ch == '\0') { break; } else if (ch == GLine.WIDECHAR_PAD) { continue; } CharAttr attr = _attrs[offset]; if (attr.Decoration != prevAttr.Decoration || attr.CharGroup != prevAttr.CharGroup) { if (attr.Decoration == null) { attr.Decoration = TextDecoration.Default; } GWord w = new GWord(attr.Decoration, offset, attr.CharGroup); lastWord.Next = w; lastWord = w; prevAttr = attr; } } } GLine line = new GLine((char[])_text.Clone(), offset, firstWord); line.EOLType = _eolType; return(line); }
//得到某一个属性基础值 public virtual int GetAttr(CharAttr attrName) { int temp = (int)attrName; if (attrList.ContainsKey(temp)) { return(attrList[temp]); } else { return(-1); } }
//设置某个属性值 public void SetAttr(CharAttr attrName, int attrNum) { int temp = (int)attrName; if (attrList.ContainsKey(temp)) { attrList[temp] = attrNum; } else { attrList.Add(temp, attrNum); } }
//改变某个属性 public virtual bool ChangeAttr(CharAttr attrName, int changeNum) { int temp = (int)attrName; if (attrList.ContainsKey(temp)) { attrList[temp] += changeNum; return(true); } else { return(false); } }
//改变某个属性 public virtual bool ChangeAttr(CharAttr attrName, int changeNum) { int temp = (int)attrName; if (attrList.ContainsKey(temp)) { attrList[temp] += changeNum; this.eventDispatcher.Broadcast("ChangeProtoAttr", attrName, changeNum); return(true); } else { return(false); } }
// 全内容を破棄する /// <summary> /// <ja> /// 保持しているテキストをクリアします。 /// </ja> /// <en> /// Clear the held text. /// </en> /// </summary> /// <param name="length"><ja>クリアする長さ</ja><en>Length to clear</en></param> public void Clear(int length) { if (_text == null || length != _text.Length) { _text = new char[length]; _attrs = new CharAttr[length]; } else { for (int i = 0; i < _attrs.Length; i++) { _attrs[i] = new CharAttr(null, CharGroup.LatinHankaku); } for (int i = 0; i < _text.Length; i++) { _text[i] = '\0'; } } _caretColumn = 0; _eolType = EOLType.Continue; }
/// <summary> /// <ja> /// 指定範囲を半角スペースで埋めます。 /// </ja> /// <en> /// Fill the range of specification with space. /// </en> /// </summary> /// <param name="from"><ja>埋める開始位置(この位置を含みます)</ja><en>Start position(include this position)</en></param> /// <param name="to"><ja>埋める終了位置(この位置は含みません)</ja><en>End position(exclude this position)</en></param> /// <param name="dec"><ja>テキスト書式を指定するTextDecorationオブジェクト</ja><en>TextDecoration object that specifies text format /// </en></param> public void FillSpace(int from, int to, TextDecoration dec) { if (to > _text.Length) { to = _text.Length; } TextDecoration fillDec = dec; if (fillDec != null) { fillDec = fillDec.RetainBackColor(); if (fillDec.IsDefault) { fillDec = null; } } for (int i = from; i < to; i++) { _text[i] = ' '; _attrs[i] = new CharAttr(fillDec, CharGroup.LatinHankaku); } }
//startからcount文字を消去して詰める。右端にはnullを入れる /// <summary> /// <ja> /// 指定された場所から指定された文字数を削除し、その後ろを詰めます。 /// </ja> /// <en> /// The number of characters specified from the specified place is deleted, and the furnace is packed afterwards. /// </en> /// </summary> /// <param name="start"><ja>削除する開始位置</ja><en>Start position</en></param> /// <param name="count"><ja>削除する文字数</ja><en>Count to delete</en></param> /// <param name="dec"><ja>末尾の新しい空白領域のテキスト装飾</ja><en>text decoration for the new empty spaces at the tail of the line</en></param> public void DeleteChars(int start, int count, TextDecoration dec) { char fillChar; TextDecoration fillDec = dec; if (fillDec != null) { fillDec = fillDec.RetainBackColor(); if (fillDec.IsDefault) { fillDec = null; fillChar = '\0'; } else { fillChar = ' '; } } else { fillChar = '\0'; } for (int i = start; i < _text.Length; i++) { int j = i + count; if (j < _text.Length) { _text[i] = _text[j]; _attrs[i] = _attrs[j]; } else { _text[i] = fillChar; _attrs[i] = new CharAttr(fillDec, CharGroup.LatinHankaku); } } }
/// <summary> /// <ja> /// 指定位置に1文字書き込みます。 /// </ja> /// <en> /// Write one character to specified position. /// </en> /// </summary> /// <param name="ch"><ja>書き込む文字</ja><en>Character to write.</en></param> /// <param name="dec"><ja>テキスト書式を指定するTextDecorationオブジェクト</ja> /// <en>TextDecoration object that specifies text format /// </en></param> public void PutChar(char ch, TextDecoration dec) { Debug.Assert(dec != null); Debug.Assert(_caretColumn >= 0); Debug.Assert(_caretColumn < _text.Length); char originalChar = Unicode.ToOriginal(ch); CharGroup charGroup = Unicode.GetCharGroup(ch); bool onZenkaku = (_attrs[_caretColumn].CharGroup == CharGroup.CJKZenkaku); bool onZenkakuRight = (_text[_caretColumn] == GLine.WIDECHAR_PAD); if (onZenkaku) { //全角の上に書く if (!onZenkakuRight) { _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 1) { //全角の上に半角を書いた場合、隣にスペースを入れないと表示が乱れる _caretColumn++; if (_caretColumn < _text.Length) { _text[_caretColumn] = ' '; _attrs[_caretColumn].CharGroup = CharGroup.LatinHankaku; } } else { _attrs[_caretColumn + 1] = new CharAttr(dec, charGroup); _caretColumn += 2; } } else { _text[_caretColumn - 1] = ' '; _attrs[_caretColumn - 1].CharGroup = CharGroup.LatinHankaku; _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 2) { if (CharGroupUtil.GetColumnsPerCharacter(_attrs[_caretColumn + 1].CharGroup) == 2) { if (_caretColumn + 2 < _text.Length) { _text[_caretColumn + 2] = ' '; _attrs[_caretColumn + 2].CharGroup = CharGroup.LatinHankaku; } } _text[_caretColumn + 1] = GLine.WIDECHAR_PAD; _attrs[_caretColumn + 1] = _attrs[_caretColumn]; _caretColumn += 2; } else { _caretColumn++; } } } else { //半角の上に書く _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 2) { if (CharGroupUtil.GetColumnsPerCharacter(_attrs[_caretColumn + 1].CharGroup) == 2) { //半角、全角となっているところに全角を書いたら if (_caretColumn + 2 < _text.Length) { _text[_caretColumn + 2] = ' '; _attrs[_caretColumn + 2].CharGroup = CharGroup.LatinHankaku; } } _text[_caretColumn + 1] = GLine.WIDECHAR_PAD; _attrs[_caretColumn + 1] = _attrs[_caretColumn]; _caretColumn += 2; } else { _caretColumn++; //これが最もcommonなケースだが } } }
/// 引数と同じ内容で初期化する。lineの内容は破壊されない。 /// 引数がnullのときは引数なしのコンストラクタと同じ結果になる。 /// <summary> /// <ja> /// 引数と同じ内容で初期化します。 /// </ja> /// <en> /// Initialize same as argument. /// </en> /// </summary> /// <param name="cc"> /// <ja> /// 設定するキャレット位置 /// </ja> /// <en> /// The caret position to set. /// </en> /// </param> /// <param name="line"> /// <ja>コピー元となるGLineオブジェクト</ja> /// <en>GLine object that becomes copy origin</en> /// </param> /// <remarks> /// <ja> /// <paramref name="line"/>がnullのときには、引数なしのコンストラクタと同じ結果になります。 /// </ja> /// <en> /// The same results with the constructor who doesn't have the argument when <paramref name="line"/> is null. /// </en> /// </remarks> public void Load(GLine line, int cc) { if (line == null) { //これがnullになっているとしか思えないクラッシュレポートがあった。本来はないはずなんだが... Clear(80); return; } Clear(line.Length); GWord w = line.FirstWord; _text = line.DuplicateBuffer(_text); int n = 0; while (w != null) { int nextoffset = line.GetNextOffset(w); while (n < nextoffset) { _attrs[n++] = new CharAttr(w.Decoration, w.CharGroup); } w = w.Next; } _eolType = line.EOLType; ExpandBuffer(cc + 1); this.CaretColumn = cc; //' 'で埋めることもあるのでプロパティセットを使う }
/// <summary> /// <ja>指定位置に指定された数だけの半角スペースを挿入します。</ja> /// <en>The half angle space only of the number specified for a specified position is inserted. </en> /// </summary> /// <param name="start"><ja>削除する開始位置</ja><en>Start position</en></param> /// <param name="count"><ja>挿入する半角スペースの数</ja><en>Count space to insert</en></param> /// <param name="dec"><ja>空白領域のテキスト装飾</ja><en>text decoration for the new empty spaces</en></param> public void InsertBlanks(int start, int count, TextDecoration dec) { TextDecoration fillDec = dec; if (fillDec != null) { fillDec = fillDec.RetainBackColor(); if (fillDec.IsDefault) fillDec = null; } for (int i = _text.Length - 1; i >= _caretColumn; i--) { int j = i - count; if (j >= _caretColumn) { _text[i] = _text[j]; _attrs[i] = _attrs[j]; } else { _text[i] = ' '; _attrs[i] = new CharAttr(fillDec, CharGroup.LatinHankaku); } } }
/// <summary> /// <ja> /// 指定範囲を半角スペースで埋めます。 /// </ja> /// <en> /// Fill the range of specification with space. /// </en> /// </summary> /// <param name="from"><ja>埋める開始位置(この位置を含みます)</ja><en>Start position(include this position)</en></param> /// <param name="to"><ja>埋める終了位置(この位置は含みません)</ja><en>End position(exclude this position)</en></param> /// <param name="dec"><ja>テキスト書式を指定するTextDecorationオブジェクト</ja><en>TextDecoration object that specifies text format /// </en></param> public void FillSpace(int from, int to, TextDecoration dec) { if (to > _text.Length) to = _text.Length; TextDecoration fillDec = dec; if (fillDec != null) { fillDec = fillDec.RetainBackColor(); if (fillDec.IsDefault) fillDec = null; } for (int i = from; i < to; i++) { _text[i] = ' '; _attrs[i] = new CharAttr(fillDec, CharGroup.LatinHankaku); } }
public static extern bool SetConsoleTextAttribute(IntPtr ConOut, CharAttr Attributes);
public CharInfo(char @char, CharAttr attributes) : this() { Char = new CharUnion(@char); Attributes = attributes; }
/// <summary> /// <ja> /// 指定位置に1文字書き込みます。 /// </ja> /// <en> /// Write one character to specified position. /// </en> /// </summary> /// <param name="ch"><ja>書き込む文字</ja><en>Character to write.</en></param> /// <param name="dec"><ja>テキスト書式を指定するTextDecorationオブジェクト</ja> /// <en>TextDecoration object that specifies text format /// </en></param> public void PutChar(char ch, TextDecoration dec) { Debug.Assert(dec != null); Debug.Assert(_caretColumn >= 0); Debug.Assert(_caretColumn < _text.Length); char originalChar = Unicode.ToOriginal(ch); CharGroup charGroup = Unicode.GetCharGroup(ch); bool onZenkaku = (_attrs[_caretColumn].CharGroup == CharGroup.CJKZenkaku); bool onZenkakuRight = (_text[_caretColumn] == GLine.WIDECHAR_PAD); if (onZenkaku) { //全角の上に書く if (!onZenkakuRight) { _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 1) { //全角の上に半角を書いた場合、隣にスペースを入れないと表示が乱れる _caretColumn++; if (_caretColumn < _text.Length) { _text[_caretColumn] = ' '; _attrs[_caretColumn].CharGroup = CharGroup.LatinHankaku; } } else { _attrs[_caretColumn + 1] = new CharAttr(dec, charGroup); _caretColumn += 2; } } else { _text[_caretColumn - 1] = ' '; _attrs[_caretColumn - 1].CharGroup = CharGroup.LatinHankaku; _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 2) { if (CharGroupUtil.GetColumnsPerCharacter(_attrs[_caretColumn + 1].CharGroup) == 2) { if (_caretColumn + 2 < _text.Length) { _text[_caretColumn + 2] = ' '; _attrs[_caretColumn + 2].CharGroup = CharGroup.LatinHankaku; } } _text[_caretColumn + 1] = GLine.WIDECHAR_PAD; _attrs[_caretColumn + 1] = _attrs[_caretColumn]; _caretColumn += 2; } else { _caretColumn++; } } } else //半角の上に書く { _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 2) { if (CharGroupUtil.GetColumnsPerCharacter(_attrs[_caretColumn + 1].CharGroup) == 2) //半角、全角となっているところに全角を書いたら { if (_caretColumn + 2 < _text.Length) { _text[_caretColumn + 2] = ' '; _attrs[_caretColumn + 2].CharGroup = CharGroup.LatinHankaku; } } _text[_caretColumn + 1] = GLine.WIDECHAR_PAD; _attrs[_caretColumn + 1] = _attrs[_caretColumn]; _caretColumn += 2; } else { _caretColumn++; //これが最もcommonなケースだが } } }
/// <summary> /// <ja> /// �w��ʒu��1�����������݂܂��B /// </ja> /// <en> /// Write one character to specified position. /// </en> /// </summary> /// <param name="ch"><ja>�������ޕ���</ja><en>Character to write.</en></param> /// <param name="dec"><ja>�e�L�X�g������w�肷��TextDecoration�I�u�W�F�N�g</ja> /// <en>TextDecoration object that specifies text format /// </en></param> public void PutChar(char ch, TextDecoration dec) { Debug.Assert(dec != null); Debug.Assert(_caretColumn >= 0); Debug.Assert(_caretColumn < _text.Length); char originalChar = Unicode.ToOriginal(ch); CharGroup charGroup = Unicode.GetCharGroup(ch); bool onZenkaku = (_attrs[_caretColumn].CharGroup == CharGroup.CJKZenkaku); bool onZenkakuRight = (_text[_caretColumn] == GLine.WIDECHAR_PAD); if (onZenkaku) { //�S�p�̏�ɏ��� if (!onZenkakuRight) { _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 1) { //�S�p�̏�ɔ��p��������ꍇ�A�ׂɃX�y�[�X�����Ȃ��ƕ\��������� _caretColumn++; if (_caretColumn < _text.Length) { _text[_caretColumn] = ' '; _attrs[_caretColumn].CharGroup = CharGroup.LatinHankaku; } } else { _attrs[_caretColumn + 1] = new CharAttr(dec, charGroup); _caretColumn += 2; } } else { _text[_caretColumn - 1] = ' '; _attrs[_caretColumn - 1].CharGroup = CharGroup.LatinHankaku; _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 2) { if (CharGroupUtil.GetColumnsPerCharacter(_attrs[_caretColumn + 1].CharGroup) == 2) { if (_caretColumn + 2 < _text.Length) { _text[_caretColumn + 2] = ' '; _attrs[_caretColumn + 2].CharGroup = CharGroup.LatinHankaku; } } _text[_caretColumn + 1] = GLine.WIDECHAR_PAD; _attrs[_caretColumn + 1] = _attrs[_caretColumn]; _caretColumn += 2; } else { _caretColumn++; } } } else { //���p�̏�ɏ��� _text[_caretColumn] = originalChar; _attrs[_caretColumn] = new CharAttr(dec, charGroup); if (CharGroupUtil.GetColumnsPerCharacter(charGroup) == 2) { if (CharGroupUtil.GetColumnsPerCharacter(_attrs[_caretColumn + 1].CharGroup) == 2) { //���p�A�S�p�ƂȂ��Ă���Ƃ���ɑS�p��������� if (_caretColumn + 2 < _text.Length) { _text[_caretColumn + 2] = ' '; _attrs[_caretColumn + 2].CharGroup = CharGroup.LatinHankaku; } } _text[_caretColumn + 1] = GLine.WIDECHAR_PAD; _attrs[_caretColumn + 1] = _attrs[_caretColumn]; _caretColumn += 2; } else { _caretColumn++; //���ꂪ�ł�common�ȃP�[�X���� } } }
/// �����Ɠ�����e�ŏ���������Bline�̓�e�͔j��Ȃ��B /// ������null�̂Ƃ��͈����Ȃ��̃R���X�g���N�^�Ɠ������ʂɂȂ�B /// <summary> /// <ja> /// �����Ɠ�����e�ŏ��������܂��B /// </ja> /// <en> /// Initialize same as argument. /// </en> /// </summary> /// <param name="cc"> /// <ja> /// �ݒ肷��L�����b�g�ʒu /// </ja> /// <en> /// The caret position to set. /// </en> /// </param> /// <param name="line"> /// <ja>�R�s�[���ƂȂ�GLine�I�u�W�F�N�g</ja> /// <en>GLine object that becomes copy origin</en> /// </param> /// <remarks> /// <ja> /// <paramref name="line"/>��null�̂Ƃ��ɂ́A�����Ȃ��̃R���X�g���N�^�Ɠ������ʂɂȂ�܂��B /// </ja> /// <en> /// The same results with the constructor who doesn't have the argument when <paramref name="line"/> is null. /// </en> /// </remarks> public void Load(GLine line, int cc) { if (line == null) { //���ꂪnull�ɂȂ��Ă���Ƃ����v���Ȃ��N���b�V�����|�[�g���������B�{���͂Ȃ��͂��Ȃ�... Clear(80); return; } Clear(line.Length); GWord w = line.FirstWord; _text = line.DuplicateBuffer(_text); int n = 0; while (w != null) { int nextoffset = line.GetNextOffset(w); while (n < nextoffset) { _attrs[n++] = new CharAttr(w.Decoration, w.CharGroup); } w = w.Next; } _eolType = line.EOLType; ExpandBuffer(cc + 1); this.CaretColumn = cc; //' '�Ŗ��߂邱�Ƃ����̂Ńv���p�e�B�Z�b�g��g�� }