packages feed

dear-imgui-raw-imnodes-1.0.0: src/DearImGui/Raw/ImNodes/Style.hsc

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

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

module DearImGui.Raw.ImNodes.Style
  ( Style
  , colorsLength
  , destroy
  , init
  , withDefault
  ) where

import Control.Exception (bracket_)
import DearImGui.Raw.ImNodes.Enums.StyleFlags (StyleFlags)
import DearImGui.Raw.ImVec2 (ImVec2)
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 "dcimnodes.h"

-- structs (opaque)

data Style
instance Storable Style where
  sizeOf _    = #{size ImNodesStyle}
  alignment _ = #{alignment ImNodesStyle}
  peek _ = error "Style: opaque struct, peek not supported in v0"
  poke _ _ = error "Style: opaque struct, poke not supported in v0"

instance HasField "gridSpacing" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, GridSpacing}

instance HasField "nodeCornerRounding" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, NodeCornerRounding}

instance HasField "nodePadding" (Ptr Style) (Ptr ImVec2) where
  getField = #{ptr ImNodesStyle, NodePadding}

instance HasField "nodeBorderThickness" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, NodeBorderThickness}

instance HasField "linkThickness" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, LinkThickness}

instance HasField "linkLineSegmentsPerLength" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, LinkLineSegmentsPerLength}

instance HasField "linkHoverDistance" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, LinkHoverDistance}

instance HasField "pinCircleRadius" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, PinCircleRadius}

instance HasField "pinQuadSideLength" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, PinQuadSideLength}

instance HasField "pinTriangleSideLength" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, PinTriangleSideLength}

instance HasField "pinLineThickness" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, PinLineThickness}

instance HasField "pinHoverRadius" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, PinHoverRadius}

instance HasField "pinOffset" (Ptr Style) (Ptr Float) where
  getField = #{ptr ImNodesStyle, PinOffset}

instance HasField "miniMapPadding" (Ptr Style) (Ptr ImVec2) where
  getField = #{ptr ImNodesStyle, MiniMapPadding}

instance HasField "miniMapOffset" (Ptr Style) (Ptr ImVec2) where
  getField = #{ptr ImNodesStyle, MiniMapOffset}

instance HasField "flags" (Ptr Style) (Ptr StyleFlags) where
  getField = #{ptr ImNodesStyle, Flags}

instance HasField "colors" (Ptr Style) (Ptr CUInt) where
  getField = #{ptr ImNodesStyle, Colors}

colorsLength :: Int
colorsLength = #{const ImNodesCol_COUNT}

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

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

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