using System.Runtime.InteropServices;
using Dalamud.Interface.Utility;
using ImGuiNET;
namespace Dalamud.Interface.ManagedFontAtlas;
///
/// Common stuff for and .
///
public interface IFontAtlasBuildToolkit
{
///
/// Gets or sets the font relevant to the call.
///
ImFontPtr Font { get; set; }
///
/// Gets the current scale this font atlas is being built with.
///
float Scale { get; }
///
/// Gets a value indicating whether the current build operation is asynchronous.
///
bool IsAsyncBuildOperation { get; }
///
/// Gets the current build step.
///
FontAtlasBuildStep BuildStep { get; }
///
/// Gets the font atlas being built.
///
ImFontAtlasPtr NewImAtlas { get; }
///
/// Gets the wrapper for of .
/// This does not need to be disposed. Calling does nothing.-
///
/// Modification of this vector may result in undefined behaviors.
///
ImVectorWrapper Fonts { get; }
///
/// Queues an item to be disposed after the native atlas gets disposed, successful or not.
///
/// Disposable type.
/// The disposable.
/// The same .
T DisposeWithAtlas(T disposable) where T : IDisposable;
///
/// Queues an item to be disposed after the native atlas gets disposed, successful or not.
///
/// The gc handle.
/// The same .
GCHandle DisposeWithAtlas(GCHandle gcHandle);
///
/// Queues an item to be disposed after the native atlas gets disposed, successful or not.
///
/// The action to run on dispose.
void DisposeWithAtlas(Action action);
}