Release 0.17.0 - Improved font selection and image handling

This commit is contained in:
Emil Ernerfeldt 2022-02-22 19:32:30 +01:00
parent 83225f46ad
commit a05520b9d3
25 changed files with 968 additions and 822 deletions

View file

@ -1,12 +1,14 @@
# egui changelog
All notable changes to the egui crate will be documented in this file.
All notable changes to the `egui` crate will be documented in this file.
NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_web`](egui_web/CHANGELOG.md), [`egui-winit`](egui-winit/CHANGELOG.md), [`egui_glium`](egui_glium/CHANGELOG.md), and [`egui_glow`](egui_glow/CHANGELOG.md) have their own changelogs!
## Unreleased
## 0.17.0 - 2022-02-22 - Improved font selection and image handling
### Added ⭐
* Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)):
* You can now select any font size and family using `RichText::size` amd `RichText::family` and the new `FontId`.
@ -42,11 +44,6 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w
* `Context` can now be cloned and stored between frames ([#1050](https://github.com/emilk/egui/pull/1050)).
* Renamed `Ui::visible` to `Ui::is_visible`.
* Split `Event::Text` into `Event::Text` and `Event::Paste` ([#1058](https://github.com/emilk/egui/pull/1058)).
* For integrations:
* `Output` has now been renamed `PlatformOutput` and `Context::run` now returns the new `FullOutput` ([#1292](https://github.com/emilk/egui/pull/1292)).
* `FontImage` has been replaced by `TexturesDelta` (found in `FullOutput`), describing what textures were loaded and freed each frame ([#1110](https://github.com/emilk/egui/pull/1110)).
* The painter must support partial texture updates ([#1149](https://github.com/emilk/egui/pull/1149)).
* Added `RawInput::max_texture_side` which should be filled in with e.g. `GL_MAX_TEXTURE_SIZE` ([#1154](https://github.com/emilk/egui/pull/1154)).
* Replaced `Style::body_text_style` with more generic `Style::text_styles` ([#1154](https://github.com/emilk/egui/pull/1154)).
* `TextStyle` is no longer `Copy` ([#1154](https://github.com/emilk/egui/pull/1154)).
* Replaced `TextEdit::text_style` with `TextEdit::font` ([#1154](https://github.com/emilk/egui/pull/1154)).
@ -55,9 +52,13 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w
* Replaced `corner_radius: f32` with `rounding: Rounding`, allowing per-corner rounding settings ([#1206](https://github.com/emilk/egui/pull/1206)).
* Replaced Frame's `margin: Vec2` with `margin: Margin`, allowing for different margins on opposing sides ([#1219](https://github.com/emilk/egui/pull/1219)).
* Renamed `Plot::custom_label_func` to `Plot::label_formatter` ([#1235](https://github.com/emilk/egui/pull/1235)).
* Tooltips that don't fit the window don't flicker anymore ([#1240](https://github.com/emilk/egui/pull/1240)).
* `Areas::layer_id_at` ignores non interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)).
* `Areas::layer_id_at` ignores non-interatable layers (i.e. Tooltips) ([#1240](https://github.com/emilk/egui/pull/1240)).
* `ScrollArea`:s will not shrink below a certain minimum size, set by `min_scrolled_width/min_scrolled_height` ([1255](https://github.com/emilk/egui/pull/1255)).
* For integrations:
* `Output` has now been renamed `PlatformOutput` and `Context::run` now returns the new `FullOutput` ([#1292](https://github.com/emilk/egui/pull/1292)).
* `FontImage` has been replaced by `TexturesDelta` (found in `FullOutput`), describing what textures were loaded and freed each frame ([#1110](https://github.com/emilk/egui/pull/1110)).
* The painter must support partial texture updates ([#1149](https://github.com/emilk/egui/pull/1149)).
* Added `RawInput::max_texture_side` which should be filled in with e.g. `GL_MAX_TEXTURE_SIZE` ([#1154](https://github.com/emilk/egui/pull/1154)).
### Fixed 🐛
* Plot `Orientation` was not public, although fields using this type were ([#1130](https://github.com/emilk/egui/pull/1130)).
@ -97,6 +98,7 @@ NOTE: [`epaint`](epaint/CHANGELOG.md), [`eframe`](eframe/CHANGELOG.md), [`egui_w
* [xudesheng](https://github.com/xudesheng)
* [yusdacra](https://github.com/yusdacra)
## 0.16.1 - 2021-12-31 - Add back `CtxRef::begin_frame,end_frame`
### Added ⭐

24
Cargo.lock generated
View file

@ -982,7 +982,7 @@ checksum = "6907e25393cdcc1f4f3f513d9aac1e840eb1cc341a0fccb01171f7d14d10b946"
[[package]]
name = "eframe"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"egui",
"egui-winit",
@ -999,7 +999,7 @@ dependencies = [
[[package]]
name = "egui"
version = "0.16.1"
version = "0.17.0"
dependencies = [
"ahash 0.7.6",
"epaint",
@ -1011,7 +1011,7 @@ dependencies = [
[[package]]
name = "egui-winit"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"copypasta",
"dark-light",
@ -1027,7 +1027,7 @@ dependencies = [
[[package]]
name = "egui_demo_app"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"console_error_panic_hook",
"eframe",
@ -1038,7 +1038,7 @@ dependencies = [
[[package]]
name = "egui_demo_lib"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"chrono",
"criterion",
@ -1056,7 +1056,7 @@ dependencies = [
[[package]]
name = "egui_extras"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"egui",
"image",
@ -1068,7 +1068,7 @@ dependencies = [
[[package]]
name = "egui_glium"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"ahash 0.7.6",
"bytemuck",
@ -1081,7 +1081,7 @@ dependencies = [
[[package]]
name = "egui_glow"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"bytemuck",
"egui",
@ -1097,7 +1097,7 @@ dependencies = [
[[package]]
name = "egui_web"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"bytemuck",
"egui",
@ -1135,7 +1135,7 @@ checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457"
[[package]]
name = "emath"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"bytemuck",
"mint",
@ -1199,7 +1199,7 @@ dependencies = [
[[package]]
name = "epaint"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"ab_glyph",
"ahash 0.7.6",
@ -1215,7 +1215,7 @@ dependencies = [
[[package]]
name = "epi"
version = "0.16.0"
version = "0.17.0"
dependencies = [
"directories-next",
"egui",

View file

@ -28,10 +28,15 @@ deny = [
]
skip = [
{ name = "time" }, # old version pulled in by unmaintianed crate 'chrono'
{ name = "ahash" }, # old version via dark-light
{ name = "arrayvec" }, # old version via tiny-skia
{ name = "time" }, # old version pulled in by unmaintianed crate 'chrono'
{ name = "ttf-parser" }, # different versions pulled in by ab_glyph and usvg
]
skip-tree = [
{ name = "eframe", version = "0.16.0" },
{ name = "criterion" }, # dev-dependnecy
{ name = "glium" }, # legacy crate, lots of old dependencies
{ name = "glutin" }, # legacy crate, lots of old dependencies
]

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -5,6 +5,9 @@ NOTE: [`egui_web`](../egui_web/CHANGELOG.md), [`egui-winit`](../egui-winit/CHANG
## Unreleased
## 0.17.0 - 2022-02-22
* Removed `Frame::alloc_texture`. Use `egui::Context::load_texture` instead ([#1110](https://github.com/emilk/egui/pull/1110)).
* The default native backend is now `egui_glow` (instead of `egui_glium`) ([#1020](https://github.com/emilk/egui/pull/1020)).
* The default web painter is now `egui_glow` (instead of WebGL) ([#1020](https://github.com/emilk/egui/pull/1020)).

View file

@ -1,6 +1,6 @@
[package]
name = "eframe"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "egui framework - write GUI apps that compiles to web and/or natively"
edition = "2021"
@ -49,18 +49,18 @@ screen_reader = [
[dependencies]
egui = { version = "0.16.0", path = "../egui", default-features = false }
epi = { version = "0.16.0", path = "../epi" }
egui = { version = "0.17.0", path = "../egui", default-features = false }
epi = { version = "0.17.0", path = "../epi" }
# native:
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
egui-winit = { version = "0.16.0", path = "../egui-winit", default-features = false }
egui_glium = { version = "0.16.0", path = "../egui_glium", default-features = false, features = ["clipboard", "epi", "links"], optional = true }
egui_glow = { version = "0.16.0", path = "../egui_glow", default-features = false, features = ["clipboard", "epi", "links", "winit"], optional = true }
egui-winit = { version = "0.17.0", path = "../egui-winit", default-features = false }
egui_glium = { version = "0.17.0", path = "../egui_glium", default-features = false, features = ["clipboard", "epi", "links"], optional = true }
egui_glow = { version = "0.17.0", path = "../egui_glow", default-features = false, features = ["clipboard", "epi", "links", "winit"], optional = true }
# web:
[target.'cfg(target_arch = "wasm32")'.dependencies]
egui_web = { version = "0.16.0", path = "../egui_web", default-features = false, features = ["glow"] }
egui_web = { version = "0.17.0", path = "../egui_web", default-features = false, features = ["glow"] }
[dev-dependencies]

View file

@ -1,9 +1,11 @@
# Changelog for egui-winit
All notable changes to the `egui-winit` integration will be noted in this file.
## Unreleased
## 0.17.0 - 2022-02-22
* Fixed horizontal scrolling direction on Linux.
* Replaced `std::time::Instant` with `instant::Instant` for WebAssembly compatability ([#1023](https://github.com/emilk/egui/pull/1023))
* Automatically detect and apply dark or light mode from system ([#1045](https://github.com/emilk/egui/pull/1045)).

View file

@ -1,6 +1,6 @@
[package]
name = "egui-winit"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Bindings for using egui with winit"
edition = "2021"
@ -43,12 +43,12 @@ convert_bytemuck = ["egui/convert_bytemuck"]
[dependencies]
egui = { version = "0.16.0", path = "../egui", default-features = false, features = ["single_threaded", "tracing"] }
egui = { version = "0.17.0", path = "../egui", default-features = false, features = ["single_threaded", "tracing"] }
instant = { version = "0.1", features = ["wasm-bindgen"] }
tracing = "0.1"
winit = "0.26.1"
epi = { version = "0.16.0", path = "../epi", optional = true }
epi = { version = "0.17.0", path = "../epi", optional = true }
copypasta = { version = "0.7", optional = true }
dark-light = { version = "0.2.1", optional = true } # detect dark mode system preference

View file

@ -1,6 +1,6 @@
[package]
name = "egui"
version = "0.16.1"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "An easy-to-use immediate mode GUI that runs on both web and native"
edition = "2021"
@ -58,7 +58,7 @@ multi_threaded = ["epaint/multi_threaded"]
[dependencies]
epaint = { version = "0.16.0", path = "../epaint", default-features = false }
epaint = { version = "0.17.0", path = "../epaint", default-features = false }
ahash = "0.7"
nohash-hasher = "0.2"

View file

@ -1,6 +1,6 @@
[package]
name = "egui_demo_app"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
license = "MIT OR Apache-2.0"
edition = "2021"
@ -23,14 +23,14 @@ syntax_highlighting = ["egui_demo_lib/syntax_highlighting"]
[dependencies]
eframe = { version = "0.16.0", path = "../eframe" }
eframe = { version = "0.17.0", path = "../eframe" }
# To use the old glium backend instead:
# eframe = { version = "0.16.0", path = "../eframe", default-features = false, features = ["default_fonts", "egui_glium"] }
# eframe = { version = "0.17.0", path = "../eframe", default-features = false, features = ["default_fonts", "egui_glium"] }
egui_demo_lib = { version = "0.16.0", path = "../egui_demo_lib", features = ["extra_debug_asserts"] }
egui_demo_lib = { version = "0.17.0", path = "../egui_demo_lib", features = ["extra_debug_asserts"] }
tracing-subscriber = "0.3"
[target.'cfg(target_arch = "wasm32")'.dependencies]
console_error_panic_hook = "0.1.6"
tracing-wasm = "0.2"
tracing-wasm = "0.2"

View file

@ -1,6 +1,6 @@
[package]
name = "egui_demo_lib"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Example library for egui"
edition = "2021"
@ -39,15 +39,15 @@ syntax_highlighting = ["syntect"]
[dependencies]
egui = { version = "0.16.0", path = "../egui", default-features = false }
epi = { version = "0.16.0", path = "../epi" }
egui = { version = "0.17.0", path = "../egui", default-features = false }
epi = { version = "0.17.0", path = "../epi" }
chrono = { version = "0.4", features = ["js-sys", "wasmbind"], optional = true }
enum-map = { version = "2", features = ["serde"] }
unicode_names2 = { version = "0.5.0", default-features = false }
# feature "http":
egui_extras = { version = "0.16.0", path = "../egui_extras", features = ["image"], optional = true }
egui_extras = { version = "0.17.0", path = "../egui_extras", features = ["image"], optional = true }
ehttp = { version = "0.2.0", optional = true }
image = { version = "0.24", default-features = false, features = ["jpeg", "png"], optional = true }
poll-promise = { version = "0.1", default-features = false, optional = true }

View file

@ -3,4 +3,7 @@ All notable changes to the `egui_extras` integration will be noted in this file.
## Unreleased
## 0.17.0 - 2022-02-22
* `RetainedImage`: conventience for loading svg, png, jpeg etc and showing them in egui.

View file

@ -1,6 +1,6 @@
[package]
name = "egui_extras"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Extra functionality and widgets for the egui GUI library"
edition = "2021"
@ -32,7 +32,7 @@ svg = ["resvg", "tiny-skia", "usvg"]
[dependencies]
egui = { version = "0.16.1", path = "../egui", default-features = false, features = ["single_threaded"] }
egui = { version = "0.17.0", path = "../egui", default-features = false, features = ["single_threaded"] }
parking_lot = "0.12"
# Optional dependencies:

View file

@ -3,6 +3,9 @@ All notable changes to the `egui_glium` integration will be noted in this file.
## Unreleased
## 0.17.0 - 2022-02-22
* `EguiGlium::run` no longer returns the shapes to paint, but stores them internally until you call `EguiGlium::paint` ([#1110](https://github.com/emilk/egui/pull/1110)).
* Optimize the painter and texture uploading ([#1110](https://github.com/emilk/egui/pull/1110)).
* Automatically detect and apply dark or light mode from system ([#1045](https://github.com/emilk/egui/pull/1045)).

View file

@ -1,6 +1,6 @@
[package]
name = "egui_glium"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Bindings for using egui natively using the glium library"
edition = "2021"
@ -51,12 +51,12 @@ screen_reader = ["egui-winit/screen_reader"]
[dependencies]
egui = { version = "0.16.0", path = "../egui", default-features = false, features = [
egui = { version = "0.17.0", path = "../egui", default-features = false, features = [
"convert_bytemuck",
"single_threaded",
] }
egui-winit = { version = "0.16.0", path = "../egui-winit", default-features = false, features = ["epi"] }
epi = { version = "0.16.0", path = "../epi", optional = true }
egui-winit = { version = "0.17.0", path = "../egui-winit", default-features = false, features = ["epi"] }
epi = { version = "0.17.0", path = "../epi", optional = true }
ahash = "0.7"
bytemuck = "1.7"

View file

@ -3,6 +3,9 @@ All notable changes to the `egui_glow` integration will be noted in this file.
## Unreleased
## 0.17.0 - 2022-02-22
* `EguiGlow::run` no longer returns the shapes to paint, but stores them internally until you call `EguiGlow::paint` ([#1110](https://github.com/emilk/egui/pull/1110)).
* Added `set_texture_filter` method to `Painter` ([#1041](https://github.com/emilk/egui/pull/1041)).
* Fix failure to run in Chrome ([#1092](https://github.com/emilk/egui/pull/1092)).

View file

@ -1,6 +1,6 @@
[package]
name = "egui_glow"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Bindings for using egui natively using the glow library"
edition = "2021"
@ -55,11 +55,11 @@ winit = ["egui-winit", "glutin"]
[dependencies]
egui = { version = "0.16.0", path = "../egui", default-features = false, features = [
egui = { version = "0.17.0", path = "../egui", default-features = false, features = [
"convert_bytemuck",
"single_threaded",
] }
epi = { version = "0.16.0", path = "../epi", optional = true }
epi = { version = "0.17.0", path = "../epi", optional = true }
bytemuck = "1.7"
glow = "0.11"
@ -67,7 +67,7 @@ memoffset = "0.6"
tracing = "0.1"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
egui-winit = { version = "0.16.0", path = "../egui-winit", default-features = false, features = ["dark-light", "epi"], optional = true }
egui-winit = { version = "0.17.0", path = "../egui-winit", default-features = false, features = ["dark-light", "epi"], optional = true }
glutin = { version = "0.28.0", optional = true }
[target.'cfg(target_arch = "wasm32")'.dependencies]

View file

@ -1,9 +1,11 @@
# Changelog for egui_web
All notable changes to the `egui_web` integration will be noted in this file.
## Unreleased
## 0.17.0 - 2022-02-22
* The default painter is now glow instead of WebGL ([#1020](https://github.com/emilk/egui/pull/1020)).
* Made the WebGL painter opt-in ([#1020](https://github.com/emilk/egui/pull/1020)).
* Fixed glow failure on Chromium ([#1092](https://github.com/emilk/egui/pull/1092)).

View file

@ -1,6 +1,6 @@
[package]
name = "egui_web"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Bindings for compiling egui code to WASM for a web page"
license = "MIT OR Apache-2.0"
@ -47,13 +47,13 @@ screen_reader = ["tts"]
[dependencies]
egui = { version = "0.16.0", path = "../egui", default-features = false, features = [
egui = { version = "0.17.0", path = "../egui", default-features = false, features = [
"convert_bytemuck",
"single_threaded",
"tracing",
] }
egui_glow = { version = "0.16.0",path = "../egui_glow", default-features = false, optional = true }
epi = { version = "0.16.0", path = "../epi" }
egui_glow = { version = "0.17.0",path = "../egui_glow", default-features = false, optional = true }
epi = { version = "0.17.0", path = "../epi" }
bytemuck = "1.7"
js-sys = "0.3"

View file

@ -1,6 +1,6 @@
[package]
name = "emath"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Minimal 2D math library for GUI work"
edition = "2021"

View file

@ -1,9 +1,11 @@
# epaint changelog
All notable changes to the epaint crate will be documented in this file.
## Unreleased
## 0.17.0 - 2022-02-22
* Much improved font selection ([#1154](https://github.com/emilk/egui/pull/1154)):
* Replaced `TextStyle` with `FontId` which lets you pick any font size and font family.
* Replaced `Fonts::font_image` with `font_image_delta` for partial font atlas updates.

View file

@ -1,6 +1,6 @@
[package]
name = "epaint"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Minimal 2D graphics library for GUI work"
edition = "2021"
@ -55,7 +55,7 @@ multi_threaded = ["parking_lot"]
[dependencies]
emath = { version = "0.16.0", path = "../emath" }
emath = { version = "0.17.0", path = "../emath" }
ab_glyph = "0.2.11"
ahash = { version = "0.7", features = ["std"], default-features = false }

View file

@ -1,6 +1,6 @@
[package]
name = "epi"
version = "0.16.0"
version = "0.17.0"
authors = ["Emil Ernerfeldt <emil.ernerfeldt@gmail.com>"]
description = "Backend-agnostic interface for writing apps using egui"
edition = "2021"
@ -33,7 +33,7 @@ persistence = ["ron", "serde", "egui/persistence"]
[dependencies]
egui = { version = "0.16.0", path = "../egui", default-features = false, features = ["single_threaded"] }
egui = { version = "0.17.0", path = "../egui", default-features = false, features = ["single_threaded"] }
tracing = "0.1"
directories-next = { version = "2", optional = true }

View file

@ -46,7 +46,7 @@ cargo doc --document-private-items --no-deps --all-features
(cd epaint && cargo check --all-features)
(cd epi && cargo check --all-features)
./sh/wasm_bindgen_check.sh --fast
./sh/wasm_bindgen_check.sh
# cargo install cargo-deny
cargo deny check