前のページ次のページ上に戻るホーム BREW C++ ライブラリ & GUI フレームワーク : SophiaFramework 3.0
SFBImage
IImage インターフェイスのラッパー クラスです。
#include <SFBImage.h.hpp>
class SFBImage : public SFBBase;
SFMTYPEDEFWRAPPER(SFBImage)

継承図

SFBImage クラスの継承図

協調図

SFBImage クラスの協調図

参照

BREW API IImage

バグ情報

JPEG イメージの取り扱い
Tips すべて

JPEG のデータの読み込みは非同期で処理されるため、下記のようなコードは失敗する恐れがあります。

pi=ISHELL_LoadResImage(pMe->a.m_pIShell, “image.bar”, IMG_JPEG1);
if(pi)
IIMAGE_Draw(pi);

より安全に処理するには、下記の様に、IIMAGE_Notify によってコールバックを登録し、 イメージのロード完了時にコールバック内でIIMAGE_Draw をコールしてください。

ISHELL_CreateInstance(pMe->a.m_pIShell, AEECLSID_JPEG, (void **)&pi);
  
if (pi)
{
    IIMAGE_Notify(pi, pcb);       // pcb はコールバック関数へのポインタ
    IIMAGE_SetStream(pi, stream); //stream は画像ファイルもしくは
                                  //画像データへのポインタ
  
    //→コールバック関数内でIIMAGE_Draw()
}

PNG イメージの取り扱い
Tips すべて

PNG イメージのデコードは画像データ + 40 KB ほどのヒープを瞬間的に使用します。 ヒープ残量を確認してからイメージをロードするようにして下さい。

PNG イメージの透過処理について
Tips すべて

2.1 から、PNG イメージに対しては AEE_RO_MASK を指定できなくなりました。 以前は、tRNS チャンクに透過色の情報を持たないような PNG データに対して AEE_RO_MASK を指定した場合、カラーパレットの index0 の色を透過表示していましたが、 2.1 以降ではこのような操作は行えません。 なお、tRNS チャンクに透過色の情報を持つ PNG データに対し、 AEE_RO_COPY を指定した場合、透過色の指定は無視されます。この動作は 2.1、2.0 で共通です。

BCI イメージの取り扱いについて
Tips すべて

BCI ファイルを IImage オブジェクトにセットした場合、 IImage オブジェクト自体を解放するまでソースの BCI ファイルを削除することは出来ません。

メンバ

パブリック関数
Void Draw( SInt32 x , SInt32 y )
Draw( SFXGridConstRef grid )
画面上の指定された位置に画像を描画します。
Void DrawFrame( SInt32 frame , SInt32 x , SInt32 y )
DrawFrame( SInt32 frame , SFXGridConstRef grid )
画面上の指定された位置で、画像内の任意のフレームを描画します。
Void DrawOffscreen( SInt32 offscreen = 0 )
画像をオフスクリーンバッファとメインバッファのどちらに描画するかを指定します。 この関数は、IPARM_OFFSCREEN を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
Void GetInfo( AEEImageInfo* info )
画像に関する情報を取得します。
Bool HandleEvent( AEEEvent event , UInt16 wParam , UInt32 dwParam )
HandleEvent( SFXEventConstRef event )
SFBImage オブジェクトのイベント ハンドラです。
Void Notify( PFNIMAGEINFO notify , VoidPtr data = null )
SFBImage::SetStream による画像データの読み込み完了時に呼び出されるコールバック関数を登録します。
Void SetAnimationRate( SInt32 rate )
アニメーションレートをミリ秒単位で設定します。 この関数は、IPARM_RATE を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
Void SetDisplay( SFBDisplaySmpConstRef display )
画像を描画するときに使用する SFBDisplay オブジェクトを設定します。 この関数は、IPARM_DISPLAY を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
Void SetDrawSize( SInt32 width , SInt32 height )
描画する画像のサイズを設定します。 この関数は、IPARM_SIZE を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
Void SetFrameCount( SInt32 count )
画像内のフレームの数を設定します。 この関数は IPARM_NFRAMES を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
Void SetFrameSize( SInt32 width )
アニメーションをサポートしない画像形式 (Windows BMPなど) 用に各フレームの幅を設定します。 この関数は、IPARM_CXFRAME を指定して SFBImage::SetParm を呼び出した場合と同様の処理を行います。
Void SetOffset( SInt32 cx , SInt32 cy )
SetOffset( SFXGridConstRef grid )
描画用オフセットを設定し、描画時の画像の原点を変更します。 この関数は、IPARM_OFFSET を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
Void SetParm( SInt32 param , SInt32 p1 , SInt32 p2 )
SFBIImage オブジェクトの画像関連パラメータを設定します。
Void SetStream( SFBAStreamSmpConstRef stream )
画像データをファイル、またはソケットからストリーム形式で読み込みます。 画像の読み込みが完了したときに、SFBImage::Notify で登録されたコールバック関数を呼び出します。
Void Start( SInt32 x , SInt32 y )
Start( SFXGridConstRef grid )
指定された画像をアニメーション化します。 この関数は、画像の個々のフレームを繰り返し描画します。
Void Stop( Void )
SFBImage::Start を使用して開始した画像のアニメーションを停止します。

