Struct arcdps_imgui::TableFlags
source · pub struct TableFlags { /* private fields */ }
Expand description
Flags passed to begin_table
methods.
Important! Sizing policies have complex and subtle side effects, more so than you would expect. Read comments/demos carefully + experiment with live demos to get acquainted with them.
- The DEFAULT sizing policies are:
- Default to [SizingFixedFit] if [ScrollX] is on, or if host window has (WindowFlags::AlwaysAutoResize)[crate::WindowFlags::AlwaysAutoResize].
- Default to [SizingStretchSame] if [ScrollX] is off.
- When [ScrollX] is off:
- Table defaults to [SizingStretchSame] -> all Columns defaults to [TableColumnFlags::WidthStretch] with same weight.
- Columns sizing policy allowed: [Stretch] (default), [Fixed]/Auto.
- [Fixed] Columns will generally obtain their requested width (unless the table cannot fit them all).
- [Stretch] Columns will share the remaining width.
- Mixed [Fixed]/[Stretch] columns is possible but has various side-effects on resizing behaviors. The typical use of mixing sizing policies is: any number of LEADING [Fixed] columns, followed by one or two TRAILING [Stretch] columns. (this is because the visible order of columns have subtle but necessary effects on how they react to manual resizing).
- When [ScrollX] is on:
- Table defaults to [SizingFixedFit] -> all Columns defaults to [TableColumnFlags::WidthFixed]
- Columns sizing policy allowed: [Fixed]/Auto mostly.
- [Fixed] Columns can be enlarged as needed. Table will show an horizontal scrollbar if needed.
- When using auto-resizing (non-resizable) fixed columns, querying the content width to use item right-alignment e.g. SetNextItemWidth(-FLT_MIN) doesn’t make sense, would create a feedback loop.
- Using [Stretch] columns OFTEN DOES NOT MAKE SENSE if [ScrollX] is on, UNLESS you have specified a value for
inner_width
in BeginTable(). If you specify a value forinner_width
then effectively the scrolling space is known and [Stretch] or mixed [Fixed]/[Stretch] columns become meaningful again.
- Read on documentation at the top of imgui_tables.cpp for more details.
Implementations§
source§impl TableFlags
impl TableFlags
sourcepub const REORDERABLE: Self = _
pub const REORDERABLE: Self = _
Enable reordering columns in header row, though you must set up a header row
with begin_table_header
or table_setup_column
.
sourcepub const SORTABLE: Self = _
pub const SORTABLE: Self = _
Enable sorting. See table_get_sort_specs
to object sort specs. Also see [SortMulti]
and [SortTristate].
sourcepub const NO_SAVED_SETTINGS: Self = _
pub const NO_SAVED_SETTINGS: Self = _
Disable persisting columns order, width, and sort settings in the .ini file.
sourcepub const CONTEXT_MENU_IN_BODY: Self = _
pub const CONTEXT_MENU_IN_BODY: Self = _
Right-click on columns body/contents will display table context menu. By default you can only right click in a headers row.
sourcepub const ROW_BG: Self = _
pub const ROW_BG: Self = _
Set each RowBg color with [table_row_bg] or [table_row_bg_alt] (equivalent of calling
table_set_bg_color
with ROW_BG0
on each row manually)
sourcepub const BORDERS_INNER_H: Self = _
pub const BORDERS_INNER_H: Self = _
Draw horizontal borders between rows.
sourcepub const BORDERS_OUTER_H: Self = _
pub const BORDERS_OUTER_H: Self = _
Draw horizontal borders at the top and bottom.
sourcepub const BORDERS_INNER_V: Self = _
pub const BORDERS_INNER_V: Self = _
Draw vertical borders between columns.
sourcepub const BORDERS_OUTER_V: Self = _
pub const BORDERS_OUTER_V: Self = _
Draw vertical borders on the left and right sides.
sourcepub const BORDERS_H: Self = _
pub const BORDERS_H: Self = _
Draw all horizontal borders (this is just [BORDERS_INNER_H] | [BORDERS_OUTER_H]).
sourcepub const BORDERS_V: Self = _
pub const BORDERS_V: Self = _
Draw all vertical borders (this is just [BORDERS_INNER_V] | [BORDERS_OUTER_V]).
sourcepub const BORDERS_INNER: Self = _
pub const BORDERS_INNER: Self = _
Draw all inner borders (this is just [BORDERS_INNER_H] | [BORDERS_INNER_V]).
sourcepub const BORDERS_OUTER: Self = _
pub const BORDERS_OUTER: Self = _
Draw all outer borders (this is just [BORDERS_OUTER_H] | [BORDERS_OUTER_V]).
sourcepub const NO_BORDERS_IN_BODY: Self = _
pub const NO_BORDERS_IN_BODY: Self = _
ALPHA Disable vertical borders in columns Body (borders will always appears in Headers). May move to Style
sourcepub const NO_BORDERS_IN_BODY_UNTIL_RESIZE: Self = _
pub const NO_BORDERS_IN_BODY_UNTIL_RESIZE: Self = _
ALPHA Disable vertical borders in columns Body until hovered for resize (borders will always appears in Headers). May move to style
sourcepub const SIZING_FIXED_FIT: Self = _
pub const SIZING_FIXED_FIT: Self = _
Columns default to [WidthFixed] or [WidthAuto] (if resizable or not resizable), matching contents width.
sourcepub const SIZING_FIXED_SAME: Self = _
pub const SIZING_FIXED_SAME: Self = _
Columns default to [WidthFixed] or [WidthAuto] (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable [NoKeepColumnsVisible].
sourcepub const SIZING_STRETCH_PROP: Self = _
pub const SIZING_STRETCH_PROP: Self = _
Columns default to [WidthStretch] with default weights proportional to each columns contents widths.
sourcepub const SIZING_STRETCH_SAME: Self = _
pub const SIZING_STRETCH_SAME: Self = _
Columns default to [WidthStretch] with default weights all equal, unless overridden by
a column’s TableHeader
.
sourcepub const NO_HOST_EXTEND_X: Self = _
pub const NO_HOST_EXTEND_X: Self = _
Make outer width auto-fit to columns, overriding outer_size.x value. Only available when [ScrollX]/[ScrollY] are disabled and [Stretch] columns are not used.
sourcepub const NO_HOST_EXTEND_Y: Self = _
pub const NO_HOST_EXTEND_Y: Self = _
Make outer height stop exactly at outer_size.y (prevent auto-extending table past the limit). Only available when [ScrollX]/[ScrollY] are disabled. Data below the limit will be clipped and not visible.
sourcepub const NO_KEEP_COLUMNS_VISIBLE: Self = _
pub const NO_KEEP_COLUMNS_VISIBLE: Self = _
Disable keeping column always minimally visible when [ScrollX] is off and table gets too small. Not recommended if columns are resizable.
sourcepub const PRECISE_WIDTHS: Self = _
pub const PRECISE_WIDTHS: Self = _
Disable distributing remainder width to stretched columns (width allocation on a 100-wide table with 3 columns: Without this flag: 33,33,34. With this flag: 33,33,33). With larger number of columns, resizing will appear to be less smooth.
sourcepub const NO_CLIP: Self = _
pub const NO_CLIP: Self = _
Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with [table_setup_scroll_freeze].
sourcepub const PAD_OUTER_X: Self = _
pub const PAD_OUTER_X: Self = _
Default if [BordersOuterV] is on. Enable outer-most padding. Generally desirable if you have headers.
sourcepub const NO_PAD_OUTER_X: Self = _
pub const NO_PAD_OUTER_X: Self = _
Default if [BordersOuterV] is off. Disable outer-most padding.
sourcepub const NO_PAD_INNER_X: Self = _
pub const NO_PAD_INNER_X: Self = _
Disable inner padding between columns (double inner padding if [BordersOuterV] is on, single inner padding if BordersOuterV is off).
sourcepub const SCROLL_X: Self = _
pub const SCROLL_X: Self = _
Enable horizontal scrolling. Require ‘outer_size’ parameter of [begin_table] to specify the container size. Changes default sizing policy. Because this create a child window, [ScrollY] is currently generally recommended when using [ScrollX].
sourcepub const SCROLL_Y: Self = _
pub const SCROLL_Y: Self = _
Enable vertical scrolling. Require ‘outer_size’ parameter of [begin_table] to specify the container size.
sourcepub const SORT_MULTI: Self = _
pub const SORT_MULTI: Self = _
Hold shift when clicking headers to sort on multiple column. [table_get_sort_specs] may return specs where [spec_count] > 1
.
sourcepub const SORT_TRISTATE: Self = _
pub const SORT_TRISTATE: Self = _
Allow no sorting, disable default sorting. table_get_sort_specs
may return specs where [specs_count] == 0
.
sourcepub const fn from_bits(bits: u32) -> Option<Self>
pub const fn from_bits(bits: u32) -> Option<Self>
Convert from underlying bit representation, unless that representation contains bits that do not correspond to a flag.
sourcepub const fn from_bits_truncate(bits: u32) -> Self
pub const fn from_bits_truncate(bits: u32) -> Self
Convert from underlying bit representation, dropping any bits that do not correspond to flags.
sourcepub const unsafe fn from_bits_unchecked(bits: u32) -> Self
pub const unsafe fn from_bits_unchecked(bits: u32) -> Self
Convert from underlying bit representation, preserving all bits (even those not corresponding to a defined flag).
§Safety
The caller of the bitflags!
macro can chose to allow or
disallow extra bits for their bitflags type.
The caller of from_bits_unchecked()
has to ensure that
all bits correspond to a defined flag or that extra bits
are valid for this bitflags type.
sourcepub const fn intersects(&self, other: Self) -> bool
pub const fn intersects(&self, other: Self) -> bool
Returns true
if there are flags common to both self
and other
.
sourcepub const fn contains(&self, other: Self) -> bool
pub const fn contains(&self, other: Self) -> bool
Returns true
if all of the flags in other
are contained within self
.
sourcepub fn set(&mut self, other: Self, value: bool)
pub fn set(&mut self, other: Self, value: bool)
Inserts or removes the specified flags depending on the passed value.
sourcepub const fn intersection(self, other: Self) -> Self
pub const fn intersection(self, other: Self) -> Self
Returns the intersection between the flags in self
and
other
.
Specifically, the returned set contains only the flags which are
present in both self
and other
.
This is equivalent to using the &
operator (e.g.
ops::BitAnd
), as in flags & other
.
sourcepub const fn union(self, other: Self) -> Self
pub const fn union(self, other: Self) -> Self
Returns the union of between the flags in self
and other
.
Specifically, the returned set contains all flags which are
present in either self
or other
, including any which are
present in both (see Self::symmetric_difference
if that
is undesirable).
This is equivalent to using the |
operator (e.g.
ops::BitOr
), as in flags | other
.
sourcepub const fn difference(self, other: Self) -> Self
pub const fn difference(self, other: Self) -> Self
Returns the difference between the flags in self
and other
.
Specifically, the returned set contains all flags present in
self
, except for the ones present in other
.
It is also conceptually equivalent to the “bit-clear” operation:
flags & !other
(and this syntax is also supported).
This is equivalent to using the -
operator (e.g.
ops::Sub
), as in flags - other
.
sourcepub const fn symmetric_difference(self, other: Self) -> Self
pub const fn symmetric_difference(self, other: Self) -> Self
Returns the symmetric difference between the flags
in self
and other
.
Specifically, the returned set contains the flags present which
are present in self
or other
, but that are not present in
both. Equivalently, it contains the flags present in exactly
one of the sets self
and other
.
This is equivalent to using the ^
operator (e.g.
ops::BitXor
), as in flags ^ other
.
sourcepub const fn complement(self) -> Self
pub const fn complement(self) -> Self
Returns the complement of this set of flags.
Specifically, the returned set contains all the flags which are
not set in self
, but which are allowed for this type.
Alternatively, it can be thought of as the set difference
between Self::all()
and self
(e.g. Self::all() - self
)
This is equivalent to using the !
operator (e.g.
ops::Not
), as in !flags
.
Trait Implementations§
source§impl Binary for TableFlags
impl Binary for TableFlags
source§impl BitAnd for TableFlags
impl BitAnd for TableFlags
source§impl BitAndAssign for TableFlags
impl BitAndAssign for TableFlags
source§fn bitand_assign(&mut self, other: Self)
fn bitand_assign(&mut self, other: Self)
Disables all flags disabled in the set.
source§impl BitOr for TableFlags
impl BitOr for TableFlags
source§fn bitor(self, other: TableFlags) -> Self
fn bitor(self, other: TableFlags) -> Self
Returns the union of the two sets of flags.
§type Output = TableFlags
type Output = TableFlags
|
operator.source§impl BitOrAssign for TableFlags
impl BitOrAssign for TableFlags
source§fn bitor_assign(&mut self, other: Self)
fn bitor_assign(&mut self, other: Self)
Adds the set of flags.
source§impl BitXor for TableFlags
impl BitXor for TableFlags
source§impl BitXorAssign for TableFlags
impl BitXorAssign for TableFlags
source§fn bitxor_assign(&mut self, other: Self)
fn bitxor_assign(&mut self, other: Self)
Toggles the set of flags.
source§impl Clone for TableFlags
impl Clone for TableFlags
source§fn clone(&self) -> TableFlags
fn clone(&self) -> TableFlags
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for TableFlags
impl Debug for TableFlags
source§impl Extend<TableFlags> for TableFlags
impl Extend<TableFlags> for TableFlags
source§fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl FromIterator<TableFlags> for TableFlags
impl FromIterator<TableFlags> for TableFlags
source§fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self
source§impl Hash for TableFlags
impl Hash for TableFlags
source§impl LowerHex for TableFlags
impl LowerHex for TableFlags
source§impl Not for TableFlags
impl Not for TableFlags
source§impl Octal for TableFlags
impl Octal for TableFlags
source§impl Ord for TableFlags
impl Ord for TableFlags
source§fn cmp(&self, other: &TableFlags) -> Ordering
fn cmp(&self, other: &TableFlags) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for TableFlags
impl PartialEq for TableFlags
source§fn eq(&self, other: &TableFlags) -> bool
fn eq(&self, other: &TableFlags) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for TableFlags
impl PartialOrd for TableFlags
source§fn partial_cmp(&self, other: &TableFlags) -> Option<Ordering>
fn partial_cmp(&self, other: &TableFlags) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl Sub for TableFlags
impl Sub for TableFlags
source§impl SubAssign for TableFlags
impl SubAssign for TableFlags
source§fn sub_assign(&mut self, other: Self)
fn sub_assign(&mut self, other: Self)
Disables all flags enabled in the set.