Documentation Index
Fetch the complete documentation index at: https://mintlify.com/ProwlEngine/Prowl.Paper/llms.txt
Use this file to discover all available pages before exploring further.
GuiProp is the central enum that names every style property Prowl.Paper can animate or transition. Whenever you call .Transition(GuiProp.X, duration) or set a property on an element, you reference a GuiProp value. The engine stores one typed object per property per element and interpolates between them each frame using the appropriate typed lerp. Default values are applied automatically when a property has never been set; they are listed in each section below.
Visual properties
These properties control the appearance of the element’s background, border, and effects.BackgroundColor
The solid fill color of the element’s background rectangle. Animated via HSV interpolation so hue rotates naturally. If both
BackgroundColor and BackgroundGradient are set, the gradient takes precedence in the renderer.BackgroundGradient
A
Gradient struct (Linear, Radial, or Box) painted over the background rectangle. Set to Gradient.None to disable. See the Gradient struct and GradientType enum below.BorderColor
Color of the element’s border stroke. Has no visual effect when
BorderWidth is 0.BorderWidth
Pixel width of the border stroke drawn inside the element’s rect. A value of
0 renders no border.Rounded
Corner radii in pixels as
(topLeft, topRight, bottomRight, bottomLeft). Use a uniform value for all corners or set individual components for asymmetric rounding.BoxShadow
Drop shadow applied behind the element. The
BoxShadow struct holds OffsetX, OffsetY, Blur, Spread, and Color fields. Set to BoxShadow.None for no shadow.BackdropBlur
Gaussian blur radius applied to content rendered behind this element, creating a frosted-glass effect. A value of
0 disables the blur.Layout — sizing
These properties govern how large an element is. All useUnitValue which supports pixels, percentage, stretch, and auto units.
Core size
The element’s width. Defaults to stretch, so an element fills its parent’s available width by default.
The element’s height. Defaults to stretch, so an element fills its parent’s available height by default.
Locks the width-to-height ratio. A value of
-1 disables aspect-ratio enforcement. When set (e.g. 1.777f for 16:9), the layout engine adjusts whichever axis is not explicitly constrained.Size constraints
Minimum width clamp applied after the main width resolves.
Maximum width clamp. Defaults to unconstrained.
Minimum height clamp applied after the main height resolves.
Maximum height clamp. Defaults to unconstrained.
Layout — positioning
These properties control where an element sits relative to its parent or layout flow. All useUnitValue.
Distance from the parent’s left edge.
Auto lets the parent layout algorithm position the element.Distance from the parent’s right edge.
Distance from the parent’s top edge.
Distance from the parent’s bottom edge.
Position clamps
Each edge also hasMin and Max variants that clamp the computed position:
| Property | Default |
|---|---|
MinLeft / MaxLeft | Pixels(float.MinValue) / Pixels(float.MaxValue) |
MinRight / MaxRight | Pixels(float.MinValue) / Pixels(float.MaxValue) |
MinTop / MaxTop | Pixels(float.MinValue) / Pixels(float.MaxValue) |
MinBottom / MaxBottom | Pixels(float.MinValue) / Pixels(float.MaxValue) |
Layout — child alignment
These properties are set on the parent element and control how its children are positioned within the parent’s bounds.Space inserted to the left of each child.
Auto distributes the horizontal spacing automatically.Space inserted to the right of each child.
Space inserted above each child.
Space inserted below each child.
Gap inserted between children along the row (horizontal) axis. Similar to CSS
column-gap.Gap inserted between children along the column (vertical) axis. Similar to CSS
row-gap.Layout — padding
Padding insets the content area on the parent’s interior. Children are placed inside the padded rect.Left-side inset applied to the parent’s content area.
Right-side inset.
Top-side inset.
Bottom-side inset.
Transform properties
Transform properties apply a 2D affine transform to the rendered element after layout. They do not affect sibling layout. All transforms combine through aTransformBuilder in the order: translate → rotate → scale → skew → custom.
Horizontal translation in pixels applied post-layout.
Vertical translation in pixels applied post-layout.
Horizontal scale factor.
1.0 = no scaling, 2.0 = double width.Vertical scale factor.
Rotation angle in degrees. Positive values rotate clockwise.
Normalized X position of the transform origin within the element.
0 = left edge, 0.5 = center (default), 1 = right edge.Normalized Y position of the transform origin.
0 = top, 0.5 = center (default), 1 = bottom.Horizontal skew angle in degrees.
Vertical skew angle in degrees.
An additional custom
Transform2D matrix applied on top of the individual transform properties above.Image properties
An image resource to render as the element’s background. The concrete type depends on your renderer integration.
null disables the background image. Combine with ImageScaleMode to control how the image fits its rect.Text properties
Color applied to all text rendered within the element.
Font size in pixels.
Multiplier applied to the font’s natural line height.
1.0 = normal, 1.5 = 150% leading.Additional pixel spacing inserted between individual glyphs.
Additional pixel spacing inserted between words (i.e. after space characters).
Number of spaces a tab character is equivalent to for layout purposes.
Related enums
LayoutType
Controls the direction children are stacked within a container:
| Value | Description |
|---|---|
LayoutType.Row | Children arranged horizontally, left to right |
LayoutType.Column | Children arranged vertically, top to bottom |
PositionType
Controls whether an element participates in the parent’s flow or positions itself independently:
| Value | Description |
|---|---|
PositionType.ParentDirected | Position determined by the parent layout (similar to CSS relative) |
PositionType.SelfDirected | Element uses its own Left/Top/etc. coordinates (similar to CSS absolute) |
TextAlignment
Nine-point alignment for text within a text element:
| Value | Description |
|---|---|
Left | Top-left |
Center | Top-center |
Right | Top-right |
MiddleLeft | Vertically centered, left |
MiddleCenter | Fully centered |
MiddleRight | Vertically centered, right |
BottomLeft | Bottom-left |
BottomCenter | Bottom-center |
BottomRight | Bottom-right |
GradientType
Specifies which gradient algorithm the Gradient struct uses:
| Value | Description |
|---|---|
None | No gradient (default) |
Linear | Linear gradient between two points |
Radial | Radial gradient from a center point outward |
Box | Box (rounded-rectangle) gradient |
ImageScaleMode
Controls how a BackgroundImage is scaled to fill the element’s rectangle:
| Value | Description |
|---|---|
Stretch | Stretches to fill, ignoring aspect ratio |
Fit | Scales uniformly to fit inside, preserving aspect ratio (may leave empty space) |
Fill | Scales uniformly to cover the entire rect, preserving aspect ratio (may crop) |
Layer (static class)
Named integer constants for the rendering layer system. Higher layer numbers render on top and receive input first. The constants are spaced by 100 so you can insert custom layers between them without renumbering:
| Constant | Value | Purpose |
|---|---|---|
Layer.Base | 0 | Default layer for all normal elements |
Layer.Overlay | 100 | Modals, dropdowns — sits above base content |
Layer.Topmost | 200 | Tooltips, popovers — sits above everything |
Layer is a static class with const int members, not an enum. Pass any integer value to ElementBuilder.Layer(int).