OSDN Git Service

読み込み時に行分割を行わず、レタリング時に行分割を行うようにした
[fooeditengine/FooEditEngine.git] / Core / LineToIndex.cs
index ef32a08..1a44990 100644 (file)
@@ -76,6 +76,23 @@ namespace FooEditEngine
         double GetColPostionFromIndex(int index);
 
         /// <summary>
+        /// 座標に対応するインデックスを取得する
+        /// </summary>
+        /// <param name="x">桁方向の座標</param>
+        /// <param name="y">行方向の座標</param>
+        /// <returns>インデックス</returns>
+        /// <remarks>行番号の幅は考慮されてないのでView以外のクラスは呼び出さないでください</remarks>
+        int GetIndexFromPostion(double x, double y);
+
+        /// <summary>
+        /// インデックスに対応する座標を得る
+        /// </summary>
+        /// <param name="index">インデックス</param>
+        /// <returns>行方向と桁方向の相対座標</returns>
+        /// <remarks>行頭にEOFが含まれている場合、0が返ります</remarks>
+        Point GetPostionFromIndex(int index);
+
+        /// <summary>
         /// 適切な位置にインデックスを調整する
         /// </summary>
         /// <param name="index">インデックス</param>
@@ -232,6 +249,7 @@ namespace FooEditEngine
             this.Document.Markers.Updated += Markers_Updated;
             this._generators[FOLDING_INDEX] = new FoldingGenerator();
             this._generators[SYNTAX_HIGLITHER_INDEX] = new SyntaxHilightGenerator();
+            this.WrapWidth = NONE_BREAK_LINE;
 #if DEBUG && !NETFX_CORE
             if (!Debugger.IsAttached)
             {
@@ -319,6 +337,20 @@ namespace FooEditEngine
         }
 
         /// <summary>
+        /// ピクセル単位で折り返すかどうか
+        /// </summary>
+        public double WrapWidth
+        {
+            get;
+            set;
+        }
+
+        /// <summary>
+        /// 行を折り返さないことを表す
+        /// </summary>
+        public const double NONE_BREAK_LINE = -1;
+
+        /// <summary>
         /// 保持しているレイアウトキャッシュをクリアーする
         /// </summary>
         public void ClearLayoutCache()
@@ -651,7 +683,7 @@ namespace FooEditEngine
             LineToIndexTableData lineData = this.Lines[row];
             if (lineData.Length == 0)
             {
-                layout = this.render.CreateLaytout("", null, null, null);
+                layout = this.render.CreateLaytout("", null, null, null,this.WrapWidth);
             }
             else
             {
@@ -674,7 +706,7 @@ namespace FooEditEngine
                                   let n = Util.ConvertAbsIndexToRelIndex(s, lineHeadIndex, lineData.Length)
                                   select n;
 
-                layout = this.render.CreateLaytout(content, lineData.Syntax, markerRange, selectRange);
+                layout = this.render.CreateLaytout(content, lineData.Syntax, markerRange, selectRange,this.WrapWidth);
             }
 
             return layout;