LayoutFarm.Text.EditableTextLine.GetTextPointInfoFromCaretPoint C# (CSharp) 메소드

GetTextPointInfoFromCaretPoint() 공개 메소드

public GetTextPointInfoFromCaretPoint ( int caretX ) : VisualPointInfo
caretX int
리턴 VisualPointInfo
        public VisualPointInfo GetTextPointInfoFromCaretPoint(int caretX)
        {
            int accTextRunWidth = 0; int accTextRunCharCount = 0;
            EditableRun lastestTextRun = null;
            foreach (EditableRun t in this)
            {
                lastestTextRun = t;
                int thisTextRunWidth = t.Width;
                if (accTextRunWidth + thisTextRunWidth > caretX)
                {
                    EditableRunCharLocation localPointInfo = t.GetCharacterFromPixelOffset(caretX - thisTextRunWidth);
                    EditableVisualPointInfo pointInfo =
                        new EditableVisualPointInfo(this, accTextRunCharCount + localPointInfo.charIndex);
                    pointInfo.SetAdditionVisualInfo(t, accTextRunCharCount, caretX, accTextRunWidth);
                    return pointInfo;
                }
                else
                {
                    accTextRunWidth += thisTextRunWidth;
                    accTextRunCharCount += t.CharacterCount;
                }
            }
            if (lastestTextRun != null)
            {
                return null;
            }
            else
            {
                EditableVisualPointInfo pInfo = new EditableVisualPointInfo(this, -1);
                pInfo.SetAdditionVisualInfo(null, accTextRunCharCount, caretX, accTextRunWidth);
                return pInfo;
            }
        }

Usage Example

 public VisualPointInfo FindTextRunOnPosition(int x, int y)
 {
     if (y < 0)
     {
         return(null);
     }
     else
     {
         int j = textLineWriter.LineCount;
         if (j > 0)
         {
             EditableTextLine textLine = textLineWriter.GetTextLineAtPos(y);
             if (textLine != null)
             {
                 return(textLine.GetTextPointInfoFromCaretPoint(x));
             }
         }
         return(null);
     }
 }