Prusa Slicer 2.6.0
Loading...
Searching...
No Matches
imgui_tables.cpp File Reference
#include "imgui.h"
#include "imgui_internal.h"
#include <stdint.h>
+ Include dependency graph for imgui_tables.cpp:

Go to the source code of this file.

Macros

#define IMGUI_DEFINE_MATH_OPERATORS
 

Functions

ImGuiTableFlags TableFixFlags (ImGuiTableFlags flags, ImGuiWindow *outer_window)
 
static void TableSetupColumnFlags (ImGuiTable *table, ImGuiTableColumn *column, ImGuiTableColumnFlags flags_in)
 
static ImGuiSortDirection TableGetColumnAvailSortDirection (ImGuiTableColumn *column, int n)
 
 IM_STATIC_ASSERT (ImGuiSortDirection_None==0 &&ImGuiSortDirection_Ascending==1 &&ImGuiSortDirection_Descending==2)
 
static void TableSettingsInit (ImGuiTableSettings *settings, ImGuiID id, int columns_count, int columns_count_max)
 
static size_t TableSettingsCalcChunkSize (int columns_count)
 
static void TableSettingsHandler_ClearAll (ImGuiContext *ctx, ImGuiSettingsHandler *)
 
static void TableSettingsHandler_ApplyAll (ImGuiContext *ctx, ImGuiSettingsHandler *)
 
static voidTableSettingsHandler_ReadOpen (ImGuiContext *, ImGuiSettingsHandler *, const char *name)
 
static void TableSettingsHandler_ReadLine (ImGuiContext *, ImGuiSettingsHandler *, void *entry, const char *line)
 
static void TableSettingsHandler_WriteAll (ImGuiContext *ctx, ImGuiSettingsHandler *handler, ImGuiTextBuffer *buf)
 
static const char * DebugNodeTableGetSizingPolicyDesc (ImGuiTableFlags sizing_policy)
 
static float GetDraggedColumnOffset (ImGuiOldColumns *columns, int column_index)
 
static float GetColumnWidthEx (ImGuiOldColumns *columns, int column_index, bool before_resize=false)
 

Variables

static const int TABLE_DRAW_CHANNEL_BG0 = 0
 
static const int TABLE_DRAW_CHANNEL_BG2_FROZEN = 1
 
static const int TABLE_DRAW_CHANNEL_NOCLIP = 2
 
static const float TABLE_BORDER_SIZE = 1.0f
 
static const float TABLE_RESIZE_SEPARATOR_HALF_THICKNESS = 4.0f
 
static const float TABLE_RESIZE_SEPARATOR_FEEDBACK_TIMER = 0.06f
 
static const float COLUMNS_HIT_RECT_HALF_WIDTH = 4.0f
 

Macro Definition Documentation

◆ IMGUI_DEFINE_MATH_OPERATORS

#define IMGUI_DEFINE_MATH_OPERATORS

Function Documentation

◆ DebugNodeTableGetSizingPolicyDesc()

static const char * DebugNodeTableGetSizingPolicyDesc ( ImGuiTableFlags  sizing_policy)
static
3488{
3489 sizing_policy &= ImGuiTableFlags_SizingMask_;
3490 if (sizing_policy == ImGuiTableFlags_SizingFixedFit) { return "FixedFit"; }
3491 if (sizing_policy == ImGuiTableFlags_SizingFixedSame) { return "FixedSame"; }
3492 if (sizing_policy == ImGuiTableFlags_SizingStretchProp) { return "StretchProp"; }
3493 if (sizing_policy == ImGuiTableFlags_SizingStretchSame) { return "StretchSame"; }
3494 return "N/A";
3495}
@ ImGuiTableFlags_SizingFixedSame
Definition imgui.h:1131
@ ImGuiTableFlags_SizingMask_
Definition imgui.h:1153
@ ImGuiTableFlags_SizingStretchSame
Definition imgui.h:1133
@ ImGuiTableFlags_SizingStretchProp
Definition imgui.h:1132
@ ImGuiTableFlags_SizingFixedFit
Definition imgui.h:1130

References ImGuiTableFlags_SizingFixedFit, ImGuiTableFlags_SizingFixedSame, ImGuiTableFlags_SizingMask_, ImGuiTableFlags_SizingStretchProp, and ImGuiTableFlags_SizingStretchSame.

