2020-07-01 17:41:31 +00:00
|
|
|
# implot-rs
|
|
|
|
|
2020-08-08 14:01:51 +00:00
|
|
|
Rust bindings for [ImPlot](https://github.com/epezent/implot), built by running
|
|
|
|
[bindgen](https://github.com/rust-lang/rust-bindgen) on [cimplot](https://github.com/cimgui/cimplot).
|
2020-07-01 19:50:14 +00:00
|
|
|
|
2020-08-08 14:01:51 +00:00
|
|
|
![demo](demo.png)
|
2020-07-01 19:50:14 +00:00
|
|
|
|
2020-08-08 14:01:51 +00:00
|
|
|
## Requirements
|
|
|
|
imgui-rs requires minimum Rust version 1.40, so this project does as well by extension.
|
2020-09-13 11:57:01 +00:00
|
|
|
Currently a pinned version (66260c123b9a80275bd3a366ef403444db11a676) of imgui-rs is used
|
|
|
|
as a dependency until https://github.com/Gekkio/imgui-rs/pull/339 makes it into a release.
|
2020-07-01 19:50:14 +00:00
|
|
|
|
2020-08-23 18:10:24 +00:00
|
|
|
The sys crate compiles implot, so a C++ compiler will also be required.
|
2020-08-08 14:01:51 +00:00
|
|
|
|
2020-09-06 14:59:25 +00:00
|
|
|
## Examples
|
|
|
|
Examples are being built in the `implot-examples` crate in this repo. To try them out,
|
|
|
|
clone the repo, change into the `implot-examples` directory and try for example
|
|
|
|
```
|
|
|
|
cargo run --example line_plots
|
|
|
|
```
|
|
|
|
|
|
|
|
## Documentation
|
|
|
|
Since the crate is not released yet, the documentation is not hosted yet either. You
|
|
|
|
can build it yourself however by cloning this repo and then doing
|
|
|
|
```
|
|
|
|
cargo doc --open
|
|
|
|
```
|
|
|
|
An effort is made to document everything as it is being added. Feel free to open an issue
|
|
|
|
if documentation is unclear or lacking.
|
|
|
|
|
2020-08-23 19:26:27 +00:00
|
|
|
## Design approach
|
|
|
|
This repo tries to follow the approaches and style used in `imgui-rs` somewhat closely,
|
|
|
|
because implot is to be used within imgui programs, and hence keeping the interfaces
|
|
|
|
and design philosophies close should make it easier to do that.
|
|
|
|
|
|
|
|
If you spot any design inconsistencies or papercuts, feel free to open an issue.
|
|
|
|
|
2020-08-08 14:01:51 +00:00
|
|
|
## Status
|
|
|
|
Currently a work in progress. The author is open to collaboration, if you'd like to
|
|
|
|
help, feel free to reach out via a Github issue.
|
|
|
|
|
2020-08-30 09:01:28 +00:00
|
|
|
Note that the API is not stabilized yet and expected to change as development progresses.
|
|
|
|
Once there are actual releases on crates.io, semantic versioning will be followed.
|
|
|
|
|
2020-08-08 14:01:51 +00:00
|
|
|
At this point, raw bindings are working in implot-sys, and more idiomatic interfaces
|
2020-08-23 19:26:27 +00:00
|
|
|
for plot creation as well a subset of the functionality for plots are implemented.
|
|
|
|
See below for an overview of the progress.
|
2020-08-23 18:10:24 +00:00
|
|
|
|
|
|
|
- [x] "BeginPlot"
|
|
|
|
- [x] Basic hello world
|
|
|
|
- [x] Plot flags
|
|
|
|
- [ ] Plotting functionality
|
2020-08-23 18:31:28 +00:00
|
|
|
- [x] Line plot
|
|
|
|
- [x] Text plot
|
2020-08-23 18:10:24 +00:00
|
|
|
- [ ] Scatter plot
|
|
|
|
- [ ] Bar plot
|
|
|
|
- [ ] Vertical
|
|
|
|
- [ ] Horizontal
|
|
|
|
- [ ] Error bar plot
|
|
|
|
- [ ] Vertical
|
|
|
|
- [ ] Horizontal
|
|
|
|
- [ ] Heatmap
|
|
|
|
- [ ] Pie chart
|
|
|
|
- [ ] Digital data
|
|
|
|
- [ ] Plot customization
|
2020-08-23 19:26:27 +00:00
|
|
|
- [x] Axis flags
|
|
|
|
- [x] Styling colors
|
2020-08-30 09:01:28 +00:00
|
|
|
- [x] Styling variables
|
2020-08-23 19:26:27 +00:00
|
|
|
- [ ] Colormaps
|
2020-08-23 18:10:24 +00:00
|
|
|
- [ ] Plot querying
|
2020-08-23 19:26:27 +00:00
|
|
|
- [x] is hovered
|
|
|
|
- [x] mouse position in plot
|
|
|
|
- [x] plot limits
|
2020-08-30 09:01:28 +00:00
|
|
|
- [x] is queried
|
|
|
|
- [x] get plot query
|
|
|
|
- [ ] Choice of y axis
|
2020-08-23 18:10:24 +00:00
|
|
|
- [ ] Utils
|
|
|
|
- [x] Plot limit setting
|
2020-08-30 09:01:28 +00:00
|
|
|
- [x] imgui-rs style safe push/pop stacks
|
2020-08-23 18:10:24 +00:00
|
|
|
- [ ] Plot tick setting
|
2020-08-30 09:01:28 +00:00
|
|
|
- [ ] Set Y axis setting for subsequent elements
|
2020-08-23 19:26:27 +00:00
|
|
|
- [ ] Plot position and size reading
|
2020-08-23 18:10:24 +00:00
|
|
|
- [ ] Pixel to plot position
|
|
|
|
- [ ] Plot to pixel position
|
|
|
|
- [ ] Push/pop plotclip rect (?)
|