Struct 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 for inner_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

source

pub const RESIZABLE: Self = _

Enable resizing columns.

source

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.

source

pub const HIDEABLE: Self = _

Enable hiding/disabling columns in context menu.

source

pub const SORTABLE: Self = _

Enable sorting. See table_get_sort_specs to object sort specs. Also see [SortMulti] and [SortTristate].

source

pub const NO_SAVED_SETTINGS: Self = _

Disable persisting columns order, width, and sort settings in the .ini file.

source

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.

source

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)

source

pub const BORDERS_INNER_H: Self = _

Draw horizontal borders between rows.

source

pub const BORDERS_OUTER_H: Self = _

Draw horizontal borders at the top and bottom.

source

pub const BORDERS_INNER_V: Self = _

Draw vertical borders between columns.

source

pub const BORDERS_OUTER_V: Self = _

Draw vertical borders on the left and right sides.

source

pub const BORDERS_H: Self = _

Draw all horizontal borders (this is just [BORDERS_INNER_H] | [BORDERS_OUTER_H]).

source

pub const BORDERS_V: Self = _

Draw all vertical borders (this is just [BORDERS_INNER_V] | [BORDERS_OUTER_V]).

source

pub const BORDERS_INNER: Self = _

Draw all inner borders (this is just [BORDERS_INNER_H] | [BORDERS_INNER_V]).

source

pub const BORDERS_OUTER: Self = _

Draw all outer borders (this is just [BORDERS_OUTER_H] | [BORDERS_OUTER_V]).

source

pub const BORDERS: Self = _

Draw all borders (this is just [BORDERS_INNER] | [BORDERS_OUTER]).

source

pub const NO_BORDERS_IN_BODY: Self = _

ALPHA Disable vertical borders in columns Body (borders will always appears in Headers). May move to Style

source

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

source

pub const SIZING_FIXED_FIT: Self = _

Columns default to [WidthFixed] or [WidthAuto] (if resizable or not resizable), matching contents width.

source

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].

source

pub const SIZING_STRETCH_PROP: Self = _

Columns default to [WidthStretch] with default weights proportional to each columns contents widths.

source

pub const SIZING_STRETCH_SAME: Self = _

Columns default to [WidthStretch] with default weights all equal, unless overridden by a column’s TableHeader.

source

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.

source

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.

source

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.

source

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.

source

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].

source

pub const PAD_OUTER_X: Self = _

Default if [BordersOuterV] is on. Enable outer-most padding. Generally desirable if you have headers.

source

pub const NO_PAD_OUTER_X: Self = _

Default if [BordersOuterV] is off. Disable outer-most padding.

source

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).

source

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].

source

pub const SCROLL_Y: Self = _

Enable vertical scrolling. Require ‘outer_size’ parameter of [begin_table] to specify the container size.

source

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.

source

pub const SORT_TRISTATE: Self = _

Allow no sorting, disable default sorting. table_get_sort_specs may return specs where [specs_count] == 0.

source

pub const fn empty() -> Self

Returns an empty set of flags.

source

pub const fn all() -> Self

Returns the set containing all flags.

source

pub const fn bits(&self) -> u32

Returns the raw value of the flags currently stored.

source

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.

source

pub const fn from_bits_truncate(bits: u32) -> Self

Convert from underlying bit representation, dropping any bits that do not correspond to flags.

source

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.

source

pub const fn is_empty(&self) -> bool

Returns true if no flags are currently stored.

source

pub const fn is_all(&self) -> bool

Returns true if all flags are currently set.

source

pub const fn intersects(&self, other: Self) -> bool

Returns true if there are flags common to both self and other.

source

pub const fn contains(&self, other: Self) -> bool

Returns true if all of the flags in other are contained within self.

source

pub fn insert(&mut self, other: Self)

Inserts the specified flags in-place.

source

pub fn remove(&mut self, other: Self)

Removes the specified flags in-place.

source

pub fn toggle(&mut self, other: Self)

Toggles the specified flags in-place.

source

pub fn set(&mut self, other: Self, value: bool)

Inserts or removes the specified flags depending on the passed value.

source

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.

source

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.

source

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.

source

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.

source

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

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl BitAnd for TableFlags

source§

fn bitand(self, other: Self) -> Self

Returns the intersection between the two sets of flags.

§

type Output = TableFlags

The resulting type after applying the & operator.
source§

impl BitAndAssign for TableFlags

source§

fn bitand_assign(&mut self, other: Self)

Disables all flags disabled in the set.

source§

impl BitOr for TableFlags

source§

fn bitor(self, other: TableFlags) -> Self

Returns the union of the two sets of flags.

§

type Output = TableFlags

The resulting type after applying the | operator.
source§

impl BitOrAssign for TableFlags

source§

fn bitor_assign(&mut self, other: Self)

Adds the set of flags.

source§

impl BitXor for TableFlags

source§

fn bitxor(self, other: Self) -> Self

Returns the left flags, but with all the right flags toggled.

§

type Output = TableFlags

The resulting type after applying the ^ operator.
source§

impl BitXorAssign for TableFlags

source§

fn bitxor_assign(&mut self, other: Self)

Toggles the set of flags.

source§

impl Clone for TableFlags

source§

fn clone(&self) -> TableFlags

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for TableFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Extend<TableFlags> for TableFlags

source§

fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)

Extends a collection with the contents of an iterator. Read more
source§

fn extend_one(&mut self, item: A)

🔬This is a nightly-only experimental API. (extend_one)
Extends a collection with exactly one element.
source§

fn extend_reserve(&mut self, additional: usize)

🔬This is a nightly-only experimental API. (extend_one)
Reserves capacity in a collection for the given number of additional elements. Read more
source§

impl FromIterator<TableFlags> for TableFlags

source§

fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> Self

Creates a value from an iterator. Read more
source§

impl Hash for TableFlags

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl LowerHex for TableFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Not for TableFlags

source§

fn not(self) -> Self

Returns the complement of this set of flags.

§

type Output = TableFlags

The resulting type after applying the ! operator.
source§

impl Octal for TableFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Ord for TableFlags

source§

fn cmp(&self, other: &TableFlags) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for TableFlags

source§

fn eq(&self, other: &TableFlags) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for TableFlags

source§

fn partial_cmp(&self, other: &TableFlags) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl Sub for TableFlags

source§

fn sub(self, other: Self) -> Self

Returns the set difference of the two sets of flags.

§

type Output = TableFlags

The resulting type after applying the - operator.
source§

impl SubAssign for TableFlags

source§

fn sub_assign(&mut self, other: Self)

Disables all flags enabled in the set.

source§

impl UpperHex for TableFlags

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter.
source§

impl Copy for TableFlags

source§

impl Eq for TableFlags

source§

impl StructuralPartialEq for TableFlags

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for T
where U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.