Referenced by ImGui::DebugNodeTable().

+ Here is the caller graph for this function:

◆ GetColumnWidthEx()

static float GetColumnWidthEx ( ImGuiOldColumns columns,
int  column_index,
bool  before_resize = false 
)
static
3679{
3680 if (column_index < 0)
3681 column_index = columns->Current;
3682
3683 float offset_norm;
3684 if (before_resize)
3685 offset_norm = columns->Columns[column_index + 1].OffsetNormBeforeResize - columns->Columns[column_index].OffsetNormBeforeResize;
3686 else
3687 offset_norm = columns->Columns[column_index + 1].OffsetNorm - columns->Columns[column_index].OffsetNorm;
3688 return ImGui::GetColumnOffsetFromNorm(columns, offset_norm);
3689}
IMGUI_API float GetColumnOffsetFromNorm(const ImGuiOldColumns *columns, float offset_norm)
Definition imgui_tables.cpp:3633
ImVector< ImGuiOldColumnData > Columns
Definition imgui_internal.h:1199
int Current
Definition imgui_internal.h:1190

References ImGuiOldColumns::Columns, ImGuiOldColumns::Current, and ImGui::GetColumnOffsetFromNorm().

Referenced by ImGui::SetColumnOffset().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetDraggedColumnOffset()

static float GetDraggedColumnOffset ( ImGuiOldColumns columns,
int  column_index 
)
static
3646{
3647 // Active (dragged) column always follow mouse. The reason we need this is that dragging a column to the right edge of an auto-resizing
3648 // window creates a feedback loop because we store normalized positions. So while dragging we enforce absolute positioning.
3649 ImGuiContext& g = *GImGui;
3650 ImGuiWindow* window = g.CurrentWindow;
3651 IM_ASSERT(column_index > 0); // We are not supposed to drag column 0.
3652 IM_ASSERT(g.ActiveId == columns->ID + ImGuiID(column_index));
3653
3655 x = ImMax(x, ImGui::GetColumnOffset(column_index - 1) + g.Style.ColumnsMinSpacing);
3657 x = ImMin(x, ImGui::GetColumnOffset(column_index + 1) - g.Style.ColumnsMinSpacing);
3658
3659 return x;
3660}
ImGuiContext * GImGui
Definition imgui.cpp:960
unsigned int ImGuiID
Definition imgui.h:207
#define IM_ASSERT(_EXPR)
Definition imgui.h:81
static T ImMax(T lhs, T rhs)
Definition imgui_internal.h:410
static T ImMin(T lhs, T rhs)
Definition imgui_internal.h:409
@ ImGuiOldColumnFlags_NoPreserveWidths
Definition imgui_internal.h:1159
static const float COLUMNS_HIT_RECT_HALF_WIDTH
Definition imgui_tables.cpp:3643
IMGUI_API float GetColumnOffset(int column_index=-1)
Definition imgui_tables.cpp:3662
TCoord< P > x(const P &p)
Definition geometry_traits.hpp:297
Definition imgui_internal.h:1351
ImGuiID ActiveId
Definition imgui_internal.h:1398
ImVec2 ActiveIdClickOffset
Definition imgui_internal.h:1411
ImGuiStyle Style
Definition imgui_internal.h:1355
ImGuiWindow * CurrentWindow
Definition imgui_internal.h:1380
ImGuiIO IO
Definition imgui_internal.h:1354
ImVec2 MousePos
Definition imgui.h:1837
ImGuiOldColumnFlags Flags
Definition imgui_internal.h:1187
ImGuiID ID
Definition imgui_internal.h:1186
float ColumnsMinSpacing
Definition imgui.h:1741
Definition imgui_internal.h:1807
ImVec2 Pos
Definition imgui_internal.h:1811
float x
Definition imgui.h:246

References ImGuiContext::ActiveId, ImGuiContext::ActiveIdClickOffset, COLUMNS_HIT_RECT_HALF_WIDTH, ImGuiStyle::ColumnsMinSpacing, ImGuiContext::CurrentWindow, ImGuiOldColumns::Flags, ImGui::GetColumnOffset(), GImGui, ImGuiOldColumns::ID, IM_ASSERT, ImGuiOldColumnFlags_NoPreserveWidths, ImMax(), ImMin(), ImGuiContext::IO, ImGuiIO::MousePos, ImGuiWindow::Pos, ImGuiContext::Style, and ImVec2::x.

