packages feed

dear-imgui-raw-internal-1.0.0: src/DearImGui/Raw/Internal/ImGuiTabBar.hsc

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

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

module DearImGui.Raw.Internal.ImGuiTabBar
  ( ImGuiTabBar (..)
  , destroy
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw (ImGuiID, ImS16, ImS8)
import DearImGui.Raw.Enums.ImGuiTabBarFlags (ImGuiTabBarFlags)
import DearImGui.Raw.ImGuiTextBuffer (ImGuiTextBuffer)
import DearImGui.Raw.ImVec2 (ImVec2)
import DearImGui.Raw.ImVector (ImVector)
import DearImGui.Raw.Internal.ImGuiTabItem (ImGuiTabItem)
import DearImGui.Raw.Internal.ImGuiWindow (ImGuiWindow)
import DearImGui.Raw.Internal.ImRect (ImRect)
import Foreign.C.Types
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr (Ptr, plusPtr)
import Foreign.Storable (Storable (..))
import GHC.Records (HasField (..))
import Prelude hiding (init)

#include "dcimgui_nodefaultargfunctions_internal.h"

-- structs (opaque)

data {-# CTYPE "dcimgui_nodefaultargfunctions_internal.h" "ImGuiTabBar" #-} ImGuiTabBar = ImGuiTabBar
  { window :: Ptr ImGuiWindow
  , tabs :: ImVector ImGuiTabItem
  , flags :: ImGuiTabBarFlags
  , iD :: ImGuiID
  , selectedTabId :: ImGuiID
  , nextSelectedTabId :: ImGuiID
  , nextScrollToTabId :: ImGuiID
  , visibleTabId :: ImGuiID
  , currFrameVisible :: CInt
  , prevFrameVisible :: CInt
  , barRect :: ImRect
  , barRectPrevWidth :: Float
  , currTabsContentsHeight :: Float
  , prevTabsContentsHeight :: Float
  , widthAllTabs :: Float
  , widthAllTabsIdeal :: Float
  , scrollingAnim :: Float
  , scrollingTarget :: Float
  , scrollingTargetDistToVisibility :: Float
  , scrollingSpeed :: Float
  , scrollingRectMinX :: Float
  , scrollingRectMaxX :: Float
  , separatorMinX :: Float
  , separatorMaxX :: Float
  , reorderRequestTabId :: ImGuiID
  , reorderRequestOffset :: ImS16
  , beginCount :: ImS8
  , wantLayout :: CBool
  , visibleTabWasSubmitted :: CBool
  , tabsAddedNew :: CBool
  , scrollButtonEnabled :: CBool
  , tabsActiveCount :: ImS16
  , lastTabItemIdx :: ImS16
  , itemSpacingY :: Float
  , framePadding :: ImVec2
  , backupCursorPos :: ImVec2
  , tabsNames :: ImGuiTextBuffer
  }
  deriving (Eq, Show)
instance Storable ImGuiTabBar where
  sizeOf _    = #{size ImGuiTabBar}
  alignment _ = #{alignment ImGuiTabBar}
  peek p = ImGuiTabBar <$> #{peek ImGuiTabBar, Window} p <*> #{peek ImGuiTabBar, Tabs} p <*> #{peek ImGuiTabBar, Flags} p <*> #{peek ImGuiTabBar, ID} p <*> #{peek ImGuiTabBar, SelectedTabId} p <*> #{peek ImGuiTabBar, NextSelectedTabId} p <*> #{peek ImGuiTabBar, NextScrollToTabId} p <*> #{peek ImGuiTabBar, VisibleTabId} p <*> #{peek ImGuiTabBar, CurrFrameVisible} p <*> #{peek ImGuiTabBar, PrevFrameVisible} p <*> #{peek ImGuiTabBar, BarRect} p <*> #{peek ImGuiTabBar, BarRectPrevWidth} p <*> #{peek ImGuiTabBar, CurrTabsContentsHeight} p <*> #{peek ImGuiTabBar, PrevTabsContentsHeight} p <*> #{peek ImGuiTabBar, WidthAllTabs} p <*> #{peek ImGuiTabBar, WidthAllTabsIdeal} p <*> #{peek ImGuiTabBar, ScrollingAnim} p <*> #{peek ImGuiTabBar, ScrollingTarget} p <*> #{peek ImGuiTabBar, ScrollingTargetDistToVisibility} p <*> #{peek ImGuiTabBar, ScrollingSpeed} p <*> #{peek ImGuiTabBar, ScrollingRectMinX} p <*> #{peek ImGuiTabBar, ScrollingRectMaxX} p <*> #{peek ImGuiTabBar, SeparatorMinX} p <*> #{peek ImGuiTabBar, SeparatorMaxX} p <*> #{peek ImGuiTabBar, ReorderRequestTabId} p <*> #{peek ImGuiTabBar, ReorderRequestOffset} p <*> #{peek ImGuiTabBar, BeginCount} p <*> #{peek ImGuiTabBar, WantLayout} p <*> #{peek ImGuiTabBar, VisibleTabWasSubmitted} p <*> #{peek ImGuiTabBar, TabsAddedNew} p <*> #{peek ImGuiTabBar, ScrollButtonEnabled} p <*> #{peek ImGuiTabBar, TabsActiveCount} p <*> #{peek ImGuiTabBar, LastTabItemIdx} p <*> #{peek ImGuiTabBar, ItemSpacingY} p <*> #{peek ImGuiTabBar, FramePadding} p <*> #{peek ImGuiTabBar, BackupCursorPos} p <*> #{peek ImGuiTabBar, TabsNames} p
  poke p v = do
    #{poke ImGuiTabBar, Window} p v.window
    #{poke ImGuiTabBar, Tabs} p v.tabs
    #{poke ImGuiTabBar, Flags} p v.flags
    #{poke ImGuiTabBar, ID} p v.iD
    #{poke ImGuiTabBar, SelectedTabId} p v.selectedTabId
    #{poke ImGuiTabBar, NextSelectedTabId} p v.nextSelectedTabId
    #{poke ImGuiTabBar, NextScrollToTabId} p v.nextScrollToTabId
    #{poke ImGuiTabBar, VisibleTabId} p v.visibleTabId
    #{poke ImGuiTabBar, CurrFrameVisible} p v.currFrameVisible
    #{poke ImGuiTabBar, PrevFrameVisible} p v.prevFrameVisible
    #{poke ImGuiTabBar, BarRect} p v.barRect
    #{poke ImGuiTabBar, BarRectPrevWidth} p v.barRectPrevWidth
    #{poke ImGuiTabBar, CurrTabsContentsHeight} p v.currTabsContentsHeight
    #{poke ImGuiTabBar, PrevTabsContentsHeight} p v.prevTabsContentsHeight
    #{poke ImGuiTabBar, WidthAllTabs} p v.widthAllTabs
    #{poke ImGuiTabBar, WidthAllTabsIdeal} p v.widthAllTabsIdeal
    #{poke ImGuiTabBar, ScrollingAnim} p v.scrollingAnim
    #{poke ImGuiTabBar, ScrollingTarget} p v.scrollingTarget
    #{poke ImGuiTabBar, ScrollingTargetDistToVisibility} p v.scrollingTargetDistToVisibility
    #{poke ImGuiTabBar, ScrollingSpeed} p v.scrollingSpeed
    #{poke ImGuiTabBar, ScrollingRectMinX} p v.scrollingRectMinX
    #{poke ImGuiTabBar, ScrollingRectMaxX} p v.scrollingRectMaxX
    #{poke ImGuiTabBar, SeparatorMinX} p v.separatorMinX
    #{poke ImGuiTabBar, SeparatorMaxX} p v.separatorMaxX
    #{poke ImGuiTabBar, ReorderRequestTabId} p v.reorderRequestTabId
    #{poke ImGuiTabBar, ReorderRequestOffset} p v.reorderRequestOffset
    #{poke ImGuiTabBar, BeginCount} p v.beginCount
    #{poke ImGuiTabBar, WantLayout} p v.wantLayout
    #{poke ImGuiTabBar, VisibleTabWasSubmitted} p v.visibleTabWasSubmitted
    #{poke ImGuiTabBar, TabsAddedNew} p v.tabsAddedNew
    #{poke ImGuiTabBar, ScrollButtonEnabled} p v.scrollButtonEnabled
    #{poke ImGuiTabBar, TabsActiveCount} p v.tabsActiveCount
    #{poke ImGuiTabBar, LastTabItemIdx} p v.lastTabItemIdx
    #{poke ImGuiTabBar, ItemSpacingY} p v.itemSpacingY
    #{poke ImGuiTabBar, FramePadding} p v.framePadding
    #{poke ImGuiTabBar, BackupCursorPos} p v.backupCursorPos
    #{poke ImGuiTabBar, TabsNames} p v.tabsNames

instance HasField "window" (Ptr ImGuiTabBar) (Ptr (Ptr ImGuiWindow)) where
  getField = #{ptr ImGuiTabBar, Window}

instance HasField "tabs" (Ptr ImGuiTabBar) (Ptr (ImVector ImGuiTabItem)) where
  getField = #{ptr ImGuiTabBar, Tabs}

instance HasField "flags" (Ptr ImGuiTabBar) (Ptr ImGuiTabBarFlags) where
  getField = #{ptr ImGuiTabBar, Flags}

instance HasField "iD" (Ptr ImGuiTabBar) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTabBar, ID}

instance HasField "selectedTabId" (Ptr ImGuiTabBar) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTabBar, SelectedTabId}