SFBImage::Draw
画面上の指定された位置に画像を描画します。
[ public ]
Void Draw(
    SInt32 x   // 画像を描画する長方形の左上の X 座標
    SInt32 y   // 画像を描画する長方形の左上の Y 座標
);
[ public ]
Void Draw(
    SFXGridConstRef grid   // 画像を描画する長方形の左上の座標
);

使用例

リソース ファイルから読み込んだ画像を描画します。

// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE  0x0001

SFBShellSmp    shell     = SFBShell::GetInstance();
SFBImageSmp    image;
AEEImageInfo   imageInfo = {0};

// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

if (image != null) {
    // 画像の情報を取得します。
    image->GetInfo(&imageInfo);

    // SFBImage オブジェクトが画像を持つかを確認します。
    if (imageInfo.cx == 0) {
        DBGPRINTF("Failed to load image…!");
        image.Release();
    }
    else {
        // 画像を描画します。
        image->Draw(0, 0);
    }
}

参照

BREW API IIMAGE_Draw | SFBImage::DrawFrame


SFBImage::DrawFrame
画面上の指定された位置で、画像内の任意のフレームを描画します。
[ public ]
Void DrawFrame(
    SInt32 frame   // フレーム番号
    SInt32 x       // 画像を描画する長方形の左上の X 座標
    SInt32 y       // 画像を描画する長方形の左上の Y 座標
);
[ public ]
Void DrawFrame(
    SInt32 frame           // フレーム番号
    SFXGridConstRef grid   // 画像を描画する長方形の左上の座標
);

使用例

リソース ファイルから BREW 圧縮画像 (BCI) を読み込み、 任意のアニメーションのフレームを描画します。

// リソース ファイルから読み込む BCI イメージのリソース ID
#define IDR_MY_ANIMATION  0x0001

SFBShellSmp    shell     = SFBShell::GetInstance();
SFBImageSmp    image;
AEEImageInfo   imageInfo = {0};

// リソース ファイルから BCI イメージを取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDR_MY_ANIMATION);

if (image != null) {
    // BCI イメージの情報を取得します。
    image->GetInfo(&imageInfo);

    // SFBImage オブジェクトが BCI イメージを持つかを確認します。
    if (imageInfo.cx == 0) {
        DBGPRINTF("Failed to load image…!");
        image.Release();
    }
    else {
        // 任意のアニメーションのフレームを描画します。
        image->DrawFrame(1, 0, 0);
    }
}

参照

BREW API IIMAGE_DrawFrame | SFBImage::Draw


SFBImage::DrawOffscreen
画像をオフスクリーンバッファとメインバッファのどちらに描画するかを指定します。 この関数は、IPARM_OFFSCREEN を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
[ public ]
Void DrawOffscreen(
    SInt32 offscreen = 0   // オフスクリーン
);

参照

BREW API IIMAGE_DrawOffscreen | SFBImage::SetParm


SFBImage::GetInfo
画像に関する情報を取得します。
[ public ]
Void GetInfo(
    AEEImageInfo* info   // 画像情報を受け取る領域を指すポインタ
);

使用例

画像の情報を取得します。

// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE  0x0001

SFBShellSmp    shell     = SFBShell::GetInstance();
SFBImageSmp    image;
AEEImageInfo   imageInfo = {0};

// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

if (image != null) {
    // 画像の情報を取得します。
    image->GetInfo(&imageInfo);
}

参照

BREW API IIMAGE_GetInfo | AEEImageInfo


SFBImage::HandleEvent
SFBImage オブジェクトのイベント ハンドラです。
[ public ]
Bool HandleEvent(
    AEEEvent event   // イベント
    UInt16 wParam    // イベント固有の 16 ビット値
    UInt32 dwParam   // イベント固有の 32 ビット値
);
[ public ]
Bool HandleEvent(
    SFXEventConstRef event   
);

参照

BREW API IIMAGE_HandleEvent


SFBImage::Notify
SFBImage::SetStream による画像データの読み込み完了時に呼び出されるコールバック関数を登録します。
[ public ]
Void Notify(
    PFNIMAGEINFO notify   // コールバック関数
    VoidPtr data = null   // ユーザーデータ
);

参照

BREW API IIMAGE_Notify | PFNIMAGEINFO | SFBImage::SetStream


SFBImage::SetAnimationRate
アニメーションレートをミリ秒単位で設定します。 この関数は、IPARM_RATE を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
[ public ]
Void SetAnimationRate(
    SInt32 rate   // アニメーションレート
);

参照

BREW API IIMAGE_SetAnimationRate | SFBImage::SetParm


SFBImage::SetDisplay
画像を描画するときに使用する SFBDisplay オブジェクトを設定します。 この関数は、IPARM_DISPLAY を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
[ public ]
Void SetDisplay(
    SFBDisplaySmpConstRef display   // SFBDisplay オブジェクト
);

