Table of Contents

Struct CssTransformOrigin

Namespace
Egami.Css
Assembly
Egami.Css.dll

A transform-origin value.

public readonly record struct CssTransformOrigin : IEquatable<CssTransformOrigin>
Implements
Inherited Members

Examples

// A CSS transform list, its matrix, and the functions it holds.
bool isTransform = CssTransformList.TryParse("translate(10px, 50%) rotate(45deg) scale(2)", out CssTransformList? css);
Matrix3x2 matrix = css!.ToMatrix((length, isX) => length.Unit == CssUnit.Percent ? length.Value * (isX ? 2 : 1) : length.Value);

foreach (CssTransformFunction function in css.Functions)
{
    string kind = function switch
    {
        CssTranslateTransform t => $"translate {t.X} {t.Y}",
        CssRotateTransform r => $"rotate {r.Degrees} about ({r.CenterX}, {r.CenterY})",
        CssScaleTransform s => $"scale {s.X} {s.Y}",
        CssSkewTransform k => $"skew {k.XDegrees} {k.YDegrees}",
        CssMatrixTransform m => $"matrix {m.A} {m.B} {m.C} {m.D} {m.E} {m.F}",
        CssUnsupportedTransform u => $"{u.Name} (3D, ignored)",
        _ => "",
    };
}

bool isOrigin = CssTransformOrigin.TryParse("left bottom", out CssTransformOrigin origin); // (0%, 100%, 0)

Constructors

CssTransformOrigin(CssLength, CssLength, CssLength)

A transform-origin value.

public CssTransformOrigin(CssLength X, CssLength Y, CssLength Z)

Parameters

X CssLength

The x position: a length or a percentage of the reference box width.

Y CssLength

The y position: a length or a percentage of the reference box height.

Z CssLength

The z offset, a length.

Examples

// A CSS transform list, its matrix, and the functions it holds.
bool isTransform = CssTransformList.TryParse("translate(10px, 50%) rotate(45deg) scale(2)", out CssTransformList? css);
Matrix3x2 matrix = css!.ToMatrix((length, isX) => length.Unit == CssUnit.Percent ? length.Value * (isX ? 2 : 1) : length.Value);

foreach (CssTransformFunction function in css.Functions)
{
    string kind = function switch
    {
        CssTranslateTransform t => $"translate {t.X} {t.Y}",
        CssRotateTransform r => $"rotate {r.Degrees} about ({r.CenterX}, {r.CenterY})",
        CssScaleTransform s => $"scale {s.X} {s.Y}",
        CssSkewTransform k => $"skew {k.XDegrees} {k.YDegrees}",
        CssMatrixTransform m => $"matrix {m.A} {m.B} {m.C} {m.D} {m.E} {m.F}",
        CssUnsupportedTransform u => $"{u.Name} (3D, ignored)",
        _ => "",
    };
}

bool isOrigin = CssTransformOrigin.TryParse("left bottom", out CssTransformOrigin origin); // (0%, 100%, 0)

Properties

Center

Gets the initial value: 50% 50% 0.

public static CssTransformOrigin Center { get; }

Property Value

CssTransformOrigin

X

The x position: a length or a percentage of the reference box width.

public CssLength X { get; init; }

Property Value

CssLength

Y

The y position: a length or a percentage of the reference box height.

public CssLength Y { get; init; }

Property Value

CssLength

Z

The z offset, a length.

public CssLength Z { get; init; }

Property Value

CssLength

Methods

ToString()

Formats the origin as a record does, such as CssTransformOrigin { X = 50%, Y = 50%, Z = 0px }.

public override string ToString()

Returns

string

The text.

TryParse(IReadOnlyList<CssComponentValue>, out CssTransformOrigin)

Parses component values as a transform-origin value.

public static bool TryParse(IReadOnlyList<CssComponentValue> values, out CssTransformOrigin origin)

Parameters

values IReadOnlyList<CssComponentValue>

The component values.

origin CssTransformOrigin

The origin.

Returns

bool

True when valid.

TryParse(string, out CssTransformOrigin)

Parses a transform-origin value, such as left top, 50% 10px or right bottom 5px.

public static bool TryParse(string text, out CssTransformOrigin origin)

Parameters

text string

The CSS text.

origin CssTransformOrigin

The origin.

Returns

bool

True when valid.