instance HasField "nextSelectedTabId" (Ptr ImGuiTabBar) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTabBar, NextSelectedTabId}

instance HasField "nextScrollToTabId" (Ptr ImGuiTabBar) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTabBar, NextScrollToTabId}

instance HasField "visibleTabId" (Ptr ImGuiTabBar) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTabBar, VisibleTabId}

instance HasField "currFrameVisible" (Ptr ImGuiTabBar) (Ptr CInt) where
  getField = #{ptr ImGuiTabBar, CurrFrameVisible}

instance HasField "prevFrameVisible" (Ptr ImGuiTabBar) (Ptr CInt) where
  getField = #{ptr ImGuiTabBar, PrevFrameVisible}

instance HasField "barRect" (Ptr ImGuiTabBar) (Ptr ImRect) where
  getField = #{ptr ImGuiTabBar, BarRect}

instance HasField "barRectPrevWidth" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, BarRectPrevWidth}

instance HasField "currTabsContentsHeight" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, CurrTabsContentsHeight}

instance HasField "prevTabsContentsHeight" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, PrevTabsContentsHeight}

instance HasField "widthAllTabs" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, WidthAllTabs}

instance HasField "widthAllTabsIdeal" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, WidthAllTabsIdeal}

instance HasField "scrollingAnim" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, ScrollingAnim}