Referenced by ImGui::EndColumns().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ IM_STATIC_ASSERT()

◆ TableFixFlags()

ImGuiTableFlags TableFixFlags ( ImGuiTableFlags  flags,
ImGuiWindow outer_window 
)
inline
265{
266 // Adjust flags: set default sizing policy
267 if ((flags & ImGuiTableFlags_SizingMask_) == 0)
269
270 // Adjust flags: enable NoKeepColumnsVisible when using ImGuiTableFlags_SizingFixedSame
273
274 // Adjust flags: enforce borders when resizable
275 if (flags & ImGuiTableFlags_Resizable)
277
278 // Adjust flags: disable NoHostExtendX/NoHostExtendY if we have any scrolling going on
281
282 // Adjust flags: NoBordersInBodyUntilResize takes priority over NoBordersInBody
284 flags &= ~ImGuiTableFlags_NoBordersInBody;
285
286 // Adjust flags: disable saved settings if there's nothing to save
289
290 // Inherit _NoSavedSettings from top-level window (child windows always have _NoSavedSettings set)
291#ifdef IMGUI_HAS_DOCK
292 ImGuiWindow* window_for_settings = outer_window->RootWindowDockStop;
293#else
294 ImGuiWindow* window_for_settings = outer_window->RootWindow;
295#endif
296 if (window_for_settings->Flags & ImGuiWindowFlags_NoSavedSettings)
298
299 return flags;
300}
@ ImGuiWindowFlags_AlwaysAutoResize
Definition imgui.h:922
@ ImGuiWindowFlags_NoSavedSettings
Definition imgui.h:924
@ ImGuiTableFlags_NoSavedSettings
Definition imgui.h:1114
@ ImGuiTableFlags_Sortable
Definition imgui.h:1113
@ ImGuiTableFlags_NoBordersInBodyUntilResize
Definition imgui.h:1128
@ ImGuiTableFlags_Reorderable
Definition imgui.h:1111
@ ImGuiTableFlags_ScrollY
Definition imgui.h:1147
@ ImGuiTableFlags_NoHostExtendX
Definition imgui.h:1135
@ ImGuiTableFlags_NoKeepColumnsVisible
Definition imgui.h:1137
@ ImGuiTableFlags_ScrollX
Definition imgui.h:1146
@ ImGuiTableFlags_BordersInnerV
Definition imgui.h:1120
@ ImGuiTableFlags_NoHostExtendY
Definition imgui.h:1136
@ ImGuiTableFlags_Hideable
Definition imgui.h:1112
@ ImGuiTableFlags_Resizable
Definition imgui.h:1110
ImGuiWindowFlags Flags
Definition imgui_internal.h:1810
ImGuiWindow * RootWindow
Definition imgui_internal.h:1886

References ImGuiWindow::Flags, ImGuiTableFlags_BordersInnerV, ImGuiTableFlags_Hideable, ImGuiTableFlags_NoBordersInBodyUntilResize, ImGuiTableFlags_NoHostExtendX, ImGuiTableFlags_NoHostExtendY, ImGuiTableFlags_NoKeepColumnsVisible, ImGuiTableFlags_NoSavedSettings, ImGuiTableFlags_Reorderable, ImGuiTableFlags_Resizable, ImGuiTableFlags_ScrollX, ImGuiTableFlags_ScrollY, ImGuiTableFlags_SizingFixedFit, ImGuiTableFlags_SizingFixedSame, ImGuiTableFlags_SizingMask_, ImGuiTableFlags_SizingStretchSame, ImGuiTableFlags_Sortable, ImGuiWindowFlags_AlwaysAutoResize, ImGuiWindowFlags_NoSavedSettings, and ImGuiWindow::RootWindow.

Referenced by ImGui::BeginTableEx().

+ Here is the caller graph for this function:

◆ TableGetColumnAvailSortDirection()

static ImGuiSortDirection TableGetColumnAvailSortDirection ( ImGuiTableColumn column,
int  n 
)
inlinestatic
2607{
2608 IM_ASSERT(n < column->SortDirectionsAvailCount);
2609 return (column->SortDirectionsAvailList >> (n << 1)) & 0x03;
2610}
ImU8 SortDirectionsAvailList
Definition imgui_internal.h:2071

References IM_ASSERT, and ImGuiTableColumn::SortDirectionsAvailList.

