1
0
mirror of https://github.com/emilk/egui.git synced 2026-09-01 14:20:04 -04:00
Commit Graph

68 Commits

Author SHA1 Message Date
Hubert Głuchowski
9d61f9c927 Fix some typos 2025-04-01 16:32:42 +02:00
Hubert Głuchowski
ff0e7d03f4 Don't add merged Galley to galley cache 2025-04-01 16:32:42 +02:00
Emil Ernerfeldt
00ed9c1547 Be more forgiving in our comparison 2025-03-30 20:29:52 +02:00
Emil Ernerfeldt
a72e10ab23 Remove outdated TODO 2025-03-30 20:18:06 +02:00
Emil Ernerfeldt
8a33a6a6ce Make the section index private so we don't need to calculate it corectly 2025-03-30 20:03:47 +02:00
Emil Ernerfeldt
d74bee536f Fix first performance performance problem 2025-03-30 18:54:15 +02:00
Emil Ernerfeldt
9e44490b31 Refactor galley size rounding 2025-03-30 17:13:39 +02:00
Emil Ernerfeldt
b0d0d2f279 Test that halign & justify works the same 2025-03-30 16:58:19 +02:00
Emil Ernerfeldt
4ee4572f02 Fix bug in code transforming TextShape 2025-03-30 16:50:05 +02:00
Emil Ernerfeldt
25f647322e Make test a bit more forgiving 2025-03-28 20:08:47 +01:00
Emil Ernerfeldt
1cdf525797 Remove dbg! 2025-03-28 16:10:49 +01:00
Emil Ernerfeldt
33ff4bd7da Simplify 2025-03-28 16:09:40 +01:00
Emil Ernerfeldt
2fb0764a24 Fix section_index 2025-03-28 16:08:46 +01:00
Emil Ernerfeldt
46ef7a1159 code cleanup 2025-03-28 15:55:23 +01:00
Emil Ernerfeldt
947945f0ba Remove done TODO 2025-03-28 15:13:57 +01:00
Emil Ernerfeldt
79d114dfb0 Use similar-asserts for better test output 2025-03-28 15:11:30 +01:00
Emil Ernerfeldt
2ac4c93cc3 Move Galley::concat 2025-03-28 12:54:53 +01:00
Emil Ernerfeldt
29d47c1641 Clean up code slightly 2025-03-28 12:52:07 +01:00
Emil Ernerfeldt
6f4732b068 Simplify the code slightly 2025-03-28 12:38:55 +01:00
Emil Ernerfeldt
3e89613dc1 Add messages to asserts 2025-03-28 12:29:12 +01:00
Emil Ernerfeldt
8a45db62f1 Create should_cache_each_paragraph_individually and heed max_rows 2025-03-28 11:33:56 +01:00
Hubert Głuchowski
085d9b56e9 Merge branch 'master' into cache_galley_lines 2025-03-26 19:08:40 +01:00
StratusFearMe21
52732b23a6 impl AsRef<[u8]> for FontData (#5757)
* [x] I have followed the instructions in the PR template

This PR implements `AsRef<[u8]>` for `FontData`, allowing it to be
passed into `fontdb`'s
[`Source`](https://docs.rs/fontdb/0.16.2/fontdb/enum.Source.html) type.
This would allow `egui` and `cosmic_text` to share font data with
eachother
2025-03-20 11:03:17 +01:00
Emil Ernerfeldt
77c9fd85bd cleanup 2025-01-02 02:29:19 +01:00
Emil Ernerfeldt
9fa294f21f Split out long function 2025-01-02 02:20:29 +01:00
Emil Ernerfeldt
d2f75e974c Merge branch 'master' into cache_galley_lines 2024-12-28 12:55:05 +01:00
Emil Ernerfeldt
dfcc679d5a Round widget coordinates to even multiple of 1/32 (#5517)
* Closes https://github.com/emilk/egui/pull/5197
* Closes https://github.com/emilk/egui/issues/5163

This should help prevent rounding errors in layout code.

@lucasmerlin you may wanna test this with `egui_flex`
2024-12-26 20:54:24 +01:00
Hubert Głuchowski
17a5f1f75e Fix incorrect behavior with LayoutJob::max_rows 2024-12-05 19:15:23 +01:00
Hubert Głuchowski
40f237d43c Add comment and check for newline before multiline layout 2024-12-05 18:45:36 +01:00
Hubert Głuchowski
c6592ec898 Fix nits 2024-12-04 19:30:13 +01:00
Fishhh
139f28640d Replace a hack with a proper implementation 2024-11-30 19:29:40 +01:00
Fishhh
bbe566256e Fix Row::ends_with_newline docs, explain skipping of last galley row 2024-11-30 18:17:38 +01:00
Fishhh
fd8413c62a Simplify layout_multiline loop loop into a while loop 2024-11-30 18:12:24 +01:00
Fishhh
1be24ba470 Respect LayoutJob::round_output_size_to_nearest_ui_point 2024-11-30 17:51:07 +01:00
Fishhh
66c83c31ce Move ends_with_newline back into Row 2024-11-30 17:51:07 +01:00
Fishhh
6147ff3668 Round PlacedRow positions to pixels during multiline layout 2024-11-30 16:59:38 +01:00
Fishhh
6d6bc3befb Respect first_row_min_height during multiline Galley layout 2024-11-30 16:47:18 +01:00
Fishhh
abbc561ae1 Correctly handle empty lines 2024-11-30 15:59:50 +01:00
Hubert Głuchowski
bc86bec1cb Properly handle row repositioning 2024-11-29 15:57:47 +01:00
Hubert Głuchowski
f028154da8 Move cached-multiline-layout code into a helper function 2024-11-29 13:02:49 +01:00
Hubert Głuchowski
3de1723659 Don't add leading space to more than one split layout section 2024-11-29 11:55:15 +01:00
Hubert Głuchowski
4e3f162801 Fix lints 2024-11-29 11:50:24 +01:00
Hubert Głuchowski
db32a1ed44 Make Galleys share Rows and store their offsets 2024-11-28 18:54:54 +01:00
Hubert Głuchowski
150c0f662b Cache individual lines of text in GalleyCache 2024-11-28 18:53:45 +01:00
Hubert Głuchowski
622b848c00 Fix typo 2024-11-28 16:47:05 +01:00
StarStarJ
3f5cd74de7 Put font data into Arc to reduce memory consumption (#5276)
egui never accesses the `FontDefinitions`' member fields mutably, except
in `fonts_tweak_ui` where it cloned the `FontDefinitions` object anyway.

This patch reduces system memory consumption for shared font
definitions.
And also removes some overhead from copying (e.g. for the per
`pixel_per_points` font atlas)

Also it allows to keep a copy of the font definitions outside of egui.

In my App that uses international fonts:
Before:

![image](https://github.com/user-attachments/assets/f8dfb4f4-a21c-447c-8cf9-83025ad6e960)

New:

![image](https://github.com/user-attachments/assets/9f297fbd-e620-4b7e-a32a-65073ee805ed)


Note: If `Arc` is not wanted, then it could ofc be abstracted away.

I know this is quite a breaking change API wise, but would like to hear
your opinion.
2024-11-01 13:30:02 +01:00
rustbasic
288c74e332 Expand max font atlas size from 8k to 16k (#5257)
When using fonts with an average of 50,000 characters,
'epaint texture atlas overflowed!' may be printed and cause problems.
It is necessary to expand the max value related to texture.

* Closes #5256

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2024-10-29 10:42:28 +01:00
frederik-uni
04ab5e7574 Context::add_font (#5228)
make it easier to add fonts. 

For example if I want to add a custom FontFamily or if the user wants to
add a Chinese fallback
* [x] I have followed the instructions in the PR template

---------

Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
2024-10-23 14:29:44 +02:00
Emil Ernerfeldt
f97f85089d Prevent text shrinking in tooltips; round wrap-width to integer (#5161)
* Closes https://github.com/emilk/egui/pull/5106
* Closes https://github.com/emilk/egui/issues/5084


Protect against rounding errors in egui layout code.

Say the user asks to wrap at width 200.0.
The text layout wraps, and reports that the final width was 196.0
points.
This than trickles up the `Ui` chain and gets stored as the width for a
tooltip (say).
On the next frame, this is then set as the max width for the tooltip,
and we end up calling the text layout code again, this time with a wrap
width of 196.0.
Except, somewhere in the `Ui` chain with added margins etc, a rounding
error was introduced,
so that we actually set a wrap-width of 195.9997 instead.
Now the text that fit perfectly at 196.0 needs to wrap one word earlier,
and so the text re-wraps and reports a new width of 185.0 points.
And then the cycle continues.

So this PR limits the text wrap-width to be an integer.

Related issues:
* https://github.com/emilk/egui/issues/4927
* https://github.com/emilk/egui/issues/4928
* https://github.com/emilk/egui/issues/5163

--- 

Pleas test this @rustbasic
2024-09-25 11:31:41 +02:00
rustbasic
7c7190f98d Clamp font size to between 0.1 and 2048 (#5139)
Fix: Font size limit to prevent panic
2024-09-22 19:14:03 +02:00