mirror of
https://github.com/emilk/egui.git
synced 2026-09-01 06:10:06 -04:00
Add opacity factor to TextShape (#3916)
<!-- Please read the "Making a PR" section of [`CONTRIBUTING.md`](https://github.com/emilk/egui/blob/master/CONTRIBUTING.md) before opening a Pull Request! * Keep your PR:s small and focused. * If applicable, add a screenshot or gif. * If it is a non-trivial addition, consider adding a demo for it to `egui_demo_lib`, or a new example. * Do NOT open PR:s from your `master` branch, as that makes it hard for maintainers to add commits to your PR. * Remember to run `cargo fmt` and `cargo cranky`. * Open the PR as a draft until you have self-reviewed it and run `./scripts/check.sh`. * When you have addressed a PR comment, mark it as resolved. Please be patient! I will review your PR, but my time is limited! --> This PR simply allows you to override the opacity of a Galley when you draw it on screen. Last year I opened #3548 and some changes were requested to the PR, but unfortunately school got really busy and I wasn't able to apply them. This PR supersedes #3548 and applys the changes requested in that PR Closes #3548
This commit is contained in:
@@ -1474,6 +1474,7 @@ impl Tessellator {
|
||||
underline,
|
||||
override_text_color,
|
||||
fallback_color,
|
||||
opacity_factor,
|
||||
angle,
|
||||
} = text_shape;
|
||||
|
||||
@@ -1481,6 +1482,10 @@ impl Tessellator {
|
||||
return;
|
||||
}
|
||||
|
||||
if *opacity_factor <= 0.0 {
|
||||
return;
|
||||
}
|
||||
|
||||
if galley.pixels_per_point != self.pixels_per_point {
|
||||
eprintln!("epaint: WARNING: pixels_per_point (dpi scale) have changed between text layout and tessellation. \
|
||||
You must recreate your text shapes if pixels_per_point changes.");
|
||||
@@ -1548,6 +1553,10 @@ impl Tessellator {
|
||||
color = *fallback_color;
|
||||
}
|
||||
|
||||
if *opacity_factor < 1.0 {
|
||||
color = color.gamma_multiply(*opacity_factor);
|
||||
}
|
||||
|
||||
crate::epaint_assert!(color != Color32::PLACEHOLDER, "A placeholder color made it to the tessellator. You forgot to set a fallback color.");
|
||||
|
||||
let offset = if *angle == 0.0 {
|
||||
|
||||
Reference in New Issue
Block a user