Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Round widget coordinates to even multiple of 1/32 #5517

Merged
merged 16 commits into from
Dec 26, 2024
Merged

Conversation

emilk
Copy link
Owner

@emilk emilk commented Dec 26, 2024

This should help prevent rounding errors in layout code.

@lucasmerlin you may wanna test this with egui_flex

@emilk emilk added egui emath Relates to the emath crate labels Dec 26, 2024
Copy link

Preview available at https://egui-pr-preview.github.io/pr/5517-emilkround-coordinates
Note that it might take a couple seconds for the update to show up after the preview_build workflow has completed.

@emilk emilk changed the title Round widget coordinates to even multiple of 1/8 Round widget coordinates to even multiple of 1/32 Dec 26, 2024
@emilk emilk force-pushed the emilk/round-coordinates branch from 0dcf5a0 to 33731f6 Compare December 26, 2024 11:29
@emilk emilk added the layout Related to widget layout label Dec 26, 2024
@emilk emilk force-pushed the emilk/round-coordinates branch from ebf73e4 to 56f7885 Compare December 26, 2024 16:08
@emilk emilk merged commit dfcc679 into master Dec 26, 2024
46 checks passed
@emilk emilk deleted the emilk/round-coordinates branch December 26, 2024 19:54
emilk added a commit that referenced this pull request Dec 26, 2024
* Merge this first: #5517

This aligns all rectangles and (horizontal or vertical) line segments to
the physical pixel grid in the `epaint::Tessellator`, making these
shapes appear crisp everywhere.

* Closes #5164
* Closes #3667

This undoes a lot of the explicit, egui-side aligning added in:
* #4943

The new approach has several benefits over the old one:

* It is done automatically by epaint, so it is applied to everything (no
longer opt-in)
* It is applied after any layer transforms (so it always works)
* It makes line segments crisper on high-DPI screens
* All filled rectangles now has sides that end on pixel boundaries
@lucasmerlin
Copy link
Collaborator

Nice! Gave it a test in egui_flex, it works flawlessly and allows me to get rid of my custom rounding code.
lucasmerlin/hello_egui#49

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
egui emath Relates to the emath crate layout Related to widget layout
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Round widget coordinates to integers
2 participants