using System; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; using HexaGen.Runtime; using System.Numerics; using Dalamud.Bindings.ImGui; namespace Dalamud.Bindings.ImGuizmo { /// /// To be documented. /// [StructLayout(LayoutKind.Sequential)] public partial struct Style { /// /// To be documented. /// public float TranslationLineThickness; /// /// To be documented. /// public float TranslationLineArrowSize; /// /// To be documented. /// public float RotationLineThickness; /// /// To be documented. /// public float RotationOuterLineThickness; /// /// To be documented. /// public float ScaleLineThickness; /// /// To be documented. /// public float ScaleLineCircleSize; /// /// To be documented. /// public float HatchedAxisLineThickness; /// /// To be documented. /// public float CenterCircleSize; /// /// To be documented. /// public Vector4 DirectionX; public Vector4 DirectionY; public Vector4 DirectionZ; public Vector4 PlaneX; public Vector4 PlaneY; public Vector4 PlaneZ; public Vector4 Selection; public Vector4 Inactive; public Vector4 TranslationLine; public Vector4 ScaleLine; public Vector4 RotationUsingBorder; public Vector4 RotationUsingFill; public Vector4 HatchedAxisLines; public Vector4 Text; public Vector4 TextShadow; /// /// To be documented. /// public unsafe Style(float translationLineThickness = default, float translationLineArrowSize = default, float rotationLineThickness = default, float rotationOuterLineThickness = default, float scaleLineThickness = default, float scaleLineCircleSize = default, float hatchedAxisLineThickness = default, float centerCircleSize = default, Vector4* colors = default) { TranslationLineThickness = translationLineThickness; TranslationLineArrowSize = translationLineArrowSize; RotationLineThickness = rotationLineThickness; RotationOuterLineThickness = rotationOuterLineThickness; ScaleLineThickness = scaleLineThickness; ScaleLineCircleSize = scaleLineCircleSize; HatchedAxisLineThickness = hatchedAxisLineThickness; CenterCircleSize = centerCircleSize; if (colors != default(Vector4*)) { DirectionX = colors[0]; DirectionY = colors[1]; DirectionZ = colors[2]; PlaneX = colors[3]; PlaneY = colors[4]; PlaneZ = colors[5]; Selection = colors[6]; Inactive = colors[7]; TranslationLine = colors[8]; ScaleLine = colors[9]; RotationUsingBorder = colors[10]; RotationUsingFill = colors[11]; HatchedAxisLines = colors[12]; Text = colors[13]; TextShadow = colors[14]; } } /// /// To be documented. /// public unsafe Style(float translationLineThickness = default, float translationLineArrowSize = default, float rotationLineThickness = default, float rotationOuterLineThickness = default, float scaleLineThickness = default, float scaleLineCircleSize = default, float hatchedAxisLineThickness = default, float centerCircleSize = default, Span colors = default) { TranslationLineThickness = translationLineThickness; TranslationLineArrowSize = translationLineArrowSize; RotationLineThickness = rotationLineThickness; RotationOuterLineThickness = rotationOuterLineThickness; ScaleLineThickness = scaleLineThickness; ScaleLineCircleSize = scaleLineCircleSize; HatchedAxisLineThickness = hatchedAxisLineThickness; CenterCircleSize = centerCircleSize; if (colors != default(Span)) { DirectionX = colors[0]; DirectionY = colors[1]; DirectionZ = colors[2]; PlaneX = colors[3]; PlaneY = colors[4]; PlaneZ = colors[5]; Selection = colors[6]; Inactive = colors[7]; TranslationLine = colors[8]; ScaleLine = colors[9]; RotationUsingBorder = colors[10]; RotationUsingFill = colors[11]; HatchedAxisLines = colors[12]; Text = colors[13]; TextShadow = colors[14]; } } /// /// To be documented. /// public unsafe Span Colors { get { fixed (Vector4* p = &this.DirectionX) { return new Span(p, 15); } } } } /// /// To be documented. /// #if NET5_0_OR_GREATER [DebuggerDisplay("{DebuggerDisplay,nq}")] #endif public unsafe struct StylePtr : IEquatable { public StylePtr(Style* handle) { Handle = handle; } public Style* Handle; public bool IsNull => Handle == null; public static StylePtr Null => new StylePtr(null); public Style this[int index] { get => Handle[index]; set => Handle[index] = value; } public static implicit operator StylePtr(Style* handle) => new StylePtr(handle); public static implicit operator Style*(StylePtr handle) => handle.Handle; public static bool operator ==(StylePtr left, StylePtr right) => left.Handle == right.Handle; public static bool operator !=(StylePtr left, StylePtr right) => left.Handle != right.Handle; public static bool operator ==(StylePtr left, Style* right) => left.Handle == right; public static bool operator !=(StylePtr left, Style* right) => left.Handle != right; public bool Equals(StylePtr other) => Handle == other.Handle; /// public override bool Equals(object obj) => obj is StylePtr handle && Equals(handle); /// public override int GetHashCode() => ((nuint)Handle).GetHashCode(); #if NET5_0_OR_GREATER private string DebuggerDisplay => string.Format("StylePtr [0x{0}]", ((nuint)Handle).ToString("X")); #endif /// /// To be documented. /// public ref float TranslationLineThickness => ref Unsafe.AsRef(&Handle->TranslationLineThickness); /// /// To be documented. /// public ref float TranslationLineArrowSize => ref Unsafe.AsRef(&Handle->TranslationLineArrowSize); /// /// To be documented. /// public ref float RotationLineThickness => ref Unsafe.AsRef(&Handle->RotationLineThickness); /// /// To be documented. /// public ref float RotationOuterLineThickness => ref Unsafe.AsRef(&Handle->RotationOuterLineThickness); /// /// To be documented. /// public ref float ScaleLineThickness => ref Unsafe.AsRef(&Handle->ScaleLineThickness); /// /// To be documented. /// public ref float ScaleLineCircleSize => ref Unsafe.AsRef(&Handle->ScaleLineCircleSize); /// /// To be documented. /// public ref float HatchedAxisLineThickness => ref Unsafe.AsRef(&Handle->HatchedAxisLineThickness); /// /// To be documented. /// public ref float CenterCircleSize => ref Unsafe.AsRef(&Handle->CenterCircleSize); /// /// To be documented. /// public unsafe Span Colors { get { return new Span(&Handle->DirectionX, 15); } } } }