{
public class Activity
{
- public bool 活性化している
- {
- get;
- private set; // 派生クラスからも設定は禁止。
- } = false;
+ public bool 活性化している { get; private set; } = false; // 派生クラスからも設定は禁止。
public bool 活性化していない
{
get { return !this.活性化している; }
private set { this.活性化している = !value; } // 派生クラスからも設定は禁止。
}
- public bool 最初の進行描画である { get; set; } = false;
+ public bool デバイス依存リソースが生成されている { get; private set; } = false; // 派生クラスからも設定は禁止。
+ public bool デバイス依存リソースが生成されていない
+ {
+ get { return !this.デバイス依存リソースが生成されている; }
+ private set { this.デバイス依存リソースが生成されている = !value; } // 派生クラスからも設定は禁止。
+ }
+ /// <summary>
+ /// この Activity を初期化し、進行や描画を行える状態にする。
+ /// これにはデバイス依存リソースの作成も含まれる。
+ /// </summary>
public void 活性化する( FDK.メディア.デバイスリソース dr )
{
Debug.Assert( this.活性化していない );
+
this.On活性化( dr );
this.活性化している = true;
- this.最初の進行描画である = true;
+
+ this.デバイス依存リソースを作成する( dr );
}
+
+ /// <summary>
+ /// この Activity を終了し、進行や描画を行わない状態に戻す。
+ /// これにはデバイス依存リソースの解放も含まれる。
+ /// </summary>
public void 非活性化する( FDK.メディア.デバイスリソース dr )
{
Debug.Assert( this.活性化している );
+
this.On非活性化( dr );
this.活性化している = false;
+
+ this.デバイス依存リソースを解放する( dr );
}
+ /// <summary>
+ /// デバイスに依存するリソースを作成する。
+ /// </summary>
+ /// <remarks>
+ /// 活性化時だけではなく、活性化している最中はいつでも
+ /// (デバイスが再構築またはリサイズされた 後 に)呼び出される可能性がある。
+ /// </remarks>
+ public void デバイス依存リソースを作成する( FDK.メディア.デバイスリソース dr )
+ {
+ Debug.Assert( this.活性化している );
+ Debug.Assert( this.デバイス依存リソースが生成されていない );
+
+ this.Onデバイス依存リソースの作成( dr );
+ this.デバイス依存リソースが生成されている = true;
+ }
+
+ /// <summary>
+ /// デバイスに依存するリソースを解放する。
+ /// </summary>
+ /// <remarks>
+ /// 非活性化時だけではなく、活性化している最中はいつでも
+ /// (デバイスが再構築またはリサイズされる 前 に)呼び出される可能性がある。
+ /// </remarks>
+ public void デバイス依存リソースを解放する( FDK.メディア.デバイスリソース dr )
+ {
+ Debug.Assert( this.活性化している );
+ Debug.Assert( this.デバイス依存リソースが生成されている );
+
+ this.Onデバイス依存リソースの解放( dr );
+ this.デバイス依存リソースが生成されていない = true;
+ }
+
+ /* public void 進行描画する( FDK.メディア.デバイスリソース dr )
+ {
+ // このクラスでは、進行描画用の共通メソッドは定義しない。
+ // (派生クラスにより引数がいろいろ変わるので、共通して定義する意味が薄い。)
+
+ // 以下は、推奨される実装の一部。
+
+ // 活性化していないときに呼び出しがあるならコーディングミス。
+ Debug.Assert( this.活性化していない );
+
+ // デバイス依存リソースが使えないなら何もしない(デバイス再構築またはリサイズ中)。
+ if( this.デバイス依存リソースが解放済みである )
+ return;
+ }
+ */
+
+ // 以下、派生クラスでオーバーライドするもの。
+
protected virtual void On活性化( FDK.メディア.デバイスリソース dr )
{
}
protected virtual void On非活性化( FDK.メディア.デバイスリソース dr )
{
}
+ protected virtual void Onデバイス依存リソースの作成( FDK.メディア.デバイスリソース dr )
+ {
+ }
+ protected virtual void Onデバイス依存リソースの解放( FDK.メディア.デバイスリソース dr )
+ {
+ }
}
}