All notable changes to the epaint crate will be documented in this file.
This file is updated upon each release.
Changes since the last release can be found at https://github.com/emilk/egui/compare/latest...HEAD or by running the scripts/generate_changelog.py
script.
- Nothing new
- Fix visual glitch on the right side of highly rounded rectangles #4244
- Prevent visual glitch when shadow blur width is very high #4245
- Add
ColorImage::from_gray_iter
#3536 (thanks @wangxiaochuTHU!) - Convenience const fn for
Margin
,Rounding
andShadow
#4080 (thanks @0Qwel!) - Added
Shape::{scale,translate}
wrappers #4090 (thanks @varphone!) - Add
EllipseShape
#4122 (thanks @TheTacBanana!) - Add
Margin
toepaint
#4231 - CSS-like
Shadow
with offset, spread, and blur #4232
- Nothing new
- Nothing new
- Add
Align2::anchor_size
#3863 - Add opacity factor to
TextShape
#3916 (thanks @StratusFearMe21!) - Parallel tessellation with opt-in
rayon
feature #3934
- Replace a special
Color32::PLACEHOLDER
with widget fallback color #3727 - Add support for dashed lines with offset #3720 (thanks @oscargus!)
- Impl
Clone
forFonts
#3737 - Fix: allow using the full Private Use Area for custom fonts #3509 (thanks @varphone!)
- Add
Color32::from_hex
andColor32::to_hex
#3570 #3777 (thanks @YgorSouza!)
- Optimize
FontImage::srgba_pixels
and reduce the initial font atlas texture size from 8MiB -> 1MiB #3666
- Use
impl Into<Stroke>
as argument in a few more places #3420 (thanks @Phen-Ro!) - Update MSRV to Rust 1.72 #3595
- Make
ViewportInPixels
use integers, and clamp to bounds #3604 (thanks @Wumpf!)
- Update MSRV to Rust 1.70.0 #3310
- Add option to truncate text at wrap width #3244 #3366
- Add control of line height and letter spacing #3302
- Support images with rounded corners #3257
- Add
ColorImage::from_gray
#3166 (thanks @thomaseliot!) - Provide
into_inner()
foregui::mutex::{Mutex, RwLock}
#3110 (thanks @KmolYuan!) - Fix problems with tabs in text #3355
- Refactor: change
ClippedShape
from struct-enum to a normal struct #3225 - Document when
Galley
s get invalidated #3024 (thanks @e00E!)
- Fix compiling
epaint
withoutbytemuck
dependency #2913 (thanks @lunixbochs!) - Fix documentation for
TextureId::Managed(0)
#2998 (thanks @andersk!)
- Improve the look of thin white lines (#2437).
- Don't render
\r
(Carriage Return) (#2452). - Fix bug in
Mesh::split_to_u16
(#2459). - Improve rendering of very thin rectangles.
⚠️ BREAKING: Fix text being too small (#2069).⚠️ BREAKING: epaint now expects integrations to do all color blending in gamma space (#2071).- Improve mixed CJK/Latin line-breaking (#1986).
- Added
Fonts::has_glyph(s)
for querying if a glyph is supported (#2202). - Added support for thin space.
- Split out color into its own crate,
ecolor
(#2399).
- MSRV (Minimum Supported Rust Version) is now
1.61.0
(#1846). - Added
epaint::hex_color!
to createColor32
's from hex strings under thecolor-hex
feature (#1596). - Optimize tessellation of filled circles by 10x or more (#1616).
- Added opt-in feature
deadlock_detection
to detect double-lock of mutexes on the same thread (#1619). - Texture loading now takes a
TextureOptions
with minification and magnification filters (#2224).
- Change
Shape::Callback
from&dyn Any
to&mut dyn Any
to support more backends.
- MSRV (Minimum Supported Rust Version) is now
1.60.0
(#1467). - Added
Shape::Callback
for backend-specific painting (#1351). - Added more text wrapping options (#1291):
- Added
TextWrapping
struct containing all wrapping options. - Added
LayoutJob::wrap
field containing these options. - Moved
LayoutJob::wrap_width
toTextWrapping::max_width
. - Added
TextWrapping::max_rows
to limit amount of rows the text should have. - Added
TextWrapping::break_anywhere
to control should the text break at appropriate places or not. - Added
TextWrapping::overflow_character
to specify what character should be used to represent clipped text.
- Added
- Removed the
single_threaded/multi_threaded
flags - epaint is now always thread-safe (#1390). Tessellator::from_options
is nowTessellator::new
(#1408).- Renamed
TessellationOptions::anti_alias
tofeathering
(#1408). - Renamed
AlphaImage
toFontImage
to discourage any other use for it (#1412). - Dark text is darker and more readable on bright backgrounds (#1412).
- Fixed panic when tessellating a
Shape::Vec
containing meshes with differingTextureId
s (#1445). - Added
Shape::galley_with_color
which adds the functionality ofPainter::galley_with_color
into the Shape enum (#1461). - Renamed the feature
convert_bytemuck
tobytemuck
(#1467). - Renamed the feature
serialize
toserde
(#1467). - Added line breaking rules for Japanese text (#1498).
- Optimize tessellation of circles and boxes with rounded corners (#1547).
- Much improved font selection (#1154):
- Replaced
TextStyle
withFontId
which lets you pick any font size and font family. - Replaced
Fonts::font_image
withfont_image_delta
for partial font atlas updates.
- Replaced
- Made the v-align and scale of user fonts tweakable (#1241).
- Added
ImageData
andTextureManager
for loading images into textures (#1110). - Added
Shape::dashed_line_many
(#1027). - Replaced
corner_radius: f32
withrounding: Rounding
, allowing per-corner rounding settings (#1206). - Fixed anti-aliasing of filled paths with counter-clockwise winding order.
- Improve the anti-aliasing of filled paths with sharp corners, at the cost of these corners sometimes becoming badly extruded instead (see emilk#1226).
Fonts::layout_job
: New text layout engine allowing mixing fonts, colors and styles, with underlining and strikethrough.- New
CircleShape
,PathShape
,RectShape
andTextShape
used inenum Shape
. - Added support for rotated text (see
TextShape
). - Added
"convert_bytemuck"
feature.