mirror of
https://github.com/Drezil/dear-imgui.hs.git
synced 2025-07-04 20:18:47 +02:00
Compare commits
3 Commits
ddaf41bf88
...
sharedLib
Author | SHA1 | Date | |
---|---|---|---|
0b87bd8519 | |||
03205f482e | |||
12c7aafaf6 |
8
.github/workflows/build.yaml
vendored
8
.github/workflows/build.yaml
vendored
@ -4,19 +4,19 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v2.4.0
|
||||
- uses: actions/checkout@v2.3.4
|
||||
with:
|
||||
persist-credentials: false
|
||||
submodules: true
|
||||
|
||||
- uses: cachix/install-nix-action@v20
|
||||
- uses: cachix/install-nix-action@v16
|
||||
with:
|
||||
nix_path: nixpkgs=channel:nixos-unstable
|
||||
|
||||
- uses: cachix/cachix-action@v12
|
||||
- uses: cachix/cachix-action@v10
|
||||
with:
|
||||
name: hs-dear-imgui
|
||||
authToken: '${{ secrets.CACHIX_AUTH_TOKEN }}'
|
||||
|
||||
- run: nix-build --version
|
||||
- run: nix-build --version
|
||||
- run: nix-build -A hsPkgs.dear-imgui.components.exes
|
||||
|
14
ChangeLog.md
14
ChangeLog.md
@ -1,17 +1,5 @@
|
||||
# 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.
|
||||
- Added `plotLines`.
|
||||
- Added `setNextItemOpen`.
|
||||
|
||||
## [2.1.1]
|
||||
|
||||
- Build flag fix for MacOS.
|
||||
@ -105,8 +93,6 @@ Initial Hackage release based on [1.83].
|
||||
[2.0.0]: https://github.com/haskell-game/dear-imgui.hs/tree/v2.0.0
|
||||
[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
|
||||
|
@ -1,4 +1,4 @@
|
||||
packages: *.cabal
|
||||
package dear-imgui
|
||||
flags: +sdl +glfw +opengl2 +opengl3 +vulkan +examples
|
||||
flags: +sdl2 +glfw +opengl2 +opengl3 +vulkan +examples
|
||||
ghc-options: -Wall -Wcompat -fno-warn-unused-do-bind
|
||||
|
@ -1,7 +1,7 @@
|
||||
cabal-version: 3.0
|
||||
|
||||
name: dear-imgui
|
||||
version: 2.1.3
|
||||
version: 2.1.1
|
||||
author: Oliver Charles
|
||||
maintainer: ollie@ocharles.org.uk, aenor.realm@gmail.com
|
||||
license: BSD-3-Clause
|
||||
@ -13,11 +13,10 @@ description:
|
||||
Set package flags according to your needs.
|
||||
|
||||
build-type: Simple
|
||||
extra-source-files:
|
||||
README.md,
|
||||
ChangeLog.md
|
||||
|
||||
extra-source-files:
|
||||
README.md,
|
||||
ChangeLog.md,
|
||||
imgui/*.h,
|
||||
imgui/backends/*.h,
|
||||
imgui/backends/*.mm,
|
||||
@ -140,7 +139,7 @@ flag use-ImDrawIdx32
|
||||
common common
|
||||
build-depends:
|
||||
base
|
||||
>= 4.12 && < 4.19
|
||||
>= 4.12 && < 4.17
|
||||
default-language:
|
||||
Haskell2010
|
||||
|
||||
@ -148,6 +147,7 @@ library
|
||||
import: common
|
||||
hs-source-dirs:
|
||||
src
|
||||
generator
|
||||
exposed-modules:
|
||||
DearImGui
|
||||
DearImGui.FontAtlas
|
||||
@ -159,10 +159,17 @@ library
|
||||
DearImGui.Raw.Font.GlyphRanges
|
||||
DearImGui.Raw.IO
|
||||
DearImGui.Raw.ListClipper
|
||||
DearImGui.Raw.Context
|
||||
other-modules:
|
||||
DearImGui.Context
|
||||
DearImGui.Enums
|
||||
DearImGui.Structs
|
||||
DearImGui.Generator
|
||||
DearImGui.Generator.Parser
|
||||
DearImGui.Generator.Tokeniser
|
||||
DearImGui.Generator.Types
|
||||
ghc-options:
|
||||
-static -dynamic-too
|
||||
-- create both libHSdear-imgui... .a and .so
|
||||
cxx-options: -std=c++11
|
||||
cxx-sources:
|
||||
imgui/imgui.cpp
|
||||
@ -170,20 +177,47 @@ library
|
||||
imgui/imgui_draw.cpp
|
||||
imgui/imgui_tables.cpp
|
||||
imgui/imgui_widgets.cpp
|
||||
install-includes:
|
||||
imgui.h
|
||||
imgui_internal.h
|
||||
imstb_rectpack.h
|
||||
imstb_textedit.h
|
||||
imstb_truetype.h
|
||||
extra-libraries:
|
||||
stdc++
|
||||
include-dirs:
|
||||
imgui
|
||||
build-depends:
|
||||
dear-imgui-generator
|
||||
, containers
|
||||
, managed
|
||||
, inline-c
|
||||
managed
|
||||
, inline-c-cpp
|
||||
, StateVar
|
||||
, unliftio
|
||||
, vector
|
||||
-- for the generator:
|
||||
, template-haskell
|
||||
>= 2.15 && < 2.19
|
||||
, containers
|
||||
^>= 0.6.2.1
|
||||
, directory
|
||||
>= 1.3 && < 1.4
|
||||
, filepath
|
||||
>= 1.4 && < 1.5
|
||||
, inline-c
|
||||
>= 0.9.0.0 && < 0.10
|
||||
, megaparsec
|
||||
>= 9.0 && < 9.3
|
||||
, parser-combinators
|
||||
>= 1.2.0 && < 1.4
|
||||
, scientific
|
||||
>= 0.3.6.2 && < 0.3.8
|
||||
, text
|
||||
>= 1.2.4 && < 2.1
|
||||
, th-lift
|
||||
>= 0.7 && < 0.9
|
||||
, transformers
|
||||
>= 0.5.6 && < 0.6
|
||||
, unordered-containers
|
||||
>= 0.2.11 && < 0.3
|
||||
|
||||
if os(darwin)
|
||||
ghc-options:
|
||||
@ -243,7 +277,7 @@ library
|
||||
build-depends:
|
||||
sdl2
|
||||
cxx-sources:
|
||||
imgui/backends/imgui_impl_sdl2.cpp
|
||||
imgui/backends/imgui_impl_sdl.cpp
|
||||
|
||||
if os(windows) || os(darwin)
|
||||
extra-libraries:
|
||||
@ -281,40 +315,6 @@ library
|
||||
exposed-modules:
|
||||
DearImGui.GLFW.Vulkan
|
||||
|
||||
library dear-imgui-generator
|
||||
import: common
|
||||
hs-source-dirs: generator
|
||||
exposed-modules:
|
||||
DearImGui.Generator
|
||||
, DearImGui.Generator.Parser
|
||||
, DearImGui.Generator.Tokeniser
|
||||
, DearImGui.Generator.Types
|
||||
build-depends:
|
||||
template-haskell
|
||||
>= 2.15 && < 2.21
|
||||
, containers
|
||||
^>= 0.6.2.1
|
||||
, directory
|
||||
>= 1.3 && < 1.4
|
||||
, filepath
|
||||
>= 1.4 && < 1.5
|
||||
, inline-c
|
||||
>= 0.9.0.0 && < 0.10
|
||||
, megaparsec
|
||||
>= 9.0 && < 9.3
|
||||
, parser-combinators
|
||||
>= 1.2.0 && < 1.4
|
||||
, scientific
|
||||
>= 0.3.6.2 && < 0.3.8
|
||||
, text
|
||||
>= 1.2.4 && < 2.1
|
||||
, th-lift
|
||||
>= 0.7 && < 0.9
|
||||
, transformers
|
||||
>= 0.5.6 && < 0.7
|
||||
, unordered-containers
|
||||
>= 0.2.11 && < 0.3
|
||||
|
||||
executable test
|
||||
import: common, exe-flags
|
||||
main-is: Main.hs
|
||||
@ -355,7 +355,7 @@ executable image
|
||||
main-is: Image.hs
|
||||
hs-source-dirs: examples/sdl
|
||||
build-depends: sdl2, gl, dear-imgui, managed, vector
|
||||
if (!flag(examples) || !flag(sdl) || !flag(opengl3))
|
||||
if (!flag(examples) || !flag(sdl) || !flag(opengl2))
|
||||
buildable: False
|
||||
|
||||
executable vulkan
|
||||
@ -382,7 +382,7 @@ executable vulkan
|
||||
, text-short
|
||||
^>= 0.1.3
|
||||
, transformers
|
||||
>= 0.5.6 && < 0.7
|
||||
^>= 0.5.6.2
|
||||
, unliftio
|
||||
>= 0.2.13 && < 0.2.19
|
||||
, unliftio-core
|
||||
@ -390,9 +390,8 @@ executable vulkan
|
||||
, vector
|
||||
^>= 0.12.1.2
|
||||
, vulkan
|
||||
>= 3.12
|
||||
^>= 3.9
|
||||
, vulkan-utils
|
||||
>= 0.5
|
||||
^>= 0.4.1
|
||||
, VulkanMemoryAllocator
|
||||
>= 0.7.1
|
||||
, JuicyPixels
|
||||
|
@ -60,7 +60,7 @@ import Data.Text
|
||||
( Text )
|
||||
import qualified Data.Text as Text
|
||||
( all, any, breakOn, drop, dropWhile, dropWhileEnd
|
||||
, length, stripPrefix, unlines, unpack, pack
|
||||
, length, stripPrefix, unlines, unpack
|
||||
)
|
||||
|
||||
-- transformers
|
||||
@ -81,8 +81,6 @@ import DearImGui.Generator.Tokeniser
|
||||
import DearImGui.Generator.Types
|
||||
( Comment(..), Enumeration(..), Headers(..) )
|
||||
|
||||
import qualified Text.Show as Text
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Parse error type.
|
||||
|
||||
@ -92,9 +90,7 @@ data CustomParseError
|
||||
, problems :: ![Text]
|
||||
}
|
||||
| MissingForwardDeclaration
|
||||
{ enumName :: !Text
|
||||
, library :: HashMap Text ( TH.Name, Comment )
|
||||
}
|
||||
{ enumName :: !Text }
|
||||
| UnexpectedSection
|
||||
{ sectionName :: !Text
|
||||
, problem :: ![Text]
|
||||
@ -105,9 +101,8 @@ instance ShowErrorComponent CustomParseError where
|
||||
showErrorComponent ( Couldn'tLookupEnumValues { enumName, problems } ) = Text.unpack $
|
||||
"Couldn't lookup the following values in enum " <> enumName <> ":\n"
|
||||
<> Text.unlines ( map ( " - " <> ) problems )
|
||||
showErrorComponent ( MissingForwardDeclaration { enumName, library } ) = Text.unpack $
|
||||
"Missing forward declaration for enum named " <> enumName <> "\n"
|
||||
<> "In Library: " <> Text.pack ( Text.show library)
|
||||
showErrorComponent ( MissingForwardDeclaration { enumName } ) = Text.unpack $
|
||||
"Missing forward declaration for enum named " <> enumName
|
||||
showErrorComponent ( UnexpectedSection { sectionName, problem } ) = Text.unpack $
|
||||
"Unexpected section name.\n\
|
||||
\Expected: " <> sectionName <> "\n\
|
||||
@ -129,7 +124,6 @@ headers = do
|
||||
( _defines, basicEnums ) <- partitionEithers <$>
|
||||
manyTill
|
||||
( ( Left <$> try ignoreDefine )
|
||||
<|> ( Left <$> try cppConditional )
|
||||
<|> ( Right <$> enumeration enumNamesAndTypes )
|
||||
)
|
||||
( namedSection "Helpers: Memory allocations macros, ImVector<>" )
|
||||
@ -140,7 +134,7 @@ headers = do
|
||||
|
||||
_ <- skipManyTill anySingle ( namedSection "Misc data structures" )
|
||||
|
||||
_ <- skipManyTill anySingle ( namedSection "Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, Math Operators, ImColor)" )
|
||||
_ <- skipManyTill anySingle ( namedSection "Helpers (ImGuiOnceUponAFrame, ImGuiTextFilter, ImGuiTextBuffer, ImGuiStorage, ImGuiListClipper, ImColor)" )
|
||||
|
||||
_ <- skipManyTill anySingle ( namedSection "Drawing API (ImDrawCmd, ImDrawIdx, ImDrawVert, ImDrawChannel, ImDrawListSplitter, ImDrawListFlags, ImDrawList, ImDrawData)" )
|
||||
skipManyTill anySingle ( try . lookAhead $ many comment *> keyword "enum" )
|
||||
@ -177,24 +171,14 @@ forwardDeclarations = do
|
||||
pure ( structName, doc )
|
||||
_ <- many comment
|
||||
enums <- many do
|
||||
keyword "enum"
|
||||
enumName <- identifier
|
||||
symbol ":"
|
||||
ty <- cTypeName
|
||||
reservedSymbol ';'
|
||||
doc <- commentText <$> comment
|
||||
pure ( enumName, ( ty, CommentText <$> Text.drop 2 . snd $ Text.breakOn "//" doc ) )
|
||||
_ <- many comment
|
||||
typedefs <- many do
|
||||
keyword "typedef"
|
||||
ty <- cTypeName
|
||||
enumName <- identifier
|
||||
reservedSymbol ';'
|
||||
doc <- commentText <$> comment
|
||||
_ <- many comment
|
||||
pure ( enumName, ( ty, CommentText <$> Text.drop 2 . snd $ Text.breakOn "//" doc ) )
|
||||
-- Stopping after simple structs and enums for now.
|
||||
pure ( HashMap.fromList structs, HashMap.fromList (enums <> typedefs) )
|
||||
pure ( HashMap.fromList structs, HashMap.fromList enums )
|
||||
|
||||
cTypeName :: MonadParsec e [Tok] m => m TH.Name
|
||||
cTypeName = keyword "int" $> ''CInt
|
||||
@ -216,7 +200,6 @@ enumeration enumNamesAndTypes = do
|
||||
keyword "enum"
|
||||
pure inlineDocs
|
||||
fullEnumName <- identifier
|
||||
_ <- try $ (symbol ":" >> cTypeName >> pure ()) <|> pure ()
|
||||
let
|
||||
enumName :: Text
|
||||
enumName = Text.dropWhileEnd ( == '_' ) fullEnumName
|
||||
@ -224,7 +207,7 @@ enumeration enumNamesAndTypes = do
|
||||
enumTypeName = ()
|
||||
( underlyingType, forwardDoc ) <- case HashMap.lookup enumName enumNamesAndTypes of
|
||||
Just res -> pure res
|
||||
Nothing -> customFailure ( MissingForwardDeclaration { enumName, library=enumNamesAndTypes } )
|
||||
Nothing -> customFailure ( MissingForwardDeclaration { enumName } )
|
||||
let
|
||||
docs :: [Comment]
|
||||
docs = forwardDoc : CommentText "" : inlineDocs
|
||||
|
2
imgui
2
imgui
Submodule imgui updated: d4ddc46e77...9aae45eb4a
@ -110,7 +110,6 @@ module DearImGui
|
||||
, Raw.endGroup
|
||||
|
||||
, setCursorPos
|
||||
, Raw.getCursorPos
|
||||
, Raw.alignTextToFramePadding
|
||||
|
||||
-- * ID stack
|
||||
@ -647,7 +646,7 @@ dragFloat desc ref speed minValue maxValue = liftIO do
|
||||
currentValue <- get ref
|
||||
with (realToFrac currentValue) \floatPtr -> do
|
||||
changed <- Text.withCString desc \descPtr ->
|
||||
Raw.dragFloat descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue) nullPtr
|
||||
Raw.dragFloat descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
newValue <- peek floatPtr
|
||||
@ -662,7 +661,7 @@ dragFloat2 desc ref speed minValue maxValue = liftIO do
|
||||
(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) nullPtr
|
||||
Raw.dragFloat2 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
[x', y'] <- peekArray 2 floatPtr
|
||||
@ -676,7 +675,7 @@ dragFloat3 desc ref speed minValue maxValue = liftIO do
|
||||
(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) nullPtr
|
||||
Raw.dragFloat3 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
[x', y', z'] <- peekArray 3 floatPtr
|
||||
@ -691,7 +690,7 @@ dragFloat4 desc ref speed minValue maxValue = liftIO do
|
||||
(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) nullPtr
|
||||
Raw.dragFloat4 descPtr floatPtr (CFloat speed) (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
[x', y', z', u'] <- peekArray 4 floatPtr
|
||||
@ -970,7 +969,7 @@ sliderFloat desc ref minValue maxValue = liftIO do
|
||||
currentValue <- get ref
|
||||
with (realToFrac currentValue) \floatPtr -> do
|
||||
changed <- Text.withCString desc \descPtr ->
|
||||
Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr
|
||||
Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
newValue <- peek floatPtr
|
||||
@ -984,7 +983,7 @@ sliderFloat2 desc ref minValue maxValue = liftIO do
|
||||
(x, y) <- get ref
|
||||
withArray [ realToFrac x, realToFrac y ] \floatPtr -> do
|
||||
changed <- Text.withCString desc \descPtr ->
|
||||
Raw.sliderFloat2 descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr
|
||||
Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
[x', y'] <- peekArray 2 floatPtr
|
||||
@ -998,7 +997,7 @@ sliderFloat3 desc ref minValue maxValue = liftIO do
|
||||
(x, y, z) <- get ref
|
||||
withArray [ realToFrac x, realToFrac y, realToFrac z ] \floatPtr -> do
|
||||
changed <- Text.withCString desc \descPtr ->
|
||||
Raw.sliderFloat3 descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr
|
||||
Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
[x', y', z'] <- peekArray 3 floatPtr
|
||||
@ -1012,7 +1011,7 @@ sliderFloat4 desc ref minValue maxValue = liftIO do
|
||||
(x, y, z, u) <- get ref
|
||||
withArray [ realToFrac x, realToFrac y, realToFrac z, realToFrac u ] \floatPtr -> do
|
||||
changed <- Text.withCString desc \descPtr ->
|
||||
Raw.sliderFloat4 descPtr floatPtr (CFloat minValue) (CFloat maxValue) nullPtr
|
||||
Raw.sliderFloat descPtr floatPtr (CFloat minValue) (CFloat maxValue)
|
||||
|
||||
when changed do
|
||||
[x', y', z', u'] <- peekArray 4 floatPtr
|
||||
|
@ -6,7 +6,7 @@
|
||||
{-# language PatternSynonyms #-}
|
||||
{-# language TemplateHaskell #-}
|
||||
|
||||
module DearImGui.Raw.Context where
|
||||
module DearImGui.Context where
|
||||
|
||||
-- containers
|
||||
import qualified Data.Map.Strict as Map
|
@ -13,6 +13,7 @@ module DearImGui.Internal.Text
|
||||
) where
|
||||
|
||||
-- base
|
||||
import Control.Monad.IO.Class (liftIO)
|
||||
import Foreign (nullPtr, plusPtr)
|
||||
import Foreign.C.String (CString)
|
||||
import qualified GHC.Foreign as Foreign
|
||||
@ -25,40 +26,35 @@ import Data.Text.Foreign (withCStringLen)
|
||||
-- unliftio-core
|
||||
import UnliftIO (MonadUnliftIO, UnliftIO(..), withUnliftIO)
|
||||
|
||||
#if MIN_VERSION_text(2,0,1)
|
||||
-- XXX: just wrap the provided combinator
|
||||
|
||||
import qualified Data.Text.Foreign as Text
|
||||
|
||||
withCString :: MonadUnliftIO m => Text -> (CString -> m a) -> m a
|
||||
withCString text action =
|
||||
withUnliftIO $ \(UnliftIO unlift) ->
|
||||
Text.withCString text $ \buf ->
|
||||
unlift $ action buf
|
||||
|
||||
#elif MIN_VERSION_text(2,0,0)
|
||||
-- XXX: the text is UTF-8, alas no withCString is available
|
||||
#if MIN_VERSION_text(2,0,0)
|
||||
|
||||
import Data.Text.Foreign (lengthWord8, unsafeCopyToPtr)
|
||||
import Data.Word (Word8)
|
||||
import Foreign (allocaBytes, castPtr, pokeByteOff)
|
||||
import Foreign (castPtr, free, mallocBytes, pokeByteOff)
|
||||
import UnliftIO.Exception (bracket)
|
||||
|
||||
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)
|
||||
withCString t = bracket create destroy
|
||||
where
|
||||
size0 = lengthWord8 t + 1
|
||||
|
||||
create = liftIO $ do
|
||||
ptr <- mallocBytes size0
|
||||
unsafeCopyToPtr t (castPtr ptr)
|
||||
pokeByteOff ptr size0 (0 :: Word8)
|
||||
pure ptr
|
||||
|
||||
destroy ptr =
|
||||
liftIO $ free ptr
|
||||
|
||||
#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) ->
|
||||
Foreign.withCString utf8 (unpack t) $ \textPtr ->
|
||||
unlift $ action textPtr
|
||||
liftIO $
|
||||
Foreign.withCString utf8 (unpack t) $ \textPtr ->
|
||||
unlift $ action textPtr
|
||||
|
||||
#endif
|
||||
|
||||
|
@ -90,7 +90,6 @@ module DearImGui.Raw
|
||||
, popItemWidth
|
||||
, beginGroup
|
||||
, endGroup
|
||||
, getCursorPos
|
||||
, setCursorPos
|
||||
, getCursorScreenPos
|
||||
, alignTextToFramePadding
|
||||
@ -265,7 +264,7 @@ import System.IO.Unsafe
|
||||
( unsafePerformIO )
|
||||
|
||||
-- dear-imgui
|
||||
import DearImGui.Raw.Context
|
||||
import DearImGui.Context
|
||||
( imguiContext )
|
||||
import DearImGui.Enums
|
||||
import DearImGui.Structs
|
||||
@ -694,27 +693,27 @@ combo labelPtr iPtr itemsPtr itemsLen = liftIO do
|
||||
|
||||
|
||||
-- | Wraps @ImGui::DragFloat()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
|
||||
-- | Wraps @ImGui::DragFloat2()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
|
||||
-- | Wraps @ImGui::DragFloat3()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
|
||||
-- | Wraps @ImGui::DragFloat4()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
|
||||
-- | Wraps @ImGui::DragFloatRange2()@
|
||||
@ -854,27 +853,27 @@ dragScalarN labelPtr dataType dataPtr components vSpeed minPtr maxPtr formatPtr
|
||||
maxPtr_ = castPtr maxPtr
|
||||
|
||||
-- | Wraps @ImGui::SliderFloat()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
|
||||
-- | Wraps @ImGui::SliderFloat2()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
|
||||
-- | Wraps @ImGui::SliderFloat3()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
|
||||
-- | Wraps @ImGui::SliderFloat4()@
|
||||
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)) } |]
|
||||
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)) } |]
|
||||
|
||||
-- | Wraps @ImGui::SliderAngle()@
|
||||
sliderAngle :: (MonadIO m) => CString -> Ptr CFloat -> CFloat -> CFloat -> CString -> ImGuiSliderFlags -> m Bool
|
||||
@ -1672,20 +1671,6 @@ setCursorPos :: (MonadIO m) => Ptr ImVec2 -> m ()
|
||||
setCursorPos posPtr = liftIO do
|
||||
[C.exp| void { SetCursorPos(*$(ImVec2* posPtr)) } |]
|
||||
|
||||
-- | Get cursor position in window-local coordinates.
|
||||
--
|
||||
-- Useful to overlap draw using 'setCursorPos'.
|
||||
--
|
||||
-- Wraps @ImGui::SetCursorPos()@
|
||||
getCursorPos :: (MonadIO m) => m ImVec2
|
||||
getCursorPos = liftIO do
|
||||
C.withPtr_ \ptr ->
|
||||
[C.block|
|
||||
void {
|
||||
*$(ImVec2 * ptr) = GetCursorPos();
|
||||
}
|
||||
|]
|
||||
|
||||
-- | Cursor position in absolute coordinates.
|
||||
--
|
||||
-- Useful to work with 'DrawList' API.
|
||||
|
@ -115,7 +115,7 @@ import Foreign hiding (new)
|
||||
import Foreign.C
|
||||
|
||||
-- dear-imgui
|
||||
import DearImGui.Raw.Context
|
||||
import DearImGui.Context
|
||||
( imguiContext )
|
||||
import DearImGui.Enums
|
||||
import DearImGui.Structs
|
||||
|
@ -41,7 +41,7 @@ import Foreign ( Ptr, castPtr )
|
||||
import Foreign.C
|
||||
|
||||
-- dear-imgui
|
||||
import DearImGui.Raw.Context
|
||||
import DearImGui.Context
|
||||
( imguiContext )
|
||||
import DearImGui.Structs
|
||||
import DearImGui.Raw.Font.Config
|
||||
|
@ -46,7 +46,7 @@ import Foreign ( Ptr )
|
||||
import Foreign.C
|
||||
|
||||
-- dear-imgui
|
||||
import DearImGui.Raw.Context
|
||||
import DearImGui.Context
|
||||
( imguiContext )
|
||||
import DearImGui.Structs
|
||||
import DearImGui.Raw.Font.GlyphRanges
|
||||
|
@ -75,7 +75,7 @@ import Foreign.C
|
||||
import System.IO.Unsafe (unsafePerformIO)
|
||||
|
||||
-- dear-imgui
|
||||
import DearImGui.Raw.Context
|
||||
import DearImGui.Context
|
||||
( imguiContext )
|
||||
import DearImGui.Structs
|
||||
|
||||
|
@ -39,7 +39,7 @@ import Foreign.C
|
||||
)
|
||||
|
||||
-- dear-imgui
|
||||
import DearImGui.Raw.Context
|
||||
import DearImGui.Context
|
||||
( imguiContext )
|
||||
-- import DearImGui.Enums
|
||||
-- import DearImGui.Structs
|
||||
|
@ -59,7 +59,7 @@ import Foreign.C
|
||||
import System.IO.Unsafe (unsafePerformIO)
|
||||
|
||||
-- dear-imgui
|
||||
import DearImGui.Raw.Context
|
||||
import DearImGui.Context
|
||||
( imguiContext )
|
||||
import DearImGui.Structs
|
||||
( ImGuiListClipper )
|
||||
|
@ -50,7 +50,7 @@ import Control.Monad.IO.Class
|
||||
|
||||
C.context (Cpp.cppCtx <> C.bsCtx)
|
||||
C.include "imgui.h"
|
||||
C.include "backends/imgui_impl_sdl2.h"
|
||||
C.include "backends/imgui_impl_sdl.h"
|
||||
C.include "SDL.h"
|
||||
Cpp.using "namespace ImGui"
|
||||
|
||||
|
@ -42,7 +42,7 @@ import Control.Monad.IO.Class
|
||||
C.context (Cpp.cppCtx <> C.bsCtx)
|
||||
C.include "imgui.h"
|
||||
C.include "backends/imgui_impl_opengl2.h"
|
||||
C.include "backends/imgui_impl_sdl2.h"
|
||||
C.include "backends/imgui_impl_sdl.h"
|
||||
C.include "SDL.h"
|
||||
C.include "SDL_opengl.h"
|
||||
Cpp.using "namespace ImGui"
|
||||
|
@ -33,7 +33,7 @@ import Control.Monad.IO.Class ( MonadIO, liftIO )
|
||||
C.context Cpp.cppCtx
|
||||
C.include "imgui.h"
|
||||
C.include "backends/imgui_impl_vulkan.h"
|
||||
C.include "backends/imgui_impl_sdl2.h"
|
||||
C.include "backends/imgui_impl_sdl.h"
|
||||
C.include "SDL.h"
|
||||
C.include "SDL_vulkan.h"
|
||||
Cpp.using "namespace ImGui"
|
||||
|
Reference in New Issue
Block a user