OSDN Git Service

行を生成するメソッドをLineToIndexTableに移動した
[fooeditengine/FooEditEngine.git] / Core / Document.cs
index 526bfec..67fcf1f 100644 (file)
@@ -189,9 +189,6 @@ namespace FooEditEngine
             this.Markers = new MarkerCollection();
             this.UndoManager = new UndoManager();
             this._LayoutLines = new LineToIndexTable(this);
-            this._LayoutLines.SpilitString = (s,e)=> {
-                return this.CreateLineList(e.index, e.length, MaximumLineLength);
-            };
             this._LayoutLines.Clear();
             this.MarkerPatternSet = new MarkerPatternSet(this._LayoutLines, this.Markers);
             this.MarkerPatternSet.Updated += WacthDogPattern_Updated;
@@ -615,34 +612,6 @@ namespace FooEditEngine
             }
         }
 
-        /// <summary>
-        /// レイアウト行を返す
-        /// </summary>
-        /// <param name="index">開始インデックス</param>
-        /// <param name="length">長さ</param>
-        /// <param name="lineLimitLength">1行当たりの最大文字数。-1で無制限</param>
-        /// <returns>レイアウト行リスト</returns>
-        internal IList<LineToIndexTableData> CreateLineList(int index, int length, int lineLimitLength = -1)
-        {
-            int startIndex = index;
-            int endIndex = index + length - 1;
-            List<LineToIndexTableData> output = new List<LineToIndexTableData>();
-
-            foreach (Tuple<int, int> range in this.ForEachLines(startIndex, endIndex, lineLimitLength))
-            {
-                int lineHeadIndex = range.Item1;
-                int lineLength = range.Item2;
-                char c = this.buffer[lineHeadIndex + lineLength - 1];
-                bool hasNewLine = c == Document.NewLine;
-                output.Add(this.LayoutLines.CreateLineToIndexTableData(lineHeadIndex, lineLength, hasNewLine, null));
-            }
-
-            if (output.Count > 0)
-                output.Last().LineEnd = true;
-
-            return output;
-        }
-
         internal void FireUpdate(DocumentUpdateEventArgs e)
         {
             this.buffer_Update(this.buffer, e);
@@ -1057,15 +1026,19 @@ namespace FooEditEngine
         /// <returns>行イテレーターが返される</returns>
         public IEnumerable<string> GetLines(int startIndex, int endIndex, int maxCharCount = -1)
         {
-            return this.buffer.GetLines(startIndex, endIndex, maxCharCount);
-        }
-
-        internal IEnumerable<Tuple<int, int>> ForEachLines(int startIndex, int endIndex, int maxCharCount = -1)
-        {
-            return this.buffer.ForEachLines(startIndex, endIndex, maxCharCount);
+            foreach (Tuple<int, int> range in this.LayoutLines.ForEachLines(startIndex, endIndex, maxCharCount))
+            {
+                StringBuilder temp = new StringBuilder();
+                temp.Clear();
+                int lineEndIndex = range.Item1;
+                if (range.Item2 > 0)
+                    lineEndIndex += range.Item2 - 1;
+                for (int i = range.Item1; i <= lineEndIndex; i++)
+                    temp.Append(this.buffer[i]);
+                yield return temp.ToString();
+            }
         }
 
-
         /// <summary>
         /// 文字列を追加する
         /// </summary>