| Term | Meaning | |:-----|:--------| | **Adornment** | The `Thickness`es that separate the `Frame` from the `Viewport`. There are three Adornments: `Margin`, `Padding`, and `Border`. Adornments are not part of the View's content and are not clipped by the View's `ClipArea`. | | **Application-Relative** | The dimensions and characteristics of the application. Because only full-screen apps are currently supported, @Terminal.Gui.App.Application is effectively the same as `Screen` from a layout perspective. *Application-Relative* currently means an origin (`0, 0`) at the top-left corner of the terminal. @Terminal.Gui.App.Application.Top is a `View` with a top-left corner fixed at the *Application.Relative* coordinate of (`0, 0`) and is the size of `Screen`. | | **Border** | The `Adornment` that resides in the inside of the `Margin`. The Border is where a visual border (drawn using line-drawing glyphs) and the @Terminal.Gui.ViewBase.View.Title are drawn, and where the user can interact with the mouse/keyboard to adjust the Views' [Arrangement](~/docs/arrangement.md). | | **Content Area** | Describes the View's total content. The location of the content is always `(0, 0)` and the size is set by @Terminal.Gui.ViewBase.View.SetContentSize* and defaults to the size of the `Viewport`. If the content size is larger than the `Viewport`, scrolling is enabled. | | **Content-Relative** | A rectangle, with an origin of (`0, 0`) and size, defined by @Terminal.Gui.ViewBase.View.GetContentSize*, where the View's content exists. *Content-Relative* means a coordinate is relative to the top-left corner of the content, which is always (`0,0`). @Terminal.Gui.ViewBase.View.ContentToScreen* and @Terminal.Gui.ViewBase.View.ScreenToContent* are helper methods for translating coordinates. | | **Frame** | A `Rectangle` that defines the location and size of the @Terminal.Gui.ViewBase.View. The coordinates are relative to the SuperView of the View (or, in the case of `Application.Top`, the console size). Controlled by @Terminal.Gui.ViewBase.View.X, @Terminal.Gui.ViewBase.View.Y, @Terminal.Gui.ViewBase.View.Width, and @Terminal.Gui.ViewBase.View.Height. | | **Frame-Relative** | The @Terminal.Gui.ViewBase.View.Frame property of a `View` is a rectangle that describes the current location and size of the view relative to the `Superview`'s content area. *Frame-Relative* means a coordinate is relative to the top-left corner of the View in question. @Terminal.Gui.ViewBase.View.FrameToScreen* and @Terminal.Gui.ViewBase.View.ScreenToFrame* are helper methods for translating coordinates. | | **Margin** | The outermost `Adornment`. The outside of the margin is a rectangle the same size as the `Frame`. By default `Margin` is `{0,0,0,0}`. When made thicker, Margins are visually transparent and transparent to mouse events by default. | | **Overlapped/Overlapping** | Refers to a form [Layout](~/docs/layout.md) where SubViews of a View are visually arranged such that their Frames overlap. In Overlap view arrangements there is a Z-axis (Z-order) in addition to the X and Y dimension. | | **Padding** | The `Adornment` resides in the inside of the `Border` and outside of the `Viewport`. `Padding` is `{0, 0, 0, 0}` by default. Padding is not part of the View's content and is not clipped by the View's `Clip`. When enabled, scroll bars reside within `Padding`. | | **Screen-Relative** | Describes the dimensions and characteristics of the underlying terminal. Currently Terminal.Gui only supports applications that run "full-screen", meaning they fill the entire terminal when running. *Screen-Relative* means an origin (`0, 0`) at the top-left corner of the terminal. @Terminal.Gui.Drivers.ConsoleDriver implementations operate exclusively on *Screen-Relative* coordinates. | | **Thickness** | A smart `record struct` describing a rectangle where each of the four sides can have a width. Valid width values are >= 0. The inner area of a Thickness is the sum of the widths of the four sides minus the size of the rectangle. | | **Tiled/Tiling** | Refer to a form of Views that are visually arranged such that they abut each other and do not overlap. In a Tiled view arrangement, Z-ordering only comes into play when a developer intentionally causes views to be aligned such that they overlap. | | **Viewport** | The `Rectangle` that describes the portion of the View's `Content Area` that is currently visible to the user. If size of the `Content Area` is larger than the `Viewport`, scrolling is enabled and the `Viewport` location determines which portion of the content is visible. | | **Viewport-Relative** | A *Content-Relative* rectangle representing the subset of the View's content that is visible to the user: @Terminal.Gui.ViewBase.View.Viewport. *Viewport-Relative* means a coordinate that is bound by (`0,0`) and the size of the inner-rectangle of the View's `Padding`. The View drawing primitives (e.g. `View.Move`) take *Viewport-Relative* coordinates. |