Referenced by ImGui::TableFixColumnSortDirection(), ImGui::TableGetColumnNextSortDirection(), and ImGui::TableSortSpecsSanitize().

+ Here is the caller graph for this function:

◆ TableSettingsCalcChunkSize()

static size_t TableSettingsCalcChunkSize ( int  columns_count)
static
3131{
3132 return sizeof(ImGuiTableSettings) + (size_t)columns_count * sizeof(ImGuiTableColumnSettings);
3133}
Definition imgui_internal.h:2231
Definition imgui_internal.h:2255

Referenced by ImGui::TableGcCompactSettings(), and ImGui::TableSettingsCreate().

+ Here is the caller graph for this function:

◆ TableSettingsHandler_ApplyAll()

static void TableSettingsHandler_ApplyAll ( ImGuiContext ctx,
ImGuiSettingsHandler  
)
static
3308{
3309 ImGuiContext& g = *ctx;
3310 for (int i = 0; i != g.Tables.GetSize(); i++)
3311 {
3312 ImGuiTable* table = g.Tables.GetByIndex(i);
3313 table->IsSettingsRequestLoad = true;
3314 table->SettingsOffset = -1;
3315 }
3316}
ImPool< ImGuiTable > Tables
Definition imgui_internal.h:1521
Definition imgui_internal.h:2096
bool IsSettingsRequestLoad
Definition imgui_internal.h:2189
int SettingsOffset
Definition imgui_internal.h:2109
T * GetByIndex(ImPoolIdx n)
Definition imgui_internal.h:616
int GetSize() const
Definition imgui_internal.h:625

References ImPool< T >::GetByIndex(), ImPool< T >::GetSize(), ImGuiTable::IsSettingsRequestLoad, ImGuiTable::SettingsOffset, and ImGuiContext::Tables.

Referenced by ImGui::TableSettingsInstallHandler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TableSettingsHandler_ClearAll()

static void TableSettingsHandler_ClearAll ( ImGuiContext ctx,
ImGuiSettingsHandler  
)
static
3299{
3300 ImGuiContext& g = *ctx;
3301 for (int i = 0; i != g.Tables.GetSize(); i++)
3302 g.Tables.GetByIndex(i)->SettingsOffset = -1;
3304}
void clear()
Definition imgui_internal.h:638
ImChunkStream< ImGuiTableSettings > SettingsTables
Definition imgui_internal.h:1564

References ImChunkStream< T >::clear(), ImPool< T >::GetByIndex(), ImPool< T >::GetSize(), ImGuiTable::SettingsOffset, ImGuiContext::SettingsTables, and ImGuiContext::Tables.

Referenced by ImGui::TableSettingsInstallHandler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TableSettingsHandler_ReadLine()

