public override EditableRunCharLocation GetCharacterFromPixelOffset(int pixelOffset)
{
if (pixelOffset < Width)
{
int j = glyphPositions.Length;
int accWidth = 0;
for (int i = 0; i < j; i++)
{
int charW = glyphPositions[i];
if (accWidth + charW > pixelOffset)
{
if (pixelOffset - accWidth > 3)
{
return new EditableRunCharLocation(accWidth + charW, i);
}
else
{
return new EditableRunCharLocation(accWidth, i - 1);
}
}
else
{
accWidth += charW;
}
//char c = myBuffer[i];
//int charW = GetCharacterWidth(c);
//if (accWidth + charW > pixelOffset)
//{
// if (pixelOffset - accWidth > 3)
// {
// return new EditableRunCharLocation(accWidth + charW, i);
// }
// else
// {
// return new EditableRunCharLocation(accWidth, i - 1);
// }
//}
//else
//{
// accWidth += charW;
//}
}
return new EditableRunCharLocation(accWidth, j - 1);
}
else
{
return new EditableRunCharLocation(0, -1);
}
}
//-------------------------------------------