This is mostly a refactor, but has some performance benefits:
* We (re)use the same tessellator as for everything else, leading to
less allocations
* We cull shapes before rendering them
Adding `RectShape::blur_width` means it can also be used for other
effects, such as glow.
* Closes https://github.com/emilk/egui/issues/4238
The comment in the code explains it well, but the short of it is this:
we can't handle a shadow blur width larger than the shadow rectangle, so
we need to clamp the blur. This means smaller things will cast shadows
with a smaller blur width, but that's better than having visual
glitches.
I often write constants at the top of my widget files, as a "config". I
kept writing stuff like that :
```rust
const DEFAULT_INNER_MARGIN: Margin = Margin { left: 17., right: 17., top: 7., bottom: 7. };
```
So I prefixed constructors for `Margin`, `Rounding` and `Shadow` const.
No code was changed.
I also added a `Shadow::new()` for similar reasons.
* Note the namechange of egui::color to egui::ecolor
* Use a solid triangle for collapsing headers and windows
* Add Shadow::NONE
* Add Visuals::panel_fill, window_fill and window_stroke
* Bug fix: ComboBox::width sets the outer width of the ComboBox
* egui_extras::Table: add functions to access the `Ui` for the header/body
* ComboBox: use solid triangle
* Tweak default menu margin
* Nudge panel separator lines so they stay visible
* Update changelogs