static void TableSettingsHandler_ReadLine ( ImGuiContext ,
ImGuiSettingsHandler ,
void entry,
const char *  line 
)
static
3338{
3339 // "Column 0 UserID=0x42AD2D21 Width=100 Visible=1 Order=0 Sort=0v"
3340 ImGuiTableSettings* settings = (ImGuiTableSettings*)entry;
3341 float f = 0.0f;
3342 int column_n = 0, r = 0, n = 0;
3343
3344 if (sscanf(line, "RefScale=%f", &f) == 1) { settings->RefScale = f; return; }
3345
3346 if (sscanf(line, "Column %d%n", &column_n, &r) == 1)
3347 {
3348 if (column_n < 0 || column_n >= settings->ColumnsCount)
3349 return;
3350 line = ImStrSkipBlank(line + r);
3351 char c = 0;
3352 ImGuiTableColumnSettings* column = settings->GetColumnSettings() + column_n;
3353 column->Index = (ImGuiTableColumnIdx)column_n;
3354 if (sscanf(line, "UserID=0x%08X%n", (ImU32*)&n, &r)==1) { line = ImStrSkipBlank(line + r); column->UserID = (ImGuiID)n; }
3355 if (sscanf(line, "Width=%d%n", &n, &r) == 1) { line = ImStrSkipBlank(line + r); column->WidthOrWeight = (float)n; column->IsStretch = 0; settings->SaveFlags |= ImGuiTableFlags_Resizable; }
3356 if (sscanf(line, "Weight=%f%n", &f, &r) == 1) { line = ImStrSkipBlank(line + r); column->WidthOrWeight = f; column->IsStretch = 1; settings->SaveFlags |= ImGuiTableFlags_Resizable; }
3357 if (sscanf(line, "Visible=%d%n", &n, &r) == 1) { line = ImStrSkipBlank(line + r); column->IsEnabled = (ImU8)n; settings->SaveFlags |= ImGuiTableFlags_Hideable; }
3358 if (sscanf(line, "Order=%d%n", &n, &r) == 1) { line = ImStrSkipBlank(line + r); column->DisplayOrder = (ImGuiTableColumnIdx)n; settings->SaveFlags |= ImGuiTableFlags_Reorderable; }
3359 if (sscanf(line, "Sort=%d%c%n", &n, &c, &r) == 2) { line = ImStrSkipBlank(line + r); column->SortOrder = (ImGuiTableColumnIdx)n; column->SortDirection = (c == '^') ? ImGuiSortDirection_Descending : ImGuiSortDirection_Ascending; settings->SaveFlags |= ImGuiTableFlags_Sortable; }
3360 }
3361}
const char * ImStrSkipBlank(const char *str)
Definition imgui.cpp:1410
unsigned int ImU32
Definition imgui.h:229
unsigned char ImU8
Definition imgui.h:225
@ ImGuiSortDirection_Descending
Definition imgui.h:1308
@ ImGuiSortDirection_Ascending
Definition imgui.h:1307
ImS8 ImGuiTableColumnIdx
Definition imgui_internal.h:2023
ImGuiTableColumnIdx SortOrder
Definition imgui_internal.h:2236
ImU8 IsEnabled
Definition imgui_internal.h:2238
ImGuiID UserID
Definition imgui_internal.h:2233
ImGuiTableColumnIdx DisplayOrder
Definition imgui_internal.h:2235
ImGuiTableColumnIdx Index
Definition imgui_internal.h:2234
ImU8 IsStretch
Definition imgui_internal.h:2239
ImU8 SortDirection
Definition imgui_internal.h:2237
float WidthOrWeight
Definition imgui_internal.h:2232
float RefScale
Definition imgui_internal.h:2258
ImGuiTableFlags SaveFlags
Definition imgui_internal.h:2257
ImGuiTableColumnSettings * GetColumnSettings()
Definition imgui_internal.h:2264
ImGuiTableColumnIdx ColumnsCount
Definition imgui_internal.h:2259

References ImGuiTableSettings::ColumnsCount, ImGuiTableColumnSettings::DisplayOrder, ImGuiTableSettings::GetColumnSettings(), ImGuiSortDirection_Ascending, ImGuiSortDirection_Descending, ImGuiTableFlags_Hideable, ImGuiTableFlags_Reorderable, ImGuiTableFlags_Resizable, ImGuiTableFlags_Sortable, ImStrSkipBlank(), ImGuiTableColumnSettings::Index, ImGuiTableColumnSettings::IsEnabled, ImGuiTableColumnSettings::IsStretch, ImGuiTableSettings::RefScale, ImGuiTableSettings::SaveFlags, ImGuiTableColumnSettings::SortDirection, ImGuiTableColumnSettings::SortOrder, ImGuiTableColumnSettings::UserID, and ImGuiTableColumnSettings::WidthOrWeight.

Referenced by ImGui::TableSettingsInstallHandler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TableSettingsHandler_ReadOpen()

static void * TableSettingsHandler_ReadOpen ( ImGuiContext ,
ImGuiSettingsHandler ,
const char *  name 
)
static
3319{
3320 ImGuiID id = 0;
3321 int columns_count = 0;
3322 if (sscanf(name, "0x%08X,%d", &id, &columns_count) < 2)
3323 return NULL;
3324
3326 {
3327 if (settings->ColumnsCountMax >= columns_count)
3328 {
3329 TableSettingsInit(settings, id, columns_count, settings->ColumnsCountMax); // Recycle
3330 return settings;
3331 }
3332 settings->ID = 0; // Invalidate storage, we won't fit because of a count change
3333 }
3334 return ImGui::TableSettingsCreate(id, columns_count);
3335}
static void TableSettingsInit(ImGuiTableSettings *settings, ImGuiID id, int columns_count, int columns_count_max)
Definition imgui_tables.cpp:3118
IMGUI_API ImGuiTableSettings * TableSettingsCreate(ImGuiID id, int columns_count)
Definition imgui_tables.cpp:3135
IMGUI_API ImGuiTableSettings * TableSettingsFindByID(ImGuiID id)
Definition imgui_tables.cpp:3144

