dear-imgui 2.1.2 → 2.1.3
raw patch · 5 files changed
+66/−54 lines, 5 filesdep ~VulkanMemoryAllocatordep ~basedep ~template-haskellPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
Dependency ranges changed: VulkanMemoryAllocator, base, template-haskell, transformers, vulkan, vulkan-utils
API changes (from Hackage documentation)
- DearImGui.Raw: dragFloat :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: dragFloat :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool
- DearImGui.Raw: dragFloat2 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: dragFloat2 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool
- DearImGui.Raw: dragFloat3 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: dragFloat3 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool
- DearImGui.Raw: dragFloat4 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: dragFloat4 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool
- DearImGui.Raw: sliderFloat :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: sliderFloat :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool
- DearImGui.Raw: sliderFloat2 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: sliderFloat2 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool
- DearImGui.Raw: sliderFloat3 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: sliderFloat3 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool
- DearImGui.Raw: sliderFloat4 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool
+ DearImGui.Raw: sliderFloat4 :: MonadIO m => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool
Files
- ChangeLog.md +7/−0
- dear-imgui.cabal +4/−3
- src/DearImGui.hs +8/−8
- src/DearImGui/Internal/Text.hs +23/−19
- src/DearImGui/Raw.hs +24/−24
ChangeLog.md view
@@ -1,5 +1,11 @@ # Changelog for dear-imgui +## [2.1.3]++- Fixed off-by-1 in internal Text wrapper.+- Fixed sliderFloat* Raw calls+- Added `formatPtr` to Raw.dragFloat* and Raw.sliderFloat*+ ## [2.1.2] - Fixed glfw example build flags.@@ -100,6 +106,7 @@ [2.1.0]: https://github.com/haskell-game/dear-imgui.hs/tree/v2.1.0 [2.1.1]: https://github.com/haskell-game/dear-imgui.hs/tree/v2.1.1 [2.1.2]: https://github.com/haskell-game/dear-imgui.hs/tree/v2.1.2+[2.1.3]: https://github.com/haskell-game/dear-imgui.hs/tree/v2.1.3 [1.87]: https://github.com/ocornut/imgui/releases/tag/v1.87 [1.86]: https://github.com/ocornut/imgui/releases/tag/v1.86
dear-imgui.cabal view
@@ -1,7 +1,7 @@ cabal-version: 3.0 name: dear-imgui-version: 2.1.2+version: 2.1.3 author: Oliver Charles maintainer: ollie@ocharles.org.uk, aenor.realm@gmail.com license: BSD-3-Clause@@ -390,8 +390,9 @@ , vector ^>= 0.12.1.2 , vulkan- ^>= 3.9+ >= 3.12 , vulkan-utils- ^>= 0.4.1+ >= 0.5 , VulkanMemoryAllocator+ >= 0.7.1 , JuicyPixels
src/DearImGui.hs view
@@ -646,7 +646,7 @@ currentValue <- get ref with (realToFrac currentValue) \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.dragFloat descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)+ Raw.dragFloat descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue) nullPtr when changed do newValue <- peek floatPtr@@ -661,7 +661,7 @@ (x, y) <- get ref withArray [ realToFrac x, realToFrac y ] \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.dragFloat2 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)+ Raw.dragFloat2 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue) nullPtr when changed do [x', y'] <- peekArray 2 floatPtr@@ -675,7 +675,7 @@ (x, y, z) <- get ref withArray [ realToFrac x, realToFrac y, realToFrac z ] \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.dragFloat3 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)+ Raw.dragFloat3 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue) nullPtr when changed do [x', y', z'] <- peekArray 3 floatPtr@@ -690,7 +690,7 @@ (x, y, z, u) <- get ref withArray [ realToFrac x, realToFrac y, realToFrac z, realToFrac u ] \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.dragFloat4 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)+ Raw.dragFloat4 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue) nullPtr when changed do [x', y', z', u'] <- peekArray 4 floatPtr@@ -969,7 +969,7 @@ currentValue <- get ref with (realToFrac currentValue) \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)+ Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr when changed do newValue <- peek floatPtr@@ -983,7 +983,7 @@ (x, y) <- get ref withArray [ realToFrac x, realToFrac y ] \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)+ Raw.sliderFloat2 descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr when changed do [x', y'] <- peekArray 2 floatPtr@@ -997,7 +997,7 @@ (x, y, z) <- get ref withArray [ realToFrac x, realToFrac y, realToFrac z ] \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)+ Raw.sliderFloat3 descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr when changed do [x', y', z'] <- peekArray 3 floatPtr@@ -1011,7 +1011,7 @@ (x, y, z, u) <- get ref withArray [ realToFrac x, realToFrac y, realToFrac z, realToFrac u ] \floatPtr -> do changed <- Text.withCString desc \descPtr ->- Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)+ Raw.sliderFloat4 descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr when changed do [x', y', z', u'] <- peekArray 4 floatPtr
src/DearImGui/Internal/Text.hs view
@@ -13,7 +13,6 @@ ) where -- base-import Control.Monad.IO.Class (liftIO) import Foreign (nullPtr, plusPtr) import Foreign.C.String (CString) import qualified GHC.Foreign as Foreign@@ -26,35 +25,40 @@ -- unliftio-core import UnliftIO (MonadUnliftIO, UnliftIO(..), withUnliftIO) -#if MIN_VERSION_text(2,0,0)+#if MIN_VERSION_text(2,0,1)+-- XXX: just wrap the provided combinator -import Data.Text.Foreign (lengthWord8, unsafeCopyToPtr)-import Data.Word (Word8)-import Foreign (castPtr, free, mallocBytes, pokeByteOff)-import UnliftIO.Exception (bracket)+import qualified Data.Text.Foreign as Text withCString :: MonadUnliftIO m => Text -> (CString -> m a) -> m a-withCString t = bracket create destroy- where- size0 = lengthWord8 t + 1+withCString text action =+ withUnliftIO $ \(UnliftIO unlift) ->+ Text.withCString text $ \buf ->+ unlift $ action buf - create = liftIO $ do- ptr <- mallocBytes size0- unsafeCopyToPtr t (castPtr ptr)- pokeByteOff ptr size0 (0 :: Word8)- pure ptr+#elif MIN_VERSION_text(2,0,0)+-- XXX: the text is UTF-8, alas no withCString is available - destroy ptr =- liftIO $ free ptr+import Data.Text.Foreign (lengthWord8, unsafeCopyToPtr)+import Data.Word (Word8)+import Foreign (allocaBytes, castPtr, pokeByteOff) +withCString :: MonadUnliftIO m => Text -> (CString -> m a) -> m a+withCString t@(Text _arr _off len) action =+ withUnliftIO $ \(UnliftIO unlift) ->+ allocaBytes (len + 1) $ \buf -> do+ unsafeCopyToPtr t buf+ pokeByteOff buf len (0 :: Word8)+ unlift $ action (castPtr buf)+ #else+-- XXX: the text is UTF-16, let GHC do it withCString :: MonadUnliftIO m => Text -> (CString -> m a) -> m a withCString t action = do withUnliftIO $ \(UnliftIO unlift) ->- liftIO $- Foreign.withCString utf8 (unpack t) $ \textPtr ->- unlift $ action textPtr+ Foreign.withCString utf8 (unpack t) $ \textPtr ->+ unlift $ action textPtr #endif
src/DearImGui/Raw.hs view
@@ -693,27 +693,27 @@ -- | Wraps @ImGui::DragFloat()@-dragFloat :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool-dragFloat descPtr floatPtr speed minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { DragFloat( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue)) } |]+dragFloat :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool+dragFloat descPtr floatPtr speed minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { DragFloat( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::DragFloat2()@-dragFloat2 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool-dragFloat2 descPtr floatPtr speed minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { DragFloat2( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue)) } |]+dragFloat2 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool+dragFloat2 descPtr floatPtr speed minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { DragFloat2( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::DragFloat3()@-dragFloat3 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool-dragFloat3 descPtr floatPtr speed minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { DragFloat3( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue)) } |]+dragFloat3 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool+dragFloat3 descPtr floatPtr speed minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { DragFloat3( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::DragFloat4()@-dragFloat4 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> m Bool-dragFloat4 descPtr floatPtr speed minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { DragFloat4( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue)) } |]+dragFloat4 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CFloat -> CString -> m Bool+dragFloat4 descPtr floatPtr speed minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { DragFloat4( $(char* descPtr), $(float* floatPtr), $(float speed), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::DragFloatRange2()@@@ -853,27 +853,27 @@ maxPtr_ = castPtr maxPtr -- | Wraps @ImGui::SliderFloat()@-sliderFloat :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool-sliderFloat descPtr floatPtr minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { SliderFloat( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue)) } |]+sliderFloat :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool+sliderFloat descPtr floatPtr minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { SliderFloat( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::SliderFloat2()@-sliderFloat2 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool-sliderFloat2 descPtr floatPtr minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { SliderFloat2( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue)) } |]+sliderFloat2 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool+sliderFloat2 descPtr floatPtr minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { SliderFloat2( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::SliderFloat3()@-sliderFloat3 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool-sliderFloat3 descPtr floatPtr minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { SliderFloat3( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue)) } |]+sliderFloat3 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool+sliderFloat3 descPtr floatPtr minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { SliderFloat3( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::SliderFloat4()@-sliderFloat4 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> m Bool-sliderFloat4 descPtr floatPtr minValue maxValue = liftIO do- (0 /=) <$> [C.exp| bool { SliderFloat4( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue)) } |]+sliderFloat4 :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> m Bool+sliderFloat4 descPtr floatPtr minValue maxValue formatPtr = liftIO do+ (0 /=) <$> [C.exp| bool { SliderFloat4( $(char* descPtr), $(float* floatPtr), $(float minValue), $(float maxValue), $(char* formatPtr)) } |] -- | Wraps @ImGui::SliderAngle()@ sliderAngle :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> ImGuiSliderFlags -> m Bool