16 Commits

Author SHA1 Message Date
Thom Chiovoloni
f5cb071844 Fix worthwhile tests 2021-02-01 08:37:31 -08:00
Thom Chiovoloni
a359c3940f Update pointless test 2021-02-01 08:37:31 -08:00
Thom Chiovoloni
53828505ed Fix compile errors with 1.80 update 2021-02-01 08:37:31 -08:00
Thom Chiovoloni
59970d670e Constify a large number of fns 2021-02-01 03:00:04 -08:00
Thom Chiovoloni
4f1cde06f2 ImColor changes and improvements:
- Renamed to `ImColor32` to avoid confusion with `ImColor` from the C++.
  code: https://github.com/ocornut/imgui/blob/9499afdf/imgui.h#L2180
    - Eventually I'd probably like to add something mirroring the actual
      `ImColor`.

- Now supports construction and access from `const fn` where possible.
    - Still impossible for the `f32` APIs

- Now supports `.r`/`.g`/`.b`/.a` field access (read and write), by way
  of a new type `imgui::color::ImColor32Fields`, which essentially
  exists just to serve this purpose. This is a bit cludgey, but lets us
  provide the ability for reading and writing `r/g/b/a` values without
  adding many `fn get_r(self) -> u8` and `fn set_r(&mut self, r: u8);`
  style functions.

- No longer requires FFI calls to construct from RGB floats.
    - This gives much more freedom to the optimizer, as external calls
      are impenetrable optimization barriers (It has to pessimistially
      assume that they read/write to all globally accessable memory, and
      must be called in the exact order that is listed).
    - Also, it allows inlining these calls, and avoid computing the same
      value twice (if the args are the same).

    - Also improves usage from IDEs, debuggers, etc, and avoids a rare
      possibility of UB if NaN was passed in (however, this almost
      certainly could only cause problems if cross-lang LTO was used,
      which I believe we don't support).

    - This code is more complex than needed, but was taken from another
      project of mine (functions were renamed to line up with imgui's
      names), and has good (literally exhaustive) test coverage.

    - Unfortunately, float arithmetic in const fn is still not allowed,
      so for now these aren't usable `const fn`.

- Added utility constants to mirror the `IM_COL32_WHITE`,
  `IM_COL32_BLACK`, `IM_COL32_BLACK_TRANS` constants.
2021-02-01 01:45:39 -08:00
nsf
171d86aea1 Refactor WindowDrawList into DrawListMut and fix #413.
- Rename WindowDrawList -> DrawListMut. It's not about window draw lists, but
  about background/foreground draw lists as well. The naming was not an easy
  choice, but seems like in rust it's a common convention to add a Mut suffix for
  mutable entities. Imgui-rs already has DrawList and it acts as an immutable
  reference type for rendering implementations to consume. Hence the name
  DrawListMut, which becomes a mutable reference to draw list with methods
  to modify it.
- Add Ui::get_foreground_draw_list(). Same as Ui::get_background_draw_list()
  but for foreground.
- Add draw_list example which shows the use of all three draw lists
  (window, bg, fg).
2020-12-31 20:20:36 -08:00
Thom Chiovoloni
64a8d3260d Attempt to bludgeon the winit/glium/gfx versions into submission 2020-12-31 19:32:44 -08:00
Benedikt Mandelkow
9724686118 inline calls to key_index into methods which operate on keys
to make them easier to call for the user

closes #415
2020-12-31 13:31:53 -08:00
henbr
1ea6073821 fix, make items_count non-optional 2020-12-31 13:06:29 -08:00
henbr
936e63bdfa Add ListClipper wrapper 2020-12-31 13:06:29 -08:00
Thom Chiovoloni
59f3559224 Fix readme link 2020-12-16 17:54:32 -08:00
Thom Chiovoloni
18c02472fc Prep release 0.6.1 2020-12-16 17:53:16 -08:00
Willem Verstraeten
07cc96363f Support both glium 0.28 and 0.29 2020-12-16 17:39:57 -08:00
Willem Verstraeten
7e2293bde6 support winit-0.24 2020-12-15 20:47:54 -08:00
Willem Verstraeten
9210130872 added richer support for ListBox 2020-12-13 10:54:35 -08:00
Thom Chiovoloni
0df089ab29 Move to virtual workspace 2020-12-06 09:32:21 -08:00