References ImGui::TableSettingsCreate(), ImGui::TableSettingsFindByID(), and TableSettingsInit().

Referenced by ImGui::TableSettingsInstallHandler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TableSettingsHandler_WriteAll()

static void TableSettingsHandler_WriteAll ( ImGuiContext ctx,
ImGuiSettingsHandler handler,
ImGuiTextBuffer buf 
)
static
3364{
3365 ImGuiContext& g = *ctx;
3366 for (ImGuiTableSettings* settings = g.SettingsTables.begin(); settings != NULL; settings = g.SettingsTables.next_chunk(settings))
3367 {
3368 if (settings->ID == 0) // Skip ditched settings
3369 continue;
3370
3371 // TableSaveSettings() may clear some of those flags when we establish that the data can be stripped
3372 // (e.g. Order was unchanged)
3373 const bool save_size = (settings->SaveFlags & ImGuiTableFlags_Resizable) != 0;
3374 const bool save_visible = (settings->SaveFlags & ImGuiTableFlags_Hideable) != 0;
3375 const bool save_order = (settings->SaveFlags & ImGuiTableFlags_Reorderable) != 0;
3376 const bool save_sort = (settings->SaveFlags & ImGuiTableFlags_Sortable) != 0;
3377 if (!save_size && !save_visible && !save_order && !save_sort)
3378 continue;
3379
3380 buf->reserve(buf->size() + 30 + settings->ColumnsCount * 50); // ballpark reserve
3381 buf->appendf("[%s][0x%08X,%d]\n", handler->TypeName, settings->ID, settings->ColumnsCount);
3382 if (settings->RefScale != 0.0f)
3383 buf->appendf("RefScale=%g\n", settings->RefScale);
3384 ImGuiTableColumnSettings* column = settings->GetColumnSettings();
3385 for (int column_n = 0; column_n < settings->ColumnsCount; column_n++, column++)
3386 {
3387 // "Column 0 UserID=0x42AD2D21 Width=100 Visible=1 Order=0 Sort=0v"
3388 bool save_column = column->UserID != 0 || save_size || save_visible || save_order || (save_sort && column->SortOrder != -1);
3389 if (!save_column)
3390 continue;
3391 buf->appendf("Column %-2d", column_n);
3392 if (column->UserID != 0) buf->appendf(" UserID=%08X", column->UserID);
3393 if (save_size && column->IsStretch) buf->appendf(" Weight=%.4f", column->WidthOrWeight);
3394 if (save_size && !column->IsStretch) buf->appendf(" Width=%d", (int)column->WidthOrWeight);
3395 if (save_visible) buf->appendf(" Visible=%d", column->IsEnabled);
3396 if (save_order) buf->appendf(" Order=%d", column->DisplayOrder);
3397 if (save_sort && column->SortOrder != -1) buf->appendf(" Sort=%d%c", column->SortOrder, (column->SortDirection == ImGuiSortDirection_Ascending) ? 'v' : '^');
3398 buf->append("\n");
3399 }
3400 buf->append("\n");
3401 }
3402}
T * begin()
Definition imgui_internal.h:642
T * next_chunk(T *p)
Definition imgui_internal.h:643
const char * TypeName
Definition imgui_internal.h:1274
IMGUI_API void appendf(const char *fmt,...) IM_FMTARGS(2)
Definition imgui.cpp:2155
int size() const
Definition imgui.h:2059
void reserve(int capacity)
Definition imgui.h:2062
IMGUI_API void append(const char *str, const char *str_end=NULL)
Definition imgui.cpp:2137

References ImGuiTextBuffer::append(), ImGuiTextBuffer::appendf(), ImChunkStream< T >::begin(), ImGuiTableColumnSettings::DisplayOrder, ImGuiSortDirection_Ascending, ImGuiTableFlags_Hideable, ImGuiTableFlags_Reorderable, ImGuiTableFlags_Resizable, ImGuiTableFlags_Sortable, ImGuiTableColumnSettings::IsEnabled, ImGuiTableColumnSettings::IsStretch, ImChunkStream< T >::next_chunk(), ImGuiTextBuffer::reserve(), ImGuiContext::SettingsTables, ImGuiTextBuffer::size(), ImGuiTableColumnSettings::SortDirection, ImGuiTableColumnSettings::SortOrder, ImGuiSettingsHandler::TypeName, ImGuiTableColumnSettings::UserID, and ImGuiTableColumnSettings::WidthOrWeight.

