TextField.CharPosition GetCharPosition(Vector2 location)
{
TextField.CharPosition result = new TextField.CharPosition();
if (textField.charPositions.Count == 0)
{
result.lineIndex = 0;
result.caretIndex = 0;
return result;
}
location.x -= textField.x;
location.y -= textField.y;
List<TextField.LineInfo> lines = textField.lines;
int len = lines.Count;
TextField.LineInfo line;
int i;
for (i = 0; i < len; i++)
{
line = lines[i];
if (line.y + line.height > location.y)
break;
}
if (i == len)
i = len - 1;
result.lineIndex = (short)i;
len = textField.charPositions.Count;
TextField.CharPosition v;
int firstInLine = -1;
for (i = 0; i < len; i++)
{
v = textField.charPositions[i];
if (v.lineIndex == result.lineIndex)
{
if (firstInLine == -1)
firstInLine = i;
if (v.offsetX > location.x)
{
if (i > firstInLine)
{
//最后一个字符有点难点
if (v.offsetX - location.x < 2)
result.caretIndex = i;
else
result.caretIndex = i - 1;
}
else
result.caretIndex = firstInLine;
return result;
}
}
else if (firstInLine != -1)
break;
}
result.caretIndex = i - 1;
return result;
}