public float GetPosition(float tabPosition, float currentPosition, float anchorPosition)
{
float newPosition = position;
float textWidth = currentPosition - tabPosition;
switch (alignment)
{
case Alignment.RIGHT:
if (tabPosition + textWidth < position)
{
newPosition = position - textWidth;
}
else
{
newPosition = tabPosition;
}
break;
case Alignment.CENTER:
if (tabPosition + textWidth / 2f < position)
{
newPosition = position - textWidth / 2f;
}
else
{
newPosition = tabPosition;
}
break;
case Alignment.ANCHOR:
if (!float.IsNaN(anchorPosition))
{
if (anchorPosition < position)
{
newPosition = position - (anchorPosition - tabPosition);
}
else
{
newPosition = tabPosition;
}
}
else
{
if (tabPosition + textWidth < position)
{
newPosition = position - textWidth;
}
else
{
newPosition = tabPosition;
}
}
break;
}
return newPosition;
}
}