前のページ次のページ上に戻るホーム SophiaFramework UNIVERSE 5.3
SFYRenderer
レスポンダツリーを描画するクラスです。
#include <SFYRenderer.h.hpp>
class SFYRenderer;
SFMTYPEDEFCLASS(SFYRenderer)

協調図

SFYRenderer クラスの協調図

解説

SFYRenderer クラス(描画エンジン)は、 レスポンダツリー上のレスポンダをレスポンダ空間に描画するためのクラスです。

[Note] 注意

SFYRenderer クラスの一部の private 関数は SFYResponder クラスと SFYDistributer クラス内で利用されます。 一般のアプリ開発で直接操作されることはありません。

また、デフォルトで SFYApplication クラスが SFYRenderer インスタンスを内部的に保持し、 必要な設定や呼び出しを自動的にすべて行いますので、開発者がこのクラスを直接操作する必要はありません。

開発者が新たに別のレスポンダツリーを構築する場合は、 SFYRenderer インスタンスをレスポンダツリーのルートレスポンダに関連付ける必要があります。

例 887. 新しいレスポンダツリーを構築する

SFYRenderer _renderer;
SFZRootSmp _root;
SFCError error;

// SFYRenderer インスタンスを初期化する
// ※デバイス画面領域(携帯電話の画面領域)がレスポンダ空間として設定される
if ((error = _renderer.Initialize()) == SFERR_NO_ERROR) {

    // レスポンダツリーのルートレスポンダを生成する
    if ((_root = SFZRoot::NewInstance(&error)) != null) {

        // ルートレスポンダに SFYRenderer インスタンスを設定する
        _root->SetRenderer(&_renderer);

        // その他の初期化処理
        _root->SetRealBound(_root->GetSuitableBound());
        _root->SetStateVisible(true);
        ...
    }
}

例 888. レスポンダツリーを破棄する

SFYRenderer _renderer;
SFZRootSmp _root;

...

// レスポンダツリーを破棄してから、SFYRenderer インスタンスを破棄する
_root.Release();
_renderer.Terminate();

例 889. 新しいレスポンダツリーを描画する

SFZRootSmp _root;
SFCError error;

...

// レスポンダツリーを描画するにはルートレスポンダの Render 関数を呼び出す
error = _root->Render();

参照

描画エンジン | 描画処理 | レスポンダツリー | ルートレスポンダ | ルート(基礎編) | レスポンダ空間 | SFYResponder | SFYDistributer | SFYApplication SFZRoot | SFXEvent

メンバ

コンストラクタ/デストラクタ
SFYRenderer( Void )
SFYRenderer クラスのコンストラクタです。
~SFYRenderer( Void )
SFYRenderer クラスのデストラクタです。
パブリック関数
SFXRectangleConstRef GetGlobalBound( Void )
レスポンダ空間を取得します。
SFCError Initialize( Void )
初期化を行います。
Bool IsRendering( Void )
描画エンジンが描画処理中かどうかを判定します。
Void Terminate( Void )
終了処理を行います。

SFYRenderer::SFYRenderer
SFYRenderer クラスのコンストラクタです。
[ public, explicit ]
SFYRenderer(Void);

SFYRenderer::~SFYRenderer
SFYRenderer クラスのデストラクタです。
[ public ]
~SFYRenderer(Void);

SFYRenderer::GetGlobalBound
レスポンダ空間を取得します。
[ public, const ]
SFXRectangleConstRef GetGlobalBound(Void);

解説

この関数は、 この描画エンジンに設定されたレスポンダ空間を取得します。

[Note] 注意

レスポンダ空間は、 レスポンダツリーを描画する矩形領域です。 この領域は、 SFYRenderer::Initialize 関数を使用して描画エンジンに設定します。

参照

SFYRenderer::Initialize | 描画エンジン | レスポンダツリー | レスポンダ空間


SFYRenderer::Initialize
初期化を行います。
[ public ]
SFCError Initialize(Void);

戻り値

  • 成功したとき: SFERR_NO_ERROR
  • メモリ不足のとき: SFERR_NO_MEMORY
  • その他の失敗のとき: SFERR_FAILED

解説

この関数は、描画エンジンの初期化を行います。

この関数の実行により、 レスポンダツリーを描画するためのレスポンダ空間が、 デバイス画面領域(始点はデバイス画面の左上端)に設定されます。

レスポンダ空間は、常にデバイス画面領域であり、変更できません。

[Tip] Tip

