public final class ImGuiListClipper
extends java.lang.Object
ImGuiListClipper clipper;
clipper.Begin(1000); // We have 1000 elements, evenly spaced.
while (clipper.Step())
for (int i = clipper.DisplayStart; i <
clipper.DisplayEnd; i++)
ImGui::Text("line number %d", i);
Generally what happens is:
- Clipper lets you process the first element (DisplayStart = 0, DisplayEnd = 1) regardless of it being visible or not.
- User code submit one element.
- Clipper can measure the height of the first element
- Clipper calculate the actual range of elements to display based on the current clipping rectangle, position the cursor before the first visible element.
- User code submit visible elements.
- The clipper also handles various subtleties related to keyboard/gamepad navigation, wrapping etc.
BINDING NOTICE:
It's impossible to implement the same API like in the original. Method forEach(int, int, ImListClipperCallback)
could be used instead.
ImGuiListClipper.forEach(1000, new ImListClipperCallback() { public void accept(int index) { ImGui.text(String.format("line number %d", index)); } });
Modifier and Type | Method and Description |
---|---|
static void |
forEach(int itemsCount,
ImListClipperCallback callback) |
static void |
forEach(int itemsCount,
int itemsHeight,
ImListClipperCallback callback) |
public static void forEach(int itemsCount, ImListClipperCallback callback)
itemsCount
- Use -1 to ignore (you can call Begin later).
Use INT_MAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step).callback
- action to do in iterationspublic static void forEach(int itemsCount, int itemsHeight, ImListClipperCallback callback)
itemsCount
- Use -1 to ignore (you can call Begin later).
Use INT_MAX if you don't know how many items you have (in which case the cursor won't be advanced in the final step).itemsHeight
- Use -1.0f to be calculated automatically on first step.
Otherwise pass in the distance between your items, typically GetTextLineHeightWithSpacing() or GetFrameHeightWithSpacing().callback
- action to do in iterations