Commit Graph

1081 Commits

Author SHA1 Message Date
Emil Ernerfeldt a29154233b Add support for texture filters in WGPU backend 2022-05-22 17:40:56 +02:00
Zicklag 1a9a0d7ec8
Add the Ability to Specify Egui Texture Filters (#1636)
Only works for egui_glow
2022-05-22 16:56:51 +02:00
Emil Ernerfeldt f3e305a646 Replace `TODO:` with `TODO(emilk):` and update code guidelines 2022-05-21 16:53:25 +02:00
Emil Ernerfeldt d6fd5dec3b
Add single-threaded deadlock detection to RwMutex (#1619) 2022-05-21 14:08:19 +02:00
Emil Ernerfeldt 810b609a80 clippy fixes 2022-05-21 13:04:58 +02:00
Erlend Walstad f27f67b76b
Make color-hex optional (#1632) 2022-05-16 16:38:14 +02:00
Stanislav b008b147e5
Fix Plot auto_bounds when LinkedAxisGroup one axis (#1599)
Co-authored-by: Stanislav <enomado@users.noreply.github.com>
Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2022-05-15 19:27:30 +02:00
Luke Newcomb d2decfa338
Add ability to convert from a hex string to Color32 using macros (#1596) 2022-05-15 17:07:30 +02:00
Emil Ernerfeldt 2e4138d050
Add `InputState::stable_dt` (#1625)
This provides a better estimate of a typical frametime in reactive mode.

From the docstring of `stable_dt`:

Time since last frame (in seconds), but gracefully handles the first frame after sleeping in reactive mode.

In reactive mode (available in e.g. `eframe`), `egui` only updates when there is new input or something animating.
This can lead to large gaps of time (sleep), leading to large [`Self::unstable_dt`].

If `egui` requested a repaint the previous frame, then `egui` will use
`stable_dt = unstable_dt;`, but if `egui` did not not request a repaint last frame,
then `egui` will assume `unstable_dt` is too large, and will use
`stable_dt = predicted_dt;`.

This means that for the first frame after a sleep,
`stable_dt` will be a prediction of the delta-time until the next frame,
and in all other situations this will be an accurate measurement of time passed
since the previous frame.

Note that a frame can still stall for various reasons, so `stable_dt` can
still be unusually large in some situations.

When animating something, it is recommended that you use something like
`stable_dt.min(0.1)` - this will give you smooth animations when the framerate is good
(even in reactive mode), but will avoid large jumps when framerate is bad,
and will effectively slow down the animation when FPS drops below 10.
2022-05-12 11:23:53 +02:00
4JX 3d52cc8867
Fix docstring in area.rs (#1620) 2022-05-11 22:44:29 +02:00
sy1ntexx d850b47f9e
Added Extra1 & Extra2 pointer buttons (#1603)
Extra1 is usually extra back button on most mice & Extra2 is usually extra forward button.
2022-05-11 22:44:00 +02:00
Emil Ernerfeldt 9624de6c41
Fix dead-lock when alt-tabbing while also showing a tooltip (#1618)
Closes https://github.com/emilk/egui/issues/1609
2022-05-11 20:56:57 +02:00
4JX c47e20c733
Allow manually painting the CollapsingState icon (#1592)
* Allow manually painting the CollapsingState icon

* Update egui/src/containers/collapsing_header.rs

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>

* Oops

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2022-05-11 19:02:37 +02:00
Luke Newcomb e44c9b8e54
Fix image button padding on hover (#1595) 2022-05-11 11:58:15 +02:00
Emil Ernerfeldt 7b18fab7a4
Optimize tessellation of filled circles (#1616)
When painting a scatter plot we sometimes want to paint hundreds of thousands of points (filled circles) on screen every frame.

In this PR the font texture atlas is pre-populated with some filled circled of various radii. These are then used when painting (small) filled circled, which means A LOT less triangles and vertices are generated for them.

In a new benchmark we can see a 10x speedup in circle tessellation, but the the real benefit comes in the painting of these circles: since we generate a lot less vertices, the backend painter has less to do.

In a real-life scenario with a lot of things being painted (including around 100k points) I saw tessellation go from 35ms -> 7ms and painting go from 45ms -> 1ms. This means the total frame time went from 80ms to 8ms, or a 10x speedup.
2022-05-10 19:31:19 +02:00
Nigecat 87ca29173d
Fix typo in ui.rs (waker -> weaker) (#1586) 2022-05-06 10:36:49 +02:00
Alejandro Perea fe6e1ce28f
Add *_released & *_clicked PointerState methods (#1582) 2022-05-05 23:26:15 +02:00
Reilly Moore 1dd014cbed
mark the response of a toggle_value as changed on click (#1573) 2022-05-04 21:45:14 +02:00
Emil Ernerfeldt 32b4781da2
Improve web demo for mobile (#1556)
`egui_demo_app/lib`: add "About egui" window, and improve mobile layout

This makes the app responsive, removing the side bars on mobile and turning them into drop-down menus instead.
2022-05-02 13:13:35 +02:00
Emil Ernerfeldt b30224471c
Release 0.18.1 of egui & epaint - Change `Shape::Callback` to `&mut dyn Any` (#1552) 2022-05-01 11:35:29 +02:00
Emil Ernerfeldt dc26890a80 Release 0.18.0 - Shape::Callback, Table, and better text contrast 2022-04-30 20:27:27 +02:00
Emil Ernerfeldt b41fb585fe Add doclinks to egui_extras::RetainedImage 2022-04-30 18:36:24 +02:00
Emil Ernerfeldt 11e8ffa079 Reduce Plot::show code bloat by adding Plot::show_dyn 2022-04-30 17:51:07 +02:00
Emil Ernerfeldt 003dc4aac9 egui_demo_app: add link to my twitter 2022-04-30 17:50:39 +02:00
Emil Ernerfeldt b137f16472 Make members of `Response` public, but hide documentation
Discourage their direct use, but allow it
2022-04-30 15:49:50 +02:00
Emil Ernerfeldt bb421c7e8a
Remove `egui_web` and `epi` (#1545)
* Remove integration name (it is always eframe)

* Remove egui_web crate

* Move egui_web/CHANGELOG.md into eframe/CHANGELOG.md

* Remove all mentions of egui_web

* Remove epi crate and absorb into eframe

* egui_glow: only use puffin on native

* Remove WASM doc from CI (we don't generate it anyways!)

* Remove eframe::epi and improve eframe docs
2022-04-30 10:44:35 +02:00
Emil Ernerfeldt ed002acc68
Refactor: move things into eframe (#1542)
* Move all epi-related code from egui_glow into eframe

* Move epi stuff from egui-winit into eframe

* Remove mention of epi in egui

* Remove mention of epi in egui_glium

* Remove trait epi::NativeTexture

* Remove confusing mentions of epi

* Refactor egui_web: break up into smaller files

* Clean up feature flags further, and update changelogs

* Clean up check.sh

* Small cleanup of egui_web/Cargo.toml

* Fix dependencies for pure_glow example

* Fix clippy false positive
2022-04-29 08:17:49 +02:00
Emil Ernerfeldt 881f9b4161 Deprecate `CollapsingHeader::selectable/selected
Better to use the more powerful CollapsingState::show_header
2022-04-28 20:06:55 +02:00
Emil Ernerfeldt 39917bec26
Collapsing header with custom header (#1538)
* Returns openness in CollapsingResponse
* Make CollapsingState a building block for custom collapsing headers
* Add a demo of the custom collapsing header
* Revert to much simpler tree demo
* Add CollapsingState::is_open and CollapsingState::set_open
2022-04-28 11:09:44 +02:00
Emil Ernerfeldt 1133f3a42b Improve look of color button and `show_color` slightly 2022-04-27 10:06:42 +02:00
Emil Ernerfeldt 06802cb0a0 Add Rounding::at_least and Rounding::at_most 2022-04-27 10:05:09 +02:00
Emil Ernerfeldt e3b77e320a Fix broken doclink 2022-04-27 09:59:05 +02:00
Emil Ernerfeldt 2fd20308e5 Add Ui::toggle_value 2022-04-26 21:36:22 +02:00
Emil Ernerfeldt 95c0174331 Change canvas frame margin two points 2022-04-25 16:58:24 +02:00
trevyn 888cd9c3eb
Don't paint insertion point if text is immutable (#1523) 2022-04-21 09:19:40 +02:00
Emil Ernerfeldt f789159a4a Don't persist Grid sizes
A) there are potentially a lot of Grids, using up a lot of space
(and therefore serialization time).

B) if the code changes, the grid should also change,
and not remember old sizes
2022-04-19 21:28:45 +02:00
Emil Ernerfeldt 1dee439ab1 Added CursorIcons for resizing columns, rows and 8 cardinal directions 2022-04-19 16:56:27 +02:00
trevyn 2932c36238
Add triple-click support (#1512) 2022-04-19 15:14:55 +02:00
Emil Ernerfeldt e82ea0c4b4 Plot: estimate bounds for generator functions 2022-04-19 11:43:04 +02:00
Emil Ernerfeldt cde5f95fc9 code cleanup: replace some for_each with normal for-loops 2022-04-19 11:42:05 +02:00
Jan Haller e22f6d9a7e
Customize grid spacing in plots (#1180) 2022-04-19 11:35:05 +02:00
Emil Ernerfeldt 676ff047e9 Add Ui::scroll_with_delta, and improve scroll docs 2022-04-19 10:46:24 +02:00
Emil Ernerfeldt 5414e8a7fb Rename `Painter::sub_region` to `Painter::with_clip_rect` 2022-04-19 10:00:34 +02:00
Emil Ernerfeldt 2d2022fb72
Add Link widget (#1506)
This looks like a Hyperlink, but doesn't do anything when clicked.
Or rather: it lets the user decide what happens on click.

Closes https://github.com/emilk/egui/issues/1152
2022-04-16 22:55:15 +02:00
Emil Ernerfeldt 2355828d41 Remove epaint::mutex::Arc type alias 2022-04-15 15:18:21 +02:00
Stanisław Jelnicki 2745699bd6
Add `Ui::spinner` shortcut method (#1494) 2022-04-15 07:39:08 +02:00
tami5 b738418243
New example 'custom_font_style' + improve docs (#1476) 2022-04-14 07:54:01 +02:00
Emil Ernerfeldt a7b6334784 Misc doc improvements 2022-04-13 22:14:34 +02:00
Emil Ernerfeldt 2ae93c40ab
Move examples out of `eframe/examples` into `examples/` (#1486)
* Move examples out of eframe/examples into examples/

Give each example a `Cargo.toml` and `src/main.rs`.
This makes it easier for people to use as templates.

* Update README.md with more deps needed on vanilla Ubuntu
* Install libgtk-3-dev on CI, hoping that will fix something
2022-04-13 16:13:24 +02:00
Emil Ernerfeldt 170b21b63e
Add opt-in support for the 'puffin' profiler in eframe (#1483) 2022-04-13 11:06:13 +02:00