instance HasField "scrollingTarget" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, ScrollingTarget}

instance HasField "scrollingTargetDistToVisibility" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, ScrollingTargetDistToVisibility}

instance HasField "scrollingSpeed" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, ScrollingSpeed}

instance HasField "scrollingRectMinX" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, ScrollingRectMinX}

instance HasField "scrollingRectMaxX" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, ScrollingRectMaxX}

instance HasField "separatorMinX" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, SeparatorMinX}

instance HasField "separatorMaxX" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, SeparatorMaxX}

instance HasField "reorderRequestTabId" (Ptr ImGuiTabBar) (Ptr ImGuiID) where
  getField = #{ptr ImGuiTabBar, ReorderRequestTabId}

instance HasField "reorderRequestOffset" (Ptr ImGuiTabBar) (Ptr ImS16) where
  getField = #{ptr ImGuiTabBar, ReorderRequestOffset}

instance HasField "beginCount" (Ptr ImGuiTabBar) (Ptr ImS8) where
  getField = #{ptr ImGuiTabBar, BeginCount}

instance HasField "wantLayout" (Ptr ImGuiTabBar) (Ptr CBool) where
  getField = #{ptr ImGuiTabBar, WantLayout}

instance HasField "visibleTabWasSubmitted" (Ptr ImGuiTabBar) (Ptr CBool) where
  getField = #{ptr ImGuiTabBar, VisibleTabWasSubmitted}

instance HasField "tabsAddedNew" (Ptr ImGuiTabBar) (Ptr CBool) where
  getField = #{ptr ImGuiTabBar, TabsAddedNew}

instance HasField "scrollButtonEnabled" (Ptr ImGuiTabBar) (Ptr CBool) where
  getField = #{ptr ImGuiTabBar, ScrollButtonEnabled}

instance HasField "tabsActiveCount" (Ptr ImGuiTabBar) (Ptr ImS16) where
  getField = #{ptr ImGuiTabBar, TabsActiveCount}

instance HasField "lastTabItemIdx" (Ptr ImGuiTabBar) (Ptr ImS16) where
  getField = #{ptr ImGuiTabBar, LastTabItemIdx}

instance HasField "itemSpacingY" (Ptr ImGuiTabBar) (Ptr Float) where
  getField = #{ptr ImGuiTabBar, ItemSpacingY}

instance HasField "framePadding" (Ptr ImGuiTabBar) (Ptr ImVec2) where
  getField = #{ptr ImGuiTabBar, FramePadding}

instance HasField "backupCursorPos" (Ptr ImGuiTabBar) (Ptr ImVec2) where
  getField = #{ptr ImGuiTabBar, BackupCursorPos}

instance HasField "tabsNames" (Ptr ImGuiTabBar) (Ptr ImGuiTextBuffer) where
  getField = #{ptr ImGuiTabBar, TabsNames}

foreign import capi unsafe "DearImGuiWrappers.h ImGuiTabBar_Init_wrap"
  init
    :: Ptr ImGuiTabBar
    -> IO ()

foreign import capi unsafe "DearImGuiWrappers.h ImGuiTabBar_Destroy_wrap"
  destroy
    :: Ptr ImGuiTabBar
    -> IO ()

withDefault :: (Ptr ImGuiTabBar -> IO a) -> IO a
withDefault k = alloca $ \p -> bracket_ (init p) (destroy p) (k p)