From c119fc59012375cd2550d8e6e2f3d9aabf72636f Mon Sep 17 00:00:00 2001 From: Tig Date: Fri, 19 Jul 2024 15:23:28 -0600 Subject: [PATCH] Updated DimAuto.md --- docfx/docs/dimauto.md | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/docfx/docs/dimauto.md b/docfx/docs/dimauto.md index e138348d5..42c6c2a68 100644 --- a/docfx/docs/dimauto.md +++ b/docfx/docs/dimauto.md @@ -2,7 +2,7 @@ The `Dim.Auto` type is a type of `Dim` that automatically sizes the view based on its content. This is useful when you want to size a view based on the content it contains. That content can either be the `Text`, the `SubViews`, or something else defined by the view. -Like all `Dim` types, `Dim.Auto` is used to set the `Width` or `Height` of a view. +Like all `Dim` types, `Dim.Auto` is used to set the `Width` or `Height` of a view and can be combined with other `Dim` types using addition or subtraction (see. `DimCombine`). The `DimAutoStyle` enum defines the different ways that `Dim.Auto` can be used to size a view. The `DimAutoStyle` enum has the following values: @@ -77,7 +77,7 @@ int GetDynamicMinSize () ### Specifying a maximum size -> NOT YET IMPLEMENTED +It is common to want to constrain how large a View can be sized. The `maximumContentDim` parameter to the `Dim.Auto ()` method enables this. Like `minimumContentDim` it is of type `Dim` and thus can represent a dynamic value. For example, by default `Dialog` specifies `maximumContentDim` as `Dim.Percent (90)` to ensure a Dialog box is never larger than 90% of the screen. ## Limitations @@ -85,11 +85,28 @@ int GetDynamicMinSize () `Dim.Auto` is also not always the most efficient way to size a view. If you know the size of the content ahead of time, you can set the `Width` and `Height` properties to `Dim.Absolute (n)` instead of using `Dim.Auto`. -> TODO: Verify accuracy of the following paragraphs +## Behavior of other Pos/Dim Types when used within a Dim.Auto-sized View -Some `Pos` and `Dim` types are not compatible with `Dim.Auto`. For example, you cannot use `Dim.Auto (DimAutoStyle.Content)` with Subviews that use `Dim.Fill ()` or `Dim.Percent (n)` because the size of the Subview is not known until the layout is computed. +The table below descibes the behavior of the various Pos/Dim types when used by subviews of a View that uses `Dim.Auto` for it's `Width` or `Height`: + +| Type | Impacts Dimension | Limitations | +|-------------|-------------------|---------------------------------------------------------------------------------------------------------| +| PosAlign | Yes | The subviews with the same `GroupId` will be aligned at the maximimum dimension to enable them to not be clipped. This dimension plus the group's position will determine the minimum `Dim.Auto` dimension. | +| PosView | Yes | The position plus the dimension of `subview.Target` will determine the minimum `Dim.Auto` dimension. | +| PosCombine | Yes | | +| PosAnchorEnd| Yes | The `Dim.Auto` dimension will be increased by the dimension of the subview. | +| PosCenter | No | | +| PosPercent | No | | +| PosAbsolute | Yes | | +| PosFunc | Yes | | +| DimView | Yes | The position plus the dimension of `subview.Target` will determine the minimum `Dim.Auto` dimension. | +| DimCombine | Yes | | +| DimFill | No | | +| DimPercent | No | | +| DimAuto | Yes | | +| DimAbsolute | Yes | | +| DimFunc | Yes | | -`Pos` types that are relative to the size of the view, such as `Pos.Percent (n)` are not compatible with `Dim.Auto` because the size of the view is not known until the layout is computed. However, `Pos.Center ()` and `Pos.AnchorEnd ()` are compatible with `Dim.Auto` because they are relative to the size of the view's Superview. ## Building Dim.Auto friendly View