mirror of
https://github.com/goatcorp/Dalamud.git
synced 2026-02-24 13:41:49 +01:00
248 lines
7.5 KiB
C#
248 lines
7.5 KiB
C#
|
|
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
|
|
{
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
[StructLayout(LayoutKind.Sequential)]
|
|
public partial struct Style
|
|
{
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float TranslationLineThickness;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float TranslationLineArrowSize;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float RotationLineThickness;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float RotationOuterLineThickness;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float ScaleLineThickness;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float ScaleLineCircleSize;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float HatchedAxisLineThickness;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public float CenterCircleSize;
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
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;
|
|
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
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];
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
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<Vector4> colors = default)
|
|
{
|
|
TranslationLineThickness = translationLineThickness;
|
|
TranslationLineArrowSize = translationLineArrowSize;
|
|
RotationLineThickness = rotationLineThickness;
|
|
RotationOuterLineThickness = rotationOuterLineThickness;
|
|
ScaleLineThickness = scaleLineThickness;
|
|
ScaleLineCircleSize = scaleLineCircleSize;
|
|
HatchedAxisLineThickness = hatchedAxisLineThickness;
|
|
CenterCircleSize = centerCircleSize;
|
|
if (colors != default(Span<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];
|
|
}
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public unsafe Span<Vector4> Colors
|
|
|
|
{
|
|
get
|
|
{
|
|
fixed (Vector4* p = &this.DirectionX)
|
|
{
|
|
return new Span<Vector4>(p, 15);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
#if NET5_0_OR_GREATER
|
|
[DebuggerDisplay("{DebuggerDisplay,nq}")]
|
|
#endif
|
|
public unsafe struct StylePtr : IEquatable<StylePtr>
|
|
{
|
|
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;
|
|
|
|
/// <inheritdoc/>
|
|
public override bool Equals(object obj) => obj is StylePtr handle && Equals(handle);
|
|
|
|
/// <inheritdoc/>
|
|
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
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float TranslationLineThickness => ref Unsafe.AsRef<float>(&Handle->TranslationLineThickness);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float TranslationLineArrowSize => ref Unsafe.AsRef<float>(&Handle->TranslationLineArrowSize);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float RotationLineThickness => ref Unsafe.AsRef<float>(&Handle->RotationLineThickness);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float RotationOuterLineThickness => ref Unsafe.AsRef<float>(&Handle->RotationOuterLineThickness);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float ScaleLineThickness => ref Unsafe.AsRef<float>(&Handle->ScaleLineThickness);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float ScaleLineCircleSize => ref Unsafe.AsRef<float>(&Handle->ScaleLineCircleSize);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float HatchedAxisLineThickness => ref Unsafe.AsRef<float>(&Handle->HatchedAxisLineThickness);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public ref float CenterCircleSize => ref Unsafe.AsRef<float>(&Handle->CenterCircleSize);
|
|
/// <summary>
|
|
/// To be documented.
|
|
/// </summary>
|
|
public unsafe Span<Vector4> Colors
|
|
|
|
{
|
|
get
|
|
{
|
|
return new Span<Vector4>(&Handle->DirectionX, 15);
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|