# NNSG2dOamExEntryFunctions

## 構造体定義

    typedef struct NNSG2dOamExEntryFunctions
    {
        NNSG2dGetOamCpacityFuncPtr        getOamCapacity;
        NNSG2dGetOamCpacityFuncPtr        getAffineCapacity;
        NNSG2dEntryNewOamFuncPtr          entryNewOam;
        NNSG2dEntryNewOamAffineFuncPtr    entryNewAffine;

    }NNSG2dOamExEntryFunctions;

    typedef u16     (*NNSG2dGetOamCpacityFuncPtr)();
    typedef u16     (*NNSG2dGetOamAffineCpacityFuncPtr)();
    typedef BOOL    (*NNSG2dEntryNewOamFuncPtr)( const GXOamAttr* pOam, u16 index );
    typedef u16     (*NNSG2dEntryNewOamAffineFuncPtr)( const MtxFx22* mtx, u16 index );

## NNSG2dOamExEntryFunctions.getOamCapacity

拡張OAMマネージャが利用可能な、OAMアトリビュートの個数を取得する関数へのポインタです。
本関数の返り値である、OAMアトリビュートの個数は、実際にハードウェアOAMにロード可能なOAMアトリビュートの個数を表します。
拡張OAMマネージャの初期化時にパラメータとして与える、OAMチャンクの個数(numPooledOam)とは異なる点にご注意ください。
登録チャンク数 > getOamCapacity()の返り値 のときに、拡張OAMマネージャは 登録されたOBJを複数フレームにわたって時分割表示します。

## NNSG2dOamExEntryFunctions.getAffineCapacity

拡張OAMマネージャが利用可能な、OAMアフィンパラメータの個数を取得する関数へのポインタです。
拡張OAMマネージャがアフィンパラメータを管理しない場合には、NULL に設定しても問題ありません。
登録アフィンパラメータ数 > getAffineCapacity()の返り値 のときに、拡張OAMマネージャは
登録されたアフィンパラメータを複数フレームにわたって時分割でロードし、
アフィンパラメータを使用しているOBJを表示します。

## NNSG2dOamExEntryFunctions.entryNewOam

OAMアトリビュートを登録する関数へのポインタです。
OAMアトリビュートと、OAMアトリビュートの番号を引数にとります。
OAMアトリビュートの番号indexは、entryNewOamが呼び出された回数と同義です。
なお、G2dが提供するOAMマネージャをentryNewOamの実装として利用する場合には、indexパラメータは使用されません。

### 実装例：OAMマネージャを使用する場合

    static u16 OamMgrExCBEntryOamAffine_( const MtxFx22* pMtx, u16 index )
    {
    #pragma unused( index )
        return NNS_G2dEntryOamManagerAffine( &myOamMgr_, pMtx );
    }

### 実装例：OAMマネージャを使用しない場合

    static BOOL CallBackEntryNewOam(const GXOamAttr* pOam, u16 index)
    {
        const u32 szByte = sizeof( GXOamAttr );

        DC_FlushRange( (void*)pOam, szByte );
        GX_LoadOAM( pOam, index * szByte, szByte );

        return TRUE;
    }

## NNSG2dOamExEntryFunctions.entryNewAffine

OAMアフィンパラメータを登録する関数へのポインタです。
アフィンパラメータを格納する行列と、アフィンパラメータの番号を引数にとります。
拡張OAMマネージャがアフィンパラメータを管理しない場合には、NULL に設定しても問題ありません。
entryNewOamの場合と同様に、アフィンパラメータの番号indexは、entryNewAffineが呼び出された回数と同義です。

### 実装例：OAMマネージャを使用する場合

    static u16 OamMgrExCBEntryOamAffine_( const MtxFx22* pMtx, u16 index )
    {
    #pragma unused( index )
        return NNS_G2dEntryOamManagerAffine( &myOamMgr_, pMtx );
    }

## 参照

`NNS_G2dSetOamManExEntryFunctions
`NNS_G2dGetOamManExInstance
``

## 履歴

2005/06/06 初版