バージョン

この関数は、BREW 2.1 でのみ使用可能です。

参照

BREW API IIMAGE_SetDisplay


SFBImage::SetDrawSize
描画する画像のサイズを設定します。 この関数は、IPARM_SIZE を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
[ public ]
Void SetDrawSize(
    SInt32 width    // 画像の幅
    SInt32 height   // 画像の高さ
);

使用例

リソース ファイルから画像を読み込み、 描画サイズを設定して描画します。

// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE  0x0001

SFBShellSmp     shell     = SFBShell::GetInstance();
SFBImageSmp     image;
AEEImageInfo    imageInfo = {0};

// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

if (image != null) {
    // 画像の情報を取得します。
    image->GetInfo(&imageInfo);

    // SFBImage オブジェクトが画像を持つかを確認します。
    if (imageInfo.cx == 0) {
        DBGPRINTF("Failed to load image…!");
        image.Release();
    }
    else {
        // 描画する画像のサイズを設定します。
        image->SetDrawSize(50, 50);
        
        // 画像を描画します。
        image->Draw(0, 0);
    }
}

参照

BREW API IIMAGE_SetDrawSize | SFBImage::SetParm


SFBImage::SetFrameCount
画像内のフレームの数を設定します。 この関数は IPARM_NFRAMES を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
[ public ]
Void SetFrameCount(
    SInt32 count   // フレーム数
);

参照

BREW API IIMAGE_SetFrameCount | SFBImage::SetParm


SFBImage::SetFrameSize
アニメーションをサポートしない画像形式 (Windows BMPなど) 用に各フレームの幅を設定します。 この関数は、IPARM_CXFRAME を指定して SFBImage::SetParm を呼び出した場合と同様の処理を行います。
[ public ]
Void SetFrameSize(
    SInt32 width   // フレームの幅
);

参照

BREW API IIMAGE_SetFrameSize | SFBImage::SetParm


SFBImage::SetOffset
描画用オフセットを設定し、描画時の画像の原点を変更します。 この関数は、IPARM_OFFSET を指定して SFBImage::SetParm を呼び出した場合と同等の処理を行います。
[ public ]
Void SetOffset(
    SInt32 cx   // オフセットの X 座標
    SInt32 cy   // オフセットの Y 座標
);
[ public ]
Void SetOffset(
    SFXGridConstRef grid   // オフセットの座標
);

参照

BREW API IIMAGE_SetOffset | SFBImage::SetParm


SFBImage::SetParm
SFBIImage オブジェクトの画像関連パラメータを設定します。
[ public ]
Void SetParm(
    SInt32 param   // パラメータの種別
    SInt32 p1      // 特定のパラメータ値
    SInt32 p2      // 特定のパラメータ値
);

使用例

リソース ファイルからイメージを読み込み、 透過モードを有効にして描画します。

// リソース ファイルから読み込むビットマップのリソース ID
#define IDB_MY_PICTURE  0x0001

SFBShellSmp     shell     = SFBShell::GetInstance();
SFBImageSmp     image;
AEEImageInfo    imageInfo = {0};

// リソース ファイルから画像を取得します。
image = shell->LoadResImage(MYRESOURCE_RES_FILE, IDB_MY_PICTURE);

if (image != null) {
    // 画像の情報を取得します。
    image->GetInfo(&imageInfo);

    // SFBImage オブジェクトが画像を持つかを確認します。
    if (imageInfo.cx == 0) {
        DBGPRINTF("Failed to load image…!");
        image.Release();
    }
    else {
        // 画像を透過モードで扱います。
        image->SetParm(IPARM_ROP, AEE_RO_TRANSPARENT, 0);

        // 画像を描画します。
        image->Draw(0, 0);
    }
}

参照

BREW API IIMAGE_SetParm | BREW API AEE IImageパラメータ


SFBImage::SetStream
画像データをファイル、またはソケットからストリーム形式で読み込みます。 画像の読み込みが完了したときに、SFBImage::Notify で登録されたコールバック関数を呼び出します。
[ public ]
Void SetStream(
    SFBAStreamSmpConstRef stream   // 画像データストリーム
);

参照

BREW API IIMAGE_SetStream | SFBAStream::Read | SFBAStream::Readable


SFBImage::Start
指定された画像をアニメーション化します。 この関数は、画像の個々のフレームを繰り返し描画します。
[ public ]
Void Start(
    SInt32 x   // フレームを描画する長方形の左上の X 座標
    SInt32 y   // フレームを描画する長方形の左上の Y 座標
);
[ public ]
Void Start(
    SFXGridConstRef grid   // フレームを描画する長方形の左上の座標
);

参照

BREW API IIMAGE_Start | SFBImage::Stop


SFBImage::Stop
SFBImage::Start を使用して開始した画像のアニメーションを停止します。
[ public ]
Void Stop(Void);

参照

BREW API IIMAGE_Stop | SFBImage::Start