Referenced by ImGui::TableSettingsInstallHandler().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TableSettingsInit()

static void TableSettingsInit ( ImGuiTableSettings settings,
ImGuiID  id,
int  columns_count,
int  columns_count_max 
)
static
3119{
3121 ImGuiTableColumnSettings* settings_column = settings->GetColumnSettings();
3122 for (int n = 0; n < columns_count_max; n++, settings_column++)
3123 IM_PLACEMENT_NEW(settings_column) ImGuiTableColumnSettings();
3124 settings->ID = id;
3125 settings->ColumnsCount = (ImGuiTableColumnIdx)columns_count;
3126 settings->ColumnsCountMax = (ImGuiTableColumnIdx)columns_count_max;
3127 settings->WantApply = true;
3128}
#define IM_PLACEMENT_NEW(_PTR)
Definition imgui.h:1636
bool WantApply
Definition imgui_internal.h:2261
ImGuiTableColumnIdx ColumnsCountMax
Definition imgui_internal.h:2260
ImGuiID ID
Definition imgui_internal.h:2256

References ImGuiTableSettings::ColumnsCount, ImGuiTableSettings::ColumnsCountMax, ImGuiTableSettings::GetColumnSettings(), ImGuiTableSettings::ID, IM_PLACEMENT_NEW, and ImGuiTableSettings::WantApply.

Referenced by ImGui::TableSettingsCreate(), and TableSettingsHandler_ReadOpen().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ TableSetupColumnFlags()

static void TableSetupColumnFlags ( ImGuiTable table,
ImGuiTableColumn column,
ImGuiTableColumnFlags  flags_in 
)
static
661{
662 ImGuiTableColumnFlags flags = flags_in;
663
664 // Sizing Policy
665 if ((flags & ImGuiTableColumnFlags_WidthMask_) == 0)
666 {
667 const ImGuiTableFlags table_sizing_policy = (table->Flags & ImGuiTableFlags_SizingMask_);
668 if (table_sizing_policy == ImGuiTableFlags_SizingFixedFit || table_sizing_policy == ImGuiTableFlags_SizingFixedSame)
670 else
672 }
673 else
674 {
675 IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiTableColumnFlags_WidthMask_)); // Check that only 1 of each set is used.
676 }
677
678 // Resize
679 if ((table->Flags & ImGuiTableFlags_Resizable) == 0)
681
682 // Sorting
685
686 // Indentation
687 if ((flags & ImGuiTableColumnFlags_IndentMask_) == 0)
689
690 // Alignment
691 //if ((flags & ImGuiTableColumnFlags_AlignMask_) == 0)
692 // flags |= ImGuiTableColumnFlags_AlignCenter;
693 //IM_ASSERT(ImIsPowerOfTwo(flags & ImGuiTableColumnFlags_AlignMask_)); // Check that only 1 of each set is used.
694
695 // Preserve status flags
696 column->Flags = flags | (column->Flags & ImGuiTableColumnFlags_StatusMask_);
697
698 // Build an ordered list of available sort directions
700 if (table->Flags & ImGuiTableFlags_Sortable)
701 {
702 int count = 0, mask = 0, list = 0;
707 if ((table->Flags & ImGuiTableFlags_SortTristate) || count == 0) { mask |= 1 << ImGuiSortDirection_None; count++; }
708 column->SortDirectionsAvailList = (ImU8)list;
709 column->SortDirectionsAvailMask = (ImU8)mask;
710 column->SortDirectionsAvailCount = (ImU8)count;
712 }
713}
@ ImGuiTableColumnFlags_StatusMask_
Definition imgui.h:1193
@ ImGuiTableColumnFlags_WidthFixed
Definition imgui.h:1170
@ ImGuiTableColumnFlags_IndentDisable
Definition imgui.h:1182
@ ImGuiTableColumnFlags_PreferSortDescending
Definition imgui.h:1180
@ ImGuiTableColumnFlags_WidthStretch
Definition imgui.h:1169
@ ImGuiTableColumnFlags_WidthMask_
Definition imgui.h:1191
@ ImGuiTableColumnFlags_NoSort
Definition imgui.h:1175
@ ImGuiTableColumnFlags_IndentEnable
Definition imgui.h:1181
@ ImGuiTableColumnFlags_PreferSortAscending
Definition imgui.h:1179
@ ImGuiTableColumnFlags_NoSortAscending
Definition imgui.h:1176
@ ImGuiTableColumnFlags_NoResize
Definition imgui.h:1171
@ ImGuiTableColumnFlags_NoSortDescending
Definition imgui.h:1177
@ ImGuiTableColumnFlags_IndentMask_
Definition imgui.h:1192
@ ImGuiSortDirection_None
Definition imgui.h:1306
int ImGuiTableFlags
Definition imgui.h:196
@ ImGuiTableFlags_SortTristate
Definition imgui.h:1150
int ImGuiTableColumnFlags
Definition imgui.h:197
static bool ImIsPowerOfTwo(int v)
Definition imgui_internal.h:298
IMGUI_API void TableFixColumnSortDirection(ImGuiTable *table, ImGuiTableColumn *column)
Definition imgui_tables.cpp:2613
IGL_INLINE void count(const Eigen::SparseMatrix< XType > &X, const int dim, Eigen::SparseVector< SType > &S)
Definition count.cpp:12
ImGuiTableColumnFlags Flags
Definition imgui_internal.h:2032
ImU8 SortDirectionsAvailCount
Definition imgui_internal.h:2069
ImU8 SortDirectionsAvailMask
Definition imgui_internal.h:2070
ImSpan< ImGuiTableColumn > Columns
Definition imgui_internal.h:2101
ImGuiTableFlags Flags
Definition imgui_internal.h:2098
int index_from_ptr(const T *it) const
Definition imgui_internal.h:577

