コード例 #1
0
 public static int EolIndex(this Paragraph para, int line)
 {
     if (para.Breaks.Count == 0)
     {
         return(para.Length - 1);
     }
     BreakList.Node n = para.Breaks.Head;
     n = n.Skip(line);
     if (n == null)
     {
         return(para.Length - 1);
     }
     return(n.Value - 1);
 }
コード例 #2
0
 public static int PositionAtLineIndex(this Paragraph para, int col, int line)
 {
     if (para.Breaks.Count == 0)
     {
         return(col.Clamp(0, para.Length - 1));
     }
     BreakList.Node n = para.Breaks.Head;
     if (line == 0)
     {
         return(col.Clamp(0, n.Value - 1));
     }
     n = n.Skip(line - 1);
     if (n == null)
     {
         return(para.Length - 1);
     }
     if (n.Next == null)
     {
         return(Math.Min(n.Value + col, para.Length - 1));
     }
     return(Math.Min(n.Value + col, n.Next.Value - 1));
 }