public static ListViewShared.ListViewElementsEnumerator DoListView(Rect pos, ListViewState state, int[] colWidths, string dragTitle)
{
Rect rect;
int controlID = GUIUtility.GetControlID(listViewHash, FocusType.Passive);
state.ID = controlID;
state.selectionChanged = false;
if ((GUIClip.visibleRect.x < 0f) || (GUIClip.visibleRect.y < 0f))
{
rect = pos;
}
else
{
rect = (pos.y >= 0f) ? new Rect(0f, state.scrollPos.y, GUIClip.visibleRect.width, GUIClip.visibleRect.height) : new Rect(0f, 0f, GUIClip.visibleRect.width, GUIClip.visibleRect.height);
}
if (rect.width <= 0f)
{
rect.width = 1f;
}
if (rect.height <= 0f)
{
rect.height = 1f;
}
ilvState.rect = rect;
int yFrom = (int) ((-pos.y + rect.yMin) / ((float) state.rowHeight));
int yTo = (yFrom + ((int) Math.Ceiling((double) ((((rect.yMin - pos.y) % ((float) state.rowHeight)) + rect.height) / ((float) state.rowHeight))))) - 1;
if (colWidths == null)
{
dummyWidths[0] = (int) rect.width;
colWidths = dummyWidths;
}
ilvState.invisibleRows = yFrom;
ilvState.endRow = yTo;
ilvState.rectHeight = (int) rect.height;
ilvState.state = state;
if (yFrom < 0)
{
yFrom = 0;
}
if (yTo >= state.totalRows)
{
yTo = state.totalRows - 1;
}
return new ListViewShared.ListViewElementsEnumerator(ilvState, colWidths, yFrom, yTo, dragTitle, new Rect(0f, (float) (yFrom * state.rowHeight), pos.width, (float) state.rowHeight));
}