packages feed

dear-imgui-raw-1.0.0: src/DearImGui/Raw/Enums/ImGuiTableFlags.hsc

{-# LANGUAGE CApiFFI #-}
{-# LANGUAGE PatternSynonyms #-}

-- This file was generated by dear-bindings-ffi. Do not edit by hand.

module DearImGui.Raw.Enums.ImGuiTableFlags
  ( ImGuiTableFlags
  , pattern Borders
  , pattern BordersH
  , pattern BordersInner
  , pattern BordersInnerH
  , pattern BordersInnerV
  , pattern BordersOuter
  , pattern BordersOuterH
  , pattern BordersOuterV
  , pattern BordersV
  , pattern ContextMenuInBody
  , pattern Hideable
  , pattern HighlightHoveredColumn
  , pattern NoBordersInBody
  , pattern NoBordersInBodyUntilResize
  , pattern NoClip
  , pattern NoHostExtendX
  , pattern NoHostExtendY
  , pattern NoKeepColumnsVisible
  , pattern NoPadInnerX
  , pattern NoPadOuterX
  , pattern NoSavedSettings
  , pattern None
  , pattern PadOuterX
  , pattern PreciseWidths
  , pattern Reorderable
  , pattern Resizable
  , pattern RowBg
  , pattern ScrollX
  , pattern ScrollY
  , pattern SizingFixedFit
  , pattern SizingFixedSame
  , pattern SizingMask_
  , pattern SizingStretchProp
  , pattern SizingStretchSame
  , pattern SortMulti
  , pattern SortTristate
  , pattern Sortable
  ) where

import Foreign.C.Types

#include "dcimgui_nodefaultargfunctions.h"

-- typedefs

-- | Flags for ImGui::BeginTable()
-- - Important! Sizing policies have complex and subtle side effects, much 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 ImGuiTableFlags_SizingFixedFit    if ScrollX is on, or if host window has ImGuiWindowFlags_AlwaysAutoResize.
--    - Default to ImGuiTableFlags_SizingStretchSame if ScrollX is off.
-- - When ScrollX is off:
--    - Table defaults to ImGuiTableFlags_SizingStretchSame -> all Columns defaults to ImGuiTableColumnFlags_WidthStretch with same weight.
--    - Columns sizing policy allowed: Stretch (default), Fixed/Auto.
--    - Fixed Columns (if any) will generally obtain their requested width (unless the table cannot fit them all).
--    - Stretch Columns will share the remaining width according to their respective weight.
--    - 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 ImGuiTableFlags_SizingFixedFit -> all Columns defaults to ImGuiTableColumnFlags_WidthFixed
--    - Columns sizing policy allowed: Fixed/Auto mostly.
--    - Fixed Columns can be enlarged as needed. Table will show a 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 details.
type ImGuiTableFlags = CInt

-- enums

-- | Features
pattern None :: ImGuiTableFlags
pattern None = #{const ImGuiTableFlags_None}

-- | Enable resizing columns.
pattern Resizable :: ImGuiTableFlags
pattern Resizable = #{const ImGuiTableFlags_Resizable}

-- | Enable reordering columns in header row. (Need calling TableSetupColumn() + TableHeadersRow() to display headers, or using ImGuiTableFlags_ContextMenuInBody to access context-menu without headers).
pattern Reorderable :: ImGuiTableFlags
pattern Reorderable = #{const ImGuiTableFlags_Reorderable}

-- | Enable hiding/disabling columns in context menu.
pattern Hideable :: ImGuiTableFlags
pattern Hideable = #{const ImGuiTableFlags_Hideable}

-- | Enable sorting. Call TableGetSortSpecs() to obtain sort specs. Also see ImGuiTableFlags_SortMulti and ImGuiTableFlags_SortTristate.
pattern Sortable :: ImGuiTableFlags
pattern Sortable = #{const ImGuiTableFlags_Sortable}

-- | Disable persisting columns order, width, visibility and sort settings in the .ini file.
pattern NoSavedSettings :: ImGuiTableFlags
pattern NoSavedSettings = #{const ImGuiTableFlags_NoSavedSettings}

-- | Right-click on columns body/contents will also display table context menu. By default it is available in TableHeadersRow().
pattern ContextMenuInBody :: ImGuiTableFlags
pattern ContextMenuInBody = #{const ImGuiTableFlags_ContextMenuInBody}

-- | Decorations
-- Set each RowBg color with ImGuiCol_TableRowBg or ImGuiCol_TableRowBgAlt (equivalent of calling TableSetBgColor with ImGuiTableBgFlags_RowBg0 on each row manually)
pattern RowBg :: ImGuiTableFlags
pattern RowBg = #{const ImGuiTableFlags_RowBg}

-- | Draw horizontal borders between rows.
pattern BordersInnerH :: ImGuiTableFlags
pattern BordersInnerH = #{const ImGuiTableFlags_BordersInnerH}

-- | Draw horizontal borders at the top and bottom.
pattern BordersOuterH :: ImGuiTableFlags
pattern BordersOuterH = #{const ImGuiTableFlags_BordersOuterH}

-- | Draw vertical borders between columns.
pattern BordersInnerV :: ImGuiTableFlags
pattern BordersInnerV = #{const ImGuiTableFlags_BordersInnerV}

-- | Draw vertical borders on the left and right sides.
pattern BordersOuterV :: ImGuiTableFlags
pattern BordersOuterV = #{const ImGuiTableFlags_BordersOuterV}

-- | Draw horizontal borders.
pattern BordersH :: ImGuiTableFlags
pattern BordersH = #{const ImGuiTableFlags_BordersH}

-- | Draw vertical borders.
pattern BordersV :: ImGuiTableFlags
pattern BordersV = #{const ImGuiTableFlags_BordersV}

-- | Draw inner borders.
pattern BordersInner :: ImGuiTableFlags
pattern BordersInner = #{const ImGuiTableFlags_BordersInner}

-- | Draw outer borders.
pattern BordersOuter :: ImGuiTableFlags
pattern BordersOuter = #{const ImGuiTableFlags_BordersOuter}

-- | Draw all borders.
pattern Borders :: ImGuiTableFlags
pattern Borders = #{const ImGuiTableFlags_Borders}

-- | [ALPHA] Disable vertical borders in columns Body (borders will always appear in Headers). -> May move to style
pattern NoBordersInBody :: ImGuiTableFlags
pattern NoBordersInBody = #{const ImGuiTableFlags_NoBordersInBody}

-- | [ALPHA] Disable vertical borders in columns Body until hovered for resize (borders will always appear in Headers). -> May move to style
pattern NoBordersInBodyUntilResize :: ImGuiTableFlags
pattern NoBordersInBodyUntilResize = #{const ImGuiTableFlags_NoBordersInBodyUntilResize}

-- | Sizing Policy (read above for defaults)
-- Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching contents width.
pattern SizingFixedFit :: ImGuiTableFlags
pattern SizingFixedFit = #{const ImGuiTableFlags_SizingFixedFit}

-- | Columns default to _WidthFixed or _WidthAuto (if resizable or not resizable), matching the maximum contents width of all columns. Implicitly enable ImGuiTableFlags_NoKeepColumnsVisible.
pattern SizingFixedSame :: ImGuiTableFlags
pattern SizingFixedSame = #{const ImGuiTableFlags_SizingFixedSame}

-- | Columns default to _WidthStretch with default weights proportional to each columns contents widths.
pattern SizingStretchProp :: ImGuiTableFlags
pattern SizingStretchProp = #{const ImGuiTableFlags_SizingStretchProp}

-- | Columns default to _WidthStretch with default weights all equal, unless overridden by TableSetupColumn().
pattern SizingStretchSame :: ImGuiTableFlags
pattern SizingStretchSame = #{const ImGuiTableFlags_SizingStretchSame}

-- | Sizing Extra Options
-- 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.
pattern NoHostExtendX :: ImGuiTableFlags
pattern NoHostExtendX = #{const ImGuiTableFlags_NoHostExtendX}

-- | 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.
pattern NoHostExtendY :: ImGuiTableFlags
pattern NoHostExtendY = #{const ImGuiTableFlags_NoHostExtendY}

-- | Disable keeping column always minimally visible when ScrollX is off and table gets too small. Not recommended if columns are resizable.
pattern NoKeepColumnsVisible :: ImGuiTableFlags
pattern NoKeepColumnsVisible = #{const ImGuiTableFlags_NoKeepColumnsVisible}

-- | 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.
pattern PreciseWidths :: ImGuiTableFlags
pattern PreciseWidths = #{const ImGuiTableFlags_PreciseWidths}

-- | Clipping
-- Disable clipping rectangle for every individual columns (reduce draw command count, items will be able to overflow into other columns). Generally incompatible with TableSetupScrollFreeze().
pattern NoClip :: ImGuiTableFlags
pattern NoClip = #{const ImGuiTableFlags_NoClip}

-- | Padding
-- Default if BordersOuterV is on. Enable outermost padding. Generally desirable if you have headers.
pattern PadOuterX :: ImGuiTableFlags
pattern PadOuterX = #{const ImGuiTableFlags_PadOuterX}

-- | Default if BordersOuterV is off. Disable outermost padding.
pattern NoPadOuterX :: ImGuiTableFlags
pattern NoPadOuterX = #{const ImGuiTableFlags_NoPadOuterX}

-- | Disable inner padding between columns (double inner padding if BordersOuterV is on, single inner padding if BordersOuterV is off).
pattern NoPadInnerX :: ImGuiTableFlags
pattern NoPadInnerX = #{const ImGuiTableFlags_NoPadInnerX}

-- | Scrolling
-- Enable horizontal scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size. Changes default sizing policy. Because this creates a child window, ScrollY is currently generally recommended when using ScrollX.
pattern ScrollX :: ImGuiTableFlags
pattern ScrollX = #{const ImGuiTableFlags_ScrollX}

-- | Enable vertical scrolling. Require 'outer_size' parameter of BeginTable() to specify the container size.
pattern ScrollY :: ImGuiTableFlags
pattern ScrollY = #{const ImGuiTableFlags_ScrollY}

-- | Sorting
-- Hold shift when clicking headers to sort on multiple column. TableGetSortSpecs() may return specs where (SpecsCount > 1).
pattern SortMulti :: ImGuiTableFlags
pattern SortMulti = #{const ImGuiTableFlags_SortMulti}

-- | Allow no sorting, disable default sorting. TableGetSortSpecs() may return specs where (SpecsCount == 0).
pattern SortTristate :: ImGuiTableFlags
pattern SortTristate = #{const ImGuiTableFlags_SortTristate}

-- | Miscellaneous
-- Highlight column headers when hovered (may evolve into a fuller highlight)
pattern HighlightHoveredColumn :: ImGuiTableFlags
pattern HighlightHoveredColumn = #{const ImGuiTableFlags_HighlightHoveredColumn}

-- | [Internal] Combinations and masks
pattern SizingMask_ :: ImGuiTableFlags
pattern SizingMask_ = #{const ImGuiTableFlags_SizingMask_}