SFYRenderer::Initialize 関数は、 SFYRenderer インスタンスをレスポンダツリーに関連付ける前に呼び出します。

この処理は SFYApplication::SFYApplication コンストラクタ内で行われるので、 SFYApplication クラスを継承するアプリケーションクラスを持つアプリの開発では呼び出す必要はありません。

また、 SFYResponder::Render 関数を呼び出して再描画するときに描画エンジンが終了している場合、 自動的にこの関数が呼び出されて描画エンジンは初期化されます。

使用例

デフォルトの描画エンジンが SFYApplication::SFYApplication コンストラクタ内で初期化されるので、 一般のアプリ開発で SFYRenderer::Initialize 関数を呼び出す必要はありません。

// SFYApplication クラスの定義
class SFYApplication : public SFCApplication {
    SFMSEALCOPY(SFYApplication)
    private:
                SFYDistributer  _distributer; // 配信エンジン
                SFYRenderer     _renderer;    // 描画エンジン
                SFZRootSmp      _root;        // ルート

    public:

    ...

};


// SFYApplication クラスのコンストラクタの実装
/*protected */SFYApplication::SFYApplication(Void) static_throws
{
    SFCError  error;

    // 初期化処理

    if (static_try()) {

        // 配信エンジンを初期化する
        static_throw(_distributer.Initialize());

        if (static_try()) {

            // 描画エンジンを初期化する
            // ※デバイス画面領域(携帯電話の画面領域)がレスポンダ空間として設定される
            static_throw(_renderer.Initialize());

            if (static_try()) {

                // ルートを作成する
                if ((_root = SFZRoot::NewInstance(&error)) != null) {

                    // ルートに配信エンジンを設定する
                    _root->SetDistributer(&_distributer);

                    // ルートに描画エンジンを設定する
                    _root->SetRenderer(&_renderer);

                    // レスポンダ空間をルートの実領域に設定する
                    _root->SetRealBound(_root->GetSuitableBound());

                    // ルートの状態を「可視+活性+操作可能+フォーカス」にまとめて設定する
                    _root->SetState(true, true, true, true);
                }
                else {
                    static_throw(error);
                }
            }
        }
    }
}// SFYApplication::SFYApplication //

参照: SFYDistributer::Initialize | SFYRenderer::Initialize | SFZRoot::NewInstance | SFYResponder::SetDistributer | SFYResponder::SetRenderer | SFYResponder::SetRealBound | SFYResponder::SetState |

参照

SFYRenderer::Terminate | SFYApplication::SFYApplication | 描画エンジン | 描画処理 | レスポンダツリー | レスポンダ空間 | ルート


SFYRenderer::IsRendering
描画エンジンが描画処理中かどうかを判定します。
[ public, const ]
Bool IsRendering(Void);

戻り値

  • 描画処理中のとき: true
  • そうできないとき: false

解説

現在、描画エンジンが描画処理中かどうかを判定します。


SFYRenderer::Terminate
終了処理を行います。
[ public ]
Void Terminate(Void);

解説

この関数は、描画エンジンの終了処理を行います。

[Note] 注意
描画エンジンがレスポンダツリーに関連付けられている場合、 SFYRenderer::Terminate 関数を呼び出す前にそのレスポンダツリー上のレスポンダを解放する必要があります。

使用例

デフォルトの描画エンジンは SFYApplication::~SFYApplication デストラクタ内で終了されるので、 一般のアプリ開発で SFYRenderer::Terminate 関数を呼び出す必要はありません。

// SFYApplication クラスの定義
class SFYApplication : public SFCApplication {
    SFMSEALCOPY(SFYApplication)
    private:
                SFYDistributer  _distributer; // 配信エンジン
                SFYRenderer   _renderer;  // 描画エンジン
                SFZRootSmp      _root;        // ルート

    public:

    ...

};


// SFYApplication クラスのデストラクタの実装
/*protected virtual */SFYApplication::~SFYApplication(Void)
{

    // 終了処理(必ず下記の順序で行う)

    // レスポンダツリーを解放する
    _root.Release();

    // 描画エンジンを終了する
    _renderer.Terminate();

    // 配信エンジンを終了する
    _distributer.Terminate();

}// SFYApplication::~SFYApplication //

参照: SFXResponderPointer::Release | SFYRenderer::Terminate | SFYDistributer::Terminate

参照

SFYRenderer::Initialize | SFYApplication::~SFYApplication | 描画エンジン | 描画処理 | レスポンダツリー | ルート