Skip to content

Releases: AllenDang/cimgui-go

v1.2.0

12 Nov 15:13
086586f
Compare
Choose a tag to compare

Introduction

Hi!
Today we present a next release of cimgui-go with many new features and bugfixes.

Breaking Changes

We're so sorry for that, but again we had to do some (fortunately small) breaking changes.

  • Plot* and ImNodes* prefixes were removed from auto-generated functions.
    • for fast migration check out #364 (comment) (you can use a one-line sed instruction to update your project)

Release Highlights

  • A new imgui plugin was added: ImGuiColorTextEdit
    • Special thanks goes to @sonoro1234 for help with C code generation
      image
  • Callback types were added to codegen 🎉
  • Many functions have been added (these using Callback typedefs; enum pointer arguments were added too)
  • github.com/AllenDang/cimgui-go/cmd/codegen now uses a json file for imgui-specific generator configuration.
    • Our goal is to make the codegen a useful tool not only for cimgui-go but make it able to generate any Go binding based on cimgui-like JSON configs.
    • Things like renames or skipped typedefs/structs/funcs are not hardcoded anymore.
  • Some types were given a NewEmptyXXX creator initializing them with their 0 values (like they would be by using new(XXX))

What's Changed - detailed changelog

Full Changelog: v1.1.0...v1.2.0

v1.1.0

29 Oct 11:35
0e9d3e5
Compare
Choose a tag to compare

Introduction

Hi!
We present another release of cimgui-go today.
Its major highlights are:

  • implementation of the ImGuizmo extension
  • Imgui update
  • bugfix in glfwbackend causing GL error in some circumstances.
  • fix of crucial issues in the internal conversions mechanism
  • package layout redesign (BREAKING CHANGE)
  • change of type for all in/out slices to pointers (BREAKING CHANGE)
  • improvement of Vector type - it now shares the Slice() method.

Breaking Changes

  • if you use a slice as an argument to cimgui-go function, replace it with utils.SliceToPtr(yourslice)
    • this was necessary, because we cannot in fact determine whether a C pointer is a Slice or Pointer. Conversion from slice to pointer is easier and makes more sense than conversion from ptr to slice.
    • There was an issue making it impossible to pass an empty slice or nil (runtime panic)
  • ConvertCTypes and some Wrap* functions have been hidden.
    • you shouldn't have to use these functions - its use should be handled internally by cimgui-go. They are highly unsafe.
  • imgui.Vector was moved to vectors.Vector
    • Vector type does not belong to the imgui package so putting it there isn't the right approach.
  • imgui.SliceToPtr was moved to utils.SliceToPtr
    • As above: this function does not belong to imgui's code and should not be there.
  • datautils package was renamed to utils.
    • Does it make it work better? - No, but this name is shorter. This package was entirely redesigned anyway so a name change will not break much more.

We are so sorry for these breaking changes. We hope their positive impact on your project will be much greater than your dissatisfaction related to implementing them. We promise we'll try to avoid them in future releases so that you can update smoothly.

What's Changed

Full Changelog: v1.0.3...v1.1.0

v1.0.3

25 Oct 08:15
34d1e6e
Compare
Choose a tag to compare

Summary

There is one important change here is that Garbage COllector no longer crashes your program when trying to free not-used textures.
You have to free them manually by calling (*Texture).Release

What's Changed

  • build(deps): bump github.com/hajimehoshi/ebiten/v2 from 2.8.0 to 2.8.1 by @dependabot in #346
  • build(deps): bump golangci/golangci-lint-action from 6.1.0 to 6.1.1 by @dependabot in #347
  • Change the SDL backend of SetCursor to accept global positions. by @Bradbev in #349
  • refactor(glfwbackend): move clear buffer before render loop by @anasrar in #348
  • README: Update by @gucio321 in #352
  • reame: Fix status badges by @gucio321 in #353
  • backend/texture: change default texture impl by @gucio321 in #354

New Contributors

Full Changelog: v1.0.2...v1.0.3

v1.0.2

04 Oct 10:14
a21d0ec
Compare
Choose a tag to compare

Introduction

Hi evryone!
This is a bugfix release for v1.0.1.
Its main purpose is to fix broken go mod vendor on this package. It also includes a major refactor of examples.

What's Changed

Full Changelog: v1.0.1...v1.0.2

v1.0.1

25 Sep 09:47
885e3df
Compare
Choose a tag to compare

Introduction

Hi there!
This is a small bugfix release for v1.0.0.
It mainly includes a fix to ClipboardHandler and a minor change in sdlbackend that allows to run OpenGL code in cimgui-go loop.
Today our project was also added to the awesome-go 🎉

What's Changed

Full Changelog: v1.0.0...v1.0.1

v1.0.0

24 Sep 12:32
a4469ce
Compare
Choose a tag to compare

INTRODUCTION

Hi everyone!
I have the honor to annouce the first cimgui-go release.
The great work has been done on this project since Tue Aug 9 12:12:13 2022 when @AllenDang did the first commit in 5ee6a09.
Now cimgui-go became mature enough to receive its first stable release.

Code version

We are using code from several third party repositories. As we couldn't use (because of some complex reasons) Git Submodules, we've recorded their versions in VERSION.txt, which on the current v1.0.0 moment looks as follows:

cimgui (https://github.com/cimgui/cimgui) HEAD is on: 0c7f67607d2aac88f5eaa9aa907a868a17144d58
cimgui/imgui HEAD is on: 8ba7efb738d6ee992ef81b451162591e43badbcf
cimplot (https://github.com/cimgui/cimplot) HEAD is on: 439f705b1cfae0e9fbe42c13ab5b45becc47d404
cimplot/implot HEAD is on: f156599faefe316f7dd20fe6c783bf87c8bb6fd9
cimnodes (https://github.com/cimgui/cimnodes) HEAD is on: f20c83c3cab8e99828d85c66ed3acd087f632c21
cimnodes/imnodes HEAD is on: 8563e1655bd9bb1f249e6552cc6274d506ee788b
cimmarkdown (https://github.com/gucio321/cimmarkdown) HEAD is on: 6e921ffc2b57a9969b98bf8f5aeed912bfb497f6
cimmarkdown/imgui_markdown HEAD is on: 4eb198f68090c9a1622bb9c78ee61f65b6ddc898

Dear ImGui Plugins

As everyone knows, Dear ImGui has many cool plugins.
With help of @sonoro1234 (who created the awesome cimgui project) we managed to implement the following plugins:

Backends

Because in many cases using Dear ImGui without graphics bakend implementation is annoying (requires user to implement it manually), we've decided to include a few useful backend implementations in this repository, including:

  • GLFW + OpenGL backend (based on an example form imgui)
  • SDL + OpenGL backend (also basing on another example from imgui)
  • Ebiten backend, which is a go native largest open source renderer. In this point I'd like to once again express large thanks to @gabstv and @damntourists - the initiators and creators of the code responsible for this backend.

Known Limitations

Unfortunately we do not lack issues and problems with our generator as well as with our backends. Here are pointed out the largest of them that will be hopefully fixed in the future releases.

  • Callbacks generation - C->Go->C callbacks are not easy to do unfortunately. I feel like noone did them in an elegant way before but we'll work on it in the future.
  • The main recommended backend is for now GLFW, as only this backend has full set of features provided for in the backend.Backend interface. Other backends may lack some of them yet.

Detailed Changelog

What's Changed

Read more