コンテンツにスキップ

ImageProvider クラス

描画に使用する画像の読み込み方法を表し、共有キャッシュのキーを兼ねます。

名前空間: FloatSoda.Core.Providers
アセンブリ: FloatSoda.dll

public abstract record ImageProvider : IEquatable<ImageProvider>

object ← ImageProvider

FileImageProvider

IEquatable<ImageProvider>

object.Equals(object?), object.Equals(object?, object?), object.GetHashCode(), object.GetType(), object.MemberwiseClone(), object.ReferenceEquals(object?, object?), object.ToString()

画像を使う側はResolveAsyncでImageHandleを借り、使い終わったら Disposeで返します。画像そのものはキャッシュが所有し、等しいプロバイダーから 借りたハンドルは同じ画像を共有します。最後のハンドルが返された時点で画像を解放します。

等しいかどうかはrecordの値の等価性で判定します。派生型は、同じ画像を指すインスタンス同士が 等しくなるように、読み込み元を表す値(パスやURLなど)をrecordのメンバーとして持たせてください。

画像を読み込みます。

protected abstract ValueTask<SKImage> LoadAsync(CancellationToken cancellationToken)

cancellationToken CancellationToken

処理のキャンセルを通知するトークン。

ValueTask<SKImage>

読み込んだ画像。所有権はキャッシュへ移ります。

フレームを処理するスレッドから呼び出されます。呼び出しスレッドをブロックせず、 ファイルやネットワークの待ち時間とデコードは非同期に実行してください。 複数の画像の読み込みは並行して進みます。

このプロバイダーが指す画像を借ります。

public ValueTask<ImageHandle> ResolveAsync(CancellationToken cancellationToken = default)

cancellationToken CancellationToken

この呼び出しの待機をキャンセルするトークン。他の利用者が残っているあいだは、共有している読み込みを中断しません。 この呼び出しが最後の利用者だった場合は、読み込みにもキャンセルを通知します。

ValueTask<ImageHandle>

画像を借りているあいだ保持し、使い終わったら破棄するハンドル。

等しいプロバイダーの画像が既に読み込み済みであれば、完了済みのValueTask%601を返します。 読み込みの失敗は返すタスクの状態として通知し、失敗した結果はキャッシュに残しません。

FileImageProvider