mirror of
https://github.com/goatcorp/Dalamud.git
synced 2025-12-29 11:59:21 +01:00
Cleanup and reformat
This commit is contained in:
parent
858d27ab8e
commit
fa5e708a43
11 changed files with 32 additions and 75 deletions
|
|
@ -5,68 +5,42 @@ using ImGuiScene;
|
||||||
// ReSharper disable once CheckNamespace
|
// ReSharper disable once CheckNamespace
|
||||||
namespace Dalamud.Interface.Internal;
|
namespace Dalamud.Interface.Internal;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Safety harness for ImGuiScene textures that will defer destruction until the end of the frame.</summary>
|
||||||
/// Safety harness for ImGuiScene textures that will defer destruction until
|
[Obsolete($"Use {nameof(IDalamudTextureWrap)}.")]
|
||||||
/// the end of the frame.
|
[Api10ToDo(Api10ToDoAttribute.DeleteCompatBehavior)]
|
||||||
/// </summary>
|
|
||||||
public class DalamudTextureWrap : IDalamudTextureWrap, IDeferredDisposable
|
public class DalamudTextureWrap : IDalamudTextureWrap, IDeferredDisposable
|
||||||
{
|
{
|
||||||
private readonly TextureWrap wrappedWrap;
|
private readonly TextureWrap wrappedWrap;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Initializes a new instance of the <see cref="DalamudTextureWrap"/> class.</summary>
|
||||||
/// Initializes a new instance of the <see cref="DalamudTextureWrap"/> class.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="wrappingWrap">The texture wrap to wrap.</param>
|
/// <param name="wrappingWrap">The texture wrap to wrap.</param>
|
||||||
internal DalamudTextureWrap(TextureWrap wrappingWrap)
|
internal DalamudTextureWrap(TextureWrap wrappingWrap) => this.wrappedWrap = wrappingWrap;
|
||||||
{
|
|
||||||
this.wrappedWrap = wrappingWrap;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Finalizes an instance of the <see cref="DalamudTextureWrap"/> class.</summary>
|
||||||
/// Finalizes an instance of the <see cref="DalamudTextureWrap"/> class.
|
~DalamudTextureWrap() => this.Dispose(false);
|
||||||
/// </summary>
|
|
||||||
~DalamudTextureWrap()
|
|
||||||
{
|
|
||||||
this.Dispose(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Gets the ImGui handle of the texture.
|
|
||||||
/// </summary>
|
|
||||||
public IntPtr ImGuiHandle => this.wrappedWrap.ImGuiHandle;
|
public IntPtr ImGuiHandle => this.wrappedWrap.ImGuiHandle;
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Gets the width of the texture.
|
|
||||||
/// </summary>
|
|
||||||
public int Width => this.wrappedWrap.Width;
|
public int Width => this.wrappedWrap.Width;
|
||||||
|
|
||||||
/// <summary>
|
/// <inheritdoc/>
|
||||||
/// Gets the height of the texture.
|
|
||||||
/// </summary>
|
|
||||||
public int Height => this.wrappedWrap.Height;
|
public int Height => this.wrappedWrap.Height;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Queue the texture to be disposed once the frame ends.</summary>
|
||||||
/// Queue the texture to be disposed once the frame ends.
|
|
||||||
/// </summary>
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
this.Dispose(true);
|
this.Dispose(true);
|
||||||
GC.SuppressFinalize(this);
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Actually dispose the wrapped texture.</summary>
|
||||||
/// Actually dispose the wrapped texture.
|
void IDeferredDisposable.RealDispose() => this.wrappedWrap.Dispose();
|
||||||
/// </summary>
|
|
||||||
void IDeferredDisposable.RealDispose()
|
|
||||||
{
|
|
||||||
this.wrappedWrap.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void Dispose(bool disposing)
|
private void Dispose(bool disposing)
|
||||||
{
|
{
|
||||||
if (disposing)
|
if (disposing)
|
||||||
{
|
|
||||||
Service<InterfaceManager>.GetNullable()?.EnqueueDeferredDispose(this);
|
Service<InterfaceManager>.GetNullable()?.EnqueueDeferredDispose(this);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,7 @@ public record struct ExistingTextureModificationArgs()
|
||||||
/// <see cref="ITextureProvider.IsDxgiFormatSupportedForCreateFromExistingTextureAsync"/>. This may not necessarily
|
/// <see cref="ITextureProvider.IsDxgiFormatSupportedForCreateFromExistingTextureAsync"/>. This may not necessarily
|
||||||
/// match <see cref="ITextureProvider.IsDxgiFormatSupported"/>.
|
/// match <see cref="ITextureProvider.IsDxgiFormatSupported"/>.
|
||||||
/// </para></remarks>
|
/// </para></remarks>
|
||||||
public int DxgiFormat { get; set; } = (int)DXGI_FORMAT.DXGI_FORMAT_B8G8R8A8_UNORM;
|
public int DxgiFormat { get; set; } = (int)DXGI_FORMAT.DXGI_FORMAT_UNKNOWN;
|
||||||
|
|
||||||
/// <summary>Gets or sets the new width.</summary>
|
/// <summary>Gets or sets the new width.</summary>
|
||||||
/// <remarks>Set to 0 to automatically calculate according to the original texture size, <see cref="Uv0"/>, and
|
/// <remarks>Set to 0 to automatically calculate according to the original texture size, <see cref="Uv0"/>, and
|
||||||
|
|
|
||||||
|
|
@ -6,6 +6,7 @@ using TerraFX.Interop.Windows;
|
||||||
|
|
||||||
// ReSharper disable once CheckNamespace
|
// ReSharper disable once CheckNamespace
|
||||||
namespace Dalamud.Interface.Internal;
|
namespace Dalamud.Interface.Internal;
|
||||||
|
// TODO(api10): fix namespace maybe?
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Base TextureWrap interface for all Dalamud-owned texture wraps.
|
/// Base TextureWrap interface for all Dalamud-owned texture wraps.
|
||||||
|
|
@ -13,24 +14,16 @@ namespace Dalamud.Interface.Internal;
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IDalamudTextureWrap : IDisposable
|
public interface IDalamudTextureWrap : IDisposable
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>Gets a texture handle suitable for direct use with ImGui functions.</summary>
|
||||||
/// Gets a texture handle suitable for direct use with ImGui functions.
|
|
||||||
/// </summary>
|
|
||||||
IntPtr ImGuiHandle { get; }
|
IntPtr ImGuiHandle { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Gets the width of the texture.</summary>
|
||||||
/// Gets the width of the texture.
|
|
||||||
/// </summary>
|
|
||||||
int Width { get; }
|
int Width { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Gets the height of the texture.</summary>
|
||||||
/// Gets the height of the texture.
|
|
||||||
/// </summary>
|
|
||||||
int Height { get; }
|
int Height { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Gets the size vector of the texture using Width, Height.</summary>
|
||||||
/// Gets the size vector of the texture using Width, Height.
|
|
||||||
/// </summary>
|
|
||||||
Vector2 Size => new(this.Width, this.Height);
|
Vector2 Size => new(this.Width, this.Height);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,7 @@ public interface ISharedImmediateTexture
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
[return: NotNullIfNotNull(nameof(defaultWrap))]
|
[return: NotNullIfNotNull(nameof(defaultWrap))]
|
||||||
IDalamudTextureWrap? GetWrapOrDefault(IDalamudTextureWrap? defaultWrap = null);
|
IDalamudTextureWrap? GetWrapOrDefault(IDalamudTextureWrap? defaultWrap = null);
|
||||||
|
|
||||||
/// <summary>Attempts to get the texture for use with the current frame.</summary>
|
/// <summary>Attempts to get the texture for use with the current frame.</summary>
|
||||||
/// <param name="texture">An instance of <see cref="IDalamudTextureWrap"/> that is guaranteed to be available for
|
/// <param name="texture">An instance of <see cref="IDalamudTextureWrap"/> that is guaranteed to be available for
|
||||||
/// the current frame being drawn, or <c>null</c> if texture is not loaded (yet).</param>
|
/// the current frame being drawn, or <c>null</c> if texture is not loaded (yet).</param>
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ public record struct ImGuiViewportTextureArgs()
|
||||||
/// <summary>Gets or sets a value indicating whether to automatically update the texture.</summary>
|
/// <summary>Gets or sets a value indicating whether to automatically update the texture.</summary>
|
||||||
/// <remarks>Enabling this will also update <see cref="IDalamudTextureWrap.Size"/> as needed.</remarks>
|
/// <remarks>Enabling this will also update <see cref="IDalamudTextureWrap.Size"/> as needed.</remarks>
|
||||||
public bool AutoUpdate { get; set; }
|
public bool AutoUpdate { get; set; }
|
||||||
|
|
||||||
/// <summary>Gets or sets a value indicating whether to get the texture before rendering ImGui.</summary>
|
/// <summary>Gets or sets a value indicating whether to get the texture before rendering ImGui.</summary>
|
||||||
/// <remarks>It probably makes no sense to enable this unless <see cref="ViewportId"/> points to the main viewport.
|
/// <remarks>It probably makes no sense to enable this unless <see cref="ViewportId"/> points to the main viewport.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ internal sealed class FileSystemSharedImmediateTexture : SharedImmediateTexture
|
||||||
|
|
||||||
private async Task<IDalamudTextureWrap> CreateTextureAsync(CancellationToken cancellationToken)
|
private async Task<IDalamudTextureWrap> CreateTextureAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var tm = await Service<Interface.Textures.Internal.TextureManager>.GetAsync();
|
var tm = await Service<TextureManager>.GetAsync();
|
||||||
return await tm.NoThrottleCreateFromFileAsync(this.path, cancellationToken);
|
return await tm.NoThrottleCreateFromFileAsync(this.path, cancellationToken);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -48,7 +48,7 @@ internal sealed class GamePathSharedImmediateTexture : SharedImmediateTexture
|
||||||
private async Task<IDalamudTextureWrap> CreateTextureAsync(CancellationToken cancellationToken)
|
private async Task<IDalamudTextureWrap> CreateTextureAsync(CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var dm = await Service<DataManager>.GetAsync();
|
var dm = await Service<DataManager>.GetAsync();
|
||||||
var tm = await Service<Interface.Textures.Internal.TextureManager>.GetAsync();
|
var tm = await Service<TextureManager>.GetAsync();
|
||||||
var substPath = tm.GetSubstitutedPath(this.path);
|
var substPath = tm.GetSubstitutedPath(this.path);
|
||||||
if (dm.GetFile<TexFile>(substPath) is not { } file)
|
if (dm.GetFile<TexFile>(substPath) is not { } file)
|
||||||
throw new FileNotFoundException();
|
throw new FileNotFoundException();
|
||||||
|
|
|
||||||
|
|
@ -57,7 +57,7 @@ internal sealed class ManifestResourceSharedImmediateTexture : SharedImmediateTe
|
||||||
if (stream is null)
|
if (stream is null)
|
||||||
throw new FileNotFoundException("The resource file could not be found.");
|
throw new FileNotFoundException("The resource file could not be found.");
|
||||||
|
|
||||||
var tm = await Service<Interface.Textures.Internal.TextureManager>.GetAsync();
|
var tm = await Service<TextureManager>.GetAsync();
|
||||||
var ms = new MemoryStream(stream.CanSeek ? (int)stream.Length : 0);
|
var ms = new MemoryStream(stream.CanSeek ? (int)stream.Length : 0);
|
||||||
await stream.CopyToAsync(ms, cancellationToken);
|
await stream.CopyToAsync(ms, cancellationToken);
|
||||||
return tm.NoThrottleCreateFromImage(ms.GetBuffer().AsMemory(0, (int)ms.Length), cancellationToken);
|
return tm.NoThrottleCreateFromImage(ms.GetBuffer().AsMemory(0, (int)ms.Length), cancellationToken);
|
||||||
|
|
|
||||||
|
|
@ -7,16 +7,12 @@ using TerraFX.Interop.Windows;
|
||||||
|
|
||||||
namespace Dalamud.Interface.Textures.Internal;
|
namespace Dalamud.Interface.Textures.Internal;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>A texture wrap that is created from an <see cref="IUnknown"/>.</summary>
|
||||||
/// A texture wrap that is created by cloning the underlying <see cref="IDalamudTextureWrap.ImGuiHandle"/>.
|
|
||||||
/// </summary>
|
|
||||||
internal sealed unsafe class UnknownTextureWrap : IDalamudTextureWrap, IDeferredDisposable
|
internal sealed unsafe class UnknownTextureWrap : IDalamudTextureWrap, IDeferredDisposable
|
||||||
{
|
{
|
||||||
private IntPtr imGuiHandle;
|
private IntPtr imGuiHandle;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Initializes a new instance of the <see cref="UnknownTextureWrap"/> class.</summary>
|
||||||
/// Initializes a new instance of the <see cref="UnknownTextureWrap"/> class.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="unknown">The pointer to <see cref="IUnknown"/> that is suitable for use with
|
/// <param name="unknown">The pointer to <see cref="IUnknown"/> that is suitable for use with
|
||||||
/// <see cref="IDalamudTextureWrap.ImGuiHandle"/>.</param>
|
/// <see cref="IDalamudTextureWrap.ImGuiHandle"/>.</param>
|
||||||
/// <param name="width">The width of the texture.</param>
|
/// <param name="width">The width of the texture.</param>
|
||||||
|
|
@ -32,9 +28,7 @@ internal sealed unsafe class UnknownTextureWrap : IDalamudTextureWrap, IDeferred
|
||||||
unknown->AddRef();
|
unknown->AddRef();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Finalizes an instance of the <see cref="UnknownTextureWrap"/> class.</summary>
|
||||||
/// Finalizes an instance of the <see cref="UnknownTextureWrap"/> class.
|
|
||||||
/// </summary>
|
|
||||||
~UnknownTextureWrap() => this.Dispose(false);
|
~UnknownTextureWrap() => this.Dispose(false);
|
||||||
|
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
|
|
@ -49,18 +43,14 @@ internal sealed unsafe class UnknownTextureWrap : IDalamudTextureWrap, IDeferred
|
||||||
/// <inheritdoc/>
|
/// <inheritdoc/>
|
||||||
public int Height { get; }
|
public int Height { get; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Queue the texture to be disposed once the frame ends.</summary>
|
||||||
/// Queue the texture to be disposed once the frame ends.
|
|
||||||
/// </summary>
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
this.Dispose(true);
|
this.Dispose(true);
|
||||||
GC.SuppressFinalize(this);
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>Actually dispose the wrapped texture.</summary>
|
||||||
/// Actually dispose the wrapped texture.
|
|
||||||
/// </summary>
|
|
||||||
void IDeferredDisposable.RealDispose()
|
void IDeferredDisposable.RealDispose()
|
||||||
{
|
{
|
||||||
var handle = Interlocked.Exchange(ref this.imGuiHandle, nint.Zero);
|
var handle = Interlocked.Exchange(ref this.imGuiHandle, nint.Zero);
|
||||||
|
|
|
||||||
|
|
@ -89,7 +89,7 @@ internal sealed class ViewportTextureWrap : IDalamudTextureWrap, IDeferredDispos
|
||||||
bottom = (uint)MathF.Round(newDesc.Height * this.args.Uv1Effective.Y),
|
bottom = (uint)MathF.Round(newDesc.Height * this.args.Uv1Effective.Y),
|
||||||
front = 0,
|
front = 0,
|
||||||
back = 1,
|
back = 1,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (this.desc.Width != copyBox.right - copyBox.left
|
if (this.desc.Width != copyBox.right - copyBox.left
|
||||||
|| this.desc.Height != copyBox.bottom - copyBox.top
|
|| this.desc.Height != copyBox.bottom - copyBox.top
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@ public record struct RawImageSpecification
|
||||||
throw new NotSupportedException(FormatNotSupportedMessage);
|
throw new NotSupportedException(FormatNotSupportedMessage);
|
||||||
|
|
||||||
pitch = isBlockCompression
|
pitch = isBlockCompression
|
||||||
? Math.Max(1, (width + 3) / 4) * 2 * bitsPerPixel
|
? Math.Max(1, (width + 3) / 4) * 2 * bitsPerPixel
|
||||||
: ((width * bitsPerPixel) + 7) / 8;
|
: ((width * bitsPerPixel) + 7) / 8;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.Width = width;
|
this.Width = width;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue