layout-lexicon.md 4.9 KB

Term Meaning
Adornment The Thicknesses 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.
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 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.