4bb4/implot-rs

Collaborate with similar projects

4bb4 opened this issue · 5 comments

4bb4 commented

It seems there are a few projects around that make use of ImGUI in some form, in particular the Rust bindings. It was mentioned over at imgui-rs/imgui-rs#339 that other people have an interest in having implot Rust bindings as well, so let's talk about in what form we could collaborate.

@aloucks, it seems to me that you have quite a bit more experience than I do in creating bindings crates. If you're interested in collaboration, there are various ways we could do that:

  • If you're willing to put in the time to help me in places, I could build implot-rs myself. This might take some time, but teach me how to do bindings crates.
  • If you'd prefer getting a working implot-rs rather sooner than later and think you'd be much faster doing it yourself, I could also close the project here down and let you take over. In the end, I want the bindings, I don't much care about having my name on them.

If anyone else is interested in taking part in the project, just let me know. In the meantime I'll experiment with things some more.

@4bb4 Hello! I'm happy to point out things that may be helpful, but I'm not sure how much time I'll have to work on this directly right now.

I took a quick look at your build.rs and have a few suggestions:

  1. Don't run bindgen from build.rs directly. This creates a hard dependency on clang (bindgen dynamically loads the libarary at runtime). Many people might not have it installed and the build will fail. I generally keep a shell script of some sort that runs bindgen. Keep both the script and the generated output in source control (rather than using OUT_DIR and include!).
  2. Use std::path::Path where possible to build paths rather than raw string concatenation.
  3. The defines are now exposed via DEP_IMGUI_DEFINE_* env variables now. You should be able to utilize this rather than duplicating that portion of the build script.

I've made the imguizmo-rs repo public and you can find the build.rs script here. I must warn you that this was an unfinished weekend project from last year that got sidelined for quite some time. It's API is bad/wrong and the entire thing needs considerable refactoring :) Note that I'm not using bindgen here though as there were only a handful of functions.

4bb4 commented

@aloucks Thanks for the inputs, I'll happily incorporate them - the build script will be helpful as well.

I'm happy to point out things that may be helpful, but I'm not sure how much time I'll have to work on this directly right now.

I'm always thankful for feedback and review, no matter how often it arrives. I'm currently developing this in my free time, so I don't have too much time available myself - that was the main reason for bringing up collaboration: If someone feels they would like to have the bindings sooner than my free time investment can get them ready, I wouldn't want to be in the way. If that's not the case yet, I'll keep on building at my pace :)

https://github.com/thedmd/imgui-node-editor something like that would be pretty useful to have as well.

I've not used the API yet though so can hardly tell how good it would map to rust and it certainly seems like a larger API than this one.

https://github.com/thedmd/imgui-node-editor something like that would be pretty useful to have as well.

I've not used the API yet though so can hardly tell how good it would map to rust and it certainly seems like a larger API than this one.

opened https://github.com/benmkw/imnodes-rs based on this repository ... very happy to find these cbindings exist 🎉 and your setup was extremely helpful

4bb4 commented

Very nice, I like it! Regarding the setup, I copied most of it over from imgui-rs :P