Move IconCache to LLib
This commit is contained in:
parent
8b11b67c96
commit
6b432bfc77
@ -9,13 +9,13 @@ using Dalamud.Game.Command;
|
|||||||
using Dalamud.Game.Text;
|
using Dalamud.Game.Text;
|
||||||
using Dalamud.Game.Text.SeStringHandling;
|
using Dalamud.Game.Text.SeStringHandling;
|
||||||
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
using Dalamud.Game.Text.SeStringHandling.Payloads;
|
||||||
using Dalamud.Interface;
|
|
||||||
using Dalamud.Interface.Windowing;
|
using Dalamud.Interface.Windowing;
|
||||||
using Dalamud.Plugin;
|
using Dalamud.Plugin;
|
||||||
using Dalamud.Plugin.Services;
|
using Dalamud.Plugin.Services;
|
||||||
using ECommons;
|
using ECommons;
|
||||||
using FFXIVClientStructs.FFXIV.Client.Game;
|
using FFXIVClientStructs.FFXIV.Client.Game;
|
||||||
using ImGuiNET;
|
using ImGuiNET;
|
||||||
|
using LLib;
|
||||||
|
|
||||||
namespace ARControl;
|
namespace ARControl;
|
||||||
|
|
||||||
|
@ -1,53 +0,0 @@
|
|||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using Dalamud.Interface.Internal;
|
|
||||||
using Dalamud.Plugin.Services;
|
|
||||||
|
|
||||||
namespace ARControl;
|
|
||||||
|
|
||||||
internal sealed class IconCache : IDisposable
|
|
||||||
{
|
|
||||||
private readonly ITextureProvider _textureProvider;
|
|
||||||
private readonly Dictionary<uint, TextureContainer> _textureWraps = new();
|
|
||||||
|
|
||||||
public IconCache(ITextureProvider textureProvider)
|
|
||||||
{
|
|
||||||
_textureProvider = textureProvider;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IDalamudTextureWrap? GetIcon(uint iconId)
|
|
||||||
{
|
|
||||||
if (_textureWraps.TryGetValue(iconId, out TextureContainer? container))
|
|
||||||
return container.Texture;
|
|
||||||
|
|
||||||
var iconTex = _textureProvider.GetIcon(iconId);
|
|
||||||
if (iconTex != null)
|
|
||||||
{
|
|
||||||
if (iconTex.ImGuiHandle != nint.Zero)
|
|
||||||
{
|
|
||||||
_textureWraps[iconId] = new TextureContainer { Texture = iconTex };
|
|
||||||
return iconTex;
|
|
||||||
}
|
|
||||||
|
|
||||||
iconTex.Dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
_textureWraps[iconId] = new TextureContainer { Texture = null };
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
foreach (TextureContainer container in _textureWraps.Values)
|
|
||||||
container.Dispose();
|
|
||||||
|
|
||||||
_textureWraps.Clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
private sealed class TextureContainer : IDisposable
|
|
||||||
{
|
|
||||||
public required IDalamudTextureWrap? Texture { get; init; }
|
|
||||||
|
|
||||||
public void Dispose() => Texture?.Dispose();
|
|
||||||
}
|
|
||||||
}
|
|
2
LLib
2
LLib
@ -1 +1 @@
|
|||||||
Subproject commit 2f6ef354c401a9f1bb9b807327acad7e98662a2e
|
Subproject commit 7f83ece6a0c07d0fbc1902502050563b5a8c09e4
|
Loading…
Reference in New Issue
Block a user