Lines Matching defs:columns
1098 ColumnsMinSpacing = 6.0f; // Minimum horizontal spacing between two columns
8162 ImGuiColumnsSet* columns = window->DC.ColumnsSet;
8163 columns->LineMaxY = ImMax(columns->LineMaxY, window->DC.CursorPos.y);
8164 if (++columns->Current < columns->Count)
8167 window->DC.ColumnsOffset.x = GetColumnOffset(columns->Current) - window->DC.Indent.x + g.Style.ItemSpacing.x;
8168 window->DrawList->ChannelsSetCurrent(columns->Current);
8174 columns->Current = 0;
8175 columns->LineMinY = columns->LineMaxY;
8178 window->DC.CursorPos.y = columns->LineMinY;
8183 PushItemWidth(GetColumnWidth() * 0.65f); // FIXME: Move on columns setup
8198 static float OffsetNormToPixels(const ImGuiColumnsSet* columns, float offset_norm)
8200 return offset_norm * (columns->MaxX - columns->MinX);
8203 static float PixelsToOffsetNorm(const ImGuiColumnsSet* columns, float offset)
8205 return offset / (columns->MaxX - columns->MinX);
8210 static float GetDraggedColumnOffset(ImGuiColumnsSet* columns, int column_index)
8217 IM_ASSERT(g.ActiveId == columns->ID + ImGuiID(column_index));
8221 if ((columns->Flags & ImGuiColumnsFlags_NoPreserveWidths))
8230 ImGuiColumnsSet* columns = window->DC.ColumnsSet;
8231 IM_ASSERT(columns != NULL);
8234 column_index = columns->Current;
8235 IM_ASSERT(column_index < columns->Columns.Size);
8237 const float t = columns->Columns[column_index].OffsetNorm;
8238 const float x_offset = ImLerp(columns->MinX, columns->MaxX, t);
8242 static float GetColumnWidthEx(ImGuiColumnsSet* columns, int column_index, bool before_resize = false)
8245 column_index = columns->Current;
8249 offset_norm = columns->Columns[column_index + 1].OffsetNormBeforeResize - columns->Columns[column_index].OffsetNormBeforeResize;
8251 offset_norm = columns->Columns[column_index + 1].OffsetNorm - columns->Columns[column_index].OffsetNorm;
8252 return OffsetNormToPixels(columns, offset_norm);
8258 ImGuiColumnsSet* columns = window->DC.ColumnsSet;
8259 IM_ASSERT(columns != NULL);
8262 column_index = columns->Current;
8263 return OffsetNormToPixels(columns, columns->Columns[column_index + 1].OffsetNorm - columns->Columns[column_index].OffsetNorm);
8270 ImGuiColumnsSet* columns = window->DC.ColumnsSet;
8271 IM_ASSERT(columns != NULL);
8274 column_index = columns->Current;
8275 IM_ASSERT(column_index < columns->Columns.Size);
8277 const bool preserve_width = !(columns->Flags & ImGuiColumnsFlags_NoPreserveWidths) && (column_index < columns->Count-1);
8278 const float width = preserve_width ? GetColumnWidthEx(columns, column_index, columns->IsBeingResized) : 0.0f;
8280 if (!(columns->Flags & ImGuiColumnsFlags_NoForceWithinWindow))
8281 offset = ImMin(offset, columns->MaxX - g.Style.ColumnsMinSpacing * (columns->Count - column_index));
8282 columns->Columns[column_index].OffsetNorm = PixelsToOffsetNorm(columns, offset - columns->MinX);
8291 ImGuiColumnsSet* columns = window->DC.ColumnsSet;
8292 IM_ASSERT(columns != NULL);
8295 column_index = columns->Current;
8302 ImGuiColumnsSet* columns = window->DC.ColumnsSet;
8304 column_index = columns->Current;
8306 PushClipRect(columns->Columns[column_index].ClipRect.Min, columns->Columns[column_index].ClipRect.Max, false);
8316 ImGuiColumnsSet* columns = &window->ColumnsStorage.back();
8317 columns->ID = id;
8318 return columns;
8327 IM_ASSERT(window->DC.ColumnsSet == NULL); // Nested columns are currently not supported
8329 // Differentiate column ID with an arbitrary prefix for cases where users name their columns set the same as another widget.
8330 // In addition, when an identifier isn't explicitly provided we include the number of columns in the hash to make it uniquer.
8332 ImGuiID id = window->GetID(str_id ? str_id : "columns");
8335 // Acquire storage for the columns set
8336 ImGuiColumnsSet* columns = FindOrAddColumnsSet(window, id);
8337 IM_ASSERT(columns->ID == id);
8338 columns->Current = 0;
8339 columns->Count = columns_count;
8340 columns->Flags = flags;
8341 window->DC.ColumnsSet = columns;
8345 columns->MinX = window->DC.Indent.x - g.Style.ItemSpacing.x; // Lock our horizontal range
8346 columns->MaxX = ImMax(content_region_width - window->Scroll.x, columns->MinX + 1.0f);
8347 columns->StartPosY = window->DC.CursorPos.y;
8348 columns->StartMaxPosX = window->DC.CursorMaxPos.x;
8349 columns->LineMinY = columns->LineMaxY = window->DC.CursorPos.y;
8353 // Clear data if columns count changed
8354 if (columns->Columns.Size != 0 && columns->Columns.Size != columns_count + 1)
8355 columns->Columns.resize(0);
8358 columns->IsFirstFrame = (columns->Columns.Size == 0);
8359 if (columns->Columns.Size == 0)
8361 columns->Columns.reserve(columns_count + 1);
8366 columns->Columns.push_back(column);
8373 ImGuiColumnData* column = &columns->Columns[n];
8380 window->DrawList->ChannelsSplit(columns->Count);
8389 ImGuiColumnsSet* columns = window->DC.ColumnsSet;
8390 IM_ASSERT(columns != NULL);
8396 columns->LineMaxY = ImMax(columns->LineMaxY, window->DC.CursorPos.y);
8397 window->DC.CursorPos.y = columns->LineMaxY;
8398 if (!(columns->Flags & ImGuiColumnsFlags_GrowParentContentsSize))
8399 window->DC.CursorMaxPos.x = columns->StartMaxPosX; // Restore cursor max pos, as columns don't grow parent
8401 // Draw columns borders and handle resize
8403 if (!(columns->Flags & ImGuiColumnsFlags_NoBorder) && !window->SkipItems)
8405 const float y1 = columns->StartPosY;
8408 for (int n = 1; n < columns->Count; n++)
8411 const ImGuiID column_id = columns->ID + ImGuiID(n);
8419 if (!(columns->Flags & ImGuiColumnsFlags_NoResize))
8424 if (held && !(columns->Columns[n].Flags & ImGuiColumnsFlags_NoResize))
8437 if (!columns->IsBeingResized)
8438 for (int n = 0; n < columns->Count + 1; n++)
8439 columns->Columns[n].OffsetNormBeforeResize = columns->Columns[n].OffsetNorm;
8440 columns->IsBeingResized = is_being_resized = true;
8441 float x = GetDraggedColumnOffset(columns, dragging_column);
8445 columns->IsBeingResized = is_being_resized;
9408 const ImGuiColumnsSet* columns = &window->ColumnsStorage[n];
9409 if (ImGui::TreeNode((void*)(uintptr_t)columns->ID, "Columns Id: 0x%08X, Count: %d, Flags: 0x%04X", columns->ID, columns->Count, columns->Flags))
9411 ImGui::BulletText("Width: %.1f (MinX: %.1f, MaxX: %.1f)", columns->MaxX - columns->MinX, columns->MinX, columns->MaxX);
9412 for (int column_n = 0; column_n < columns->Columns.Size; column_n++)
9413 ImGui::BulletText("Column %02d: OffsetNorm %.3f (= %.1f px)", column_n, columns->Columns[column_n].OffsetNorm, OffsetNormToPixels(columns, columns->Columns[column_n].OffsetNorm));