What do the different WidthModes (and HeightModes) actually mean?
I'm doing some stuff with trying to align/display images in a scrolling container. Say I have a 16:9 image I want to display in scrolling container that fills a 500x600 window (similar code as `example_09_font_size.nim`).

With these types of settings, the images are all cut off within their containers:
```nim
image_container.widthMode = WidthMode_Fill
image_container.heightMode = HeightMode_Expand
...
control.heightMode = HeightMode_Expand
control.widthMode = WidthMode_Expand
control.onDraw = proc (event: DrawEvent) = event.control.canvas.drawImage(image, width=160, height=90)
```
![Screenshot_20230131_202428](https://user-images.githubusercontent.com/29703429/215720589-44a32700-e75e-4fb9-8a91-b7b1c710b087.png)
No permutation of Expands and Autos or whatever seems to make it better and give the uncropped images.

The only thing that worked is specifying a container height >=  the image height:
```nim
image_container.height = 90 + 35   # buffer
```
![Screenshot_20230131_203359](https://user-images.githubusercontent.com/29703429/215722734-132cc7e7-8f2d-4452-8ac5-aafa3c5dec5d.png)

But I feel like there should be an easier way for a container to accomodate its content's height without manually setting it (what else could all these Expands and Autos be for?); I think my lack of fundamental understanding of how the different modes actually work is bottlenecking my ability to make progress.

There's, asfaik, `_Expand`, `_Fill`, `_Auto`, `_Static`, but what exactly do they mean? The `example_10_drawing.nim` code says `_Fill` is to "fill out the whole window", but that sound like `_Expand` to me (especially from the `example_03_layout_container.nim` code, where all the widthmodes are `Expand` and seem to fill out the window just fine).

So, long story short... what do the different width/height modes actually mean?