References ImGuiTable::Columns, ImGuiTableColumn::Flags, ImGuiTable::Flags, IM_ASSERT, ImGuiSortDirection_Ascending, ImGuiSortDirection_Descending, ImGuiSortDirection_None, ImGuiTableColumnFlags_IndentDisable, ImGuiTableColumnFlags_IndentEnable, ImGuiTableColumnFlags_IndentMask_, ImGuiTableColumnFlags_NoResize, ImGuiTableColumnFlags_NoSort, ImGuiTableColumnFlags_NoSortAscending, ImGuiTableColumnFlags_NoSortDescending, ImGuiTableColumnFlags_PreferSortAscending, ImGuiTableColumnFlags_PreferSortDescending, ImGuiTableColumnFlags_StatusMask_, ImGuiTableColumnFlags_WidthFixed, ImGuiTableColumnFlags_WidthMask_, ImGuiTableColumnFlags_WidthStretch, ImGuiTableFlags_Resizable, ImGuiTableFlags_SizingFixedFit, ImGuiTableFlags_SizingFixedSame, ImGuiTableFlags_SizingMask_, ImGuiTableFlags_Sortable, ImGuiTableFlags_SortTristate, ImIsPowerOfTwo(), ImSpan< T >::index_from_ptr(), ImGuiTableColumn::SortDirectionsAvailCount, ImGuiTableColumn::SortDirectionsAvailList, ImGuiTableColumn::SortDirectionsAvailMask, and ImGui::TableFixColumnSortDirection().

Referenced by ImGui::TableSetupColumn(), and ImGui::TableUpdateLayout().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ COLUMNS_HIT_RECT_HALF_WIDTH

const float COLUMNS_HIT_RECT_HALF_WIDTH = 4.0f
static

◆ TABLE_BORDER_SIZE

◆ TABLE_DRAW_CHANNEL_BG0

const int TABLE_DRAW_CHANNEL_BG0 = 0
static

◆ TABLE_DRAW_CHANNEL_BG2_FROZEN

const int TABLE_DRAW_CHANNEL_BG2_FROZEN = 1
static

◆ TABLE_DRAW_CHANNEL_NOCLIP

const int TABLE_DRAW_CHANNEL_NOCLIP = 2
static

◆ TABLE_RESIZE_SEPARATOR_FEEDBACK_TIMER

const float TABLE_RESIZE_SEPARATOR_FEEDBACK_TIMER = 0.06f
static

◆ TABLE_RESIZE_SEPARATOR_HALF_THICKNESS

const float TABLE_RESIZE_SEPARATOR_HALF_THICKNESS = 4.0f
static