ホーム > デベロッパ > BREW プログラミング入門 > 画面に描画をしてみよう > - 1 / 3 -

画面に描画をしてみよう - 1 / 3 -

//
//      Square.c  
//

#include "AEEModGen.h"  // モジュール インターフェイスの宣言
#include "AEEAppGen.h"  // アプレット インターフェイスの宣言
#include "AEEShell.h"   // シェル インターフェイスの宣言

#include "Square.bid"    // Square アプレットのクラス ID をインクルード 

// 前方宣言
static boolean Square_HandleEvent(IApplet * pi, AEEEvent eCode,
                                  uint16 wParam, uint32 dwParam);
static void Square_OnAppStart(AEEApplet* app);

// 
//  BREW アプレットを作成する関数
//  
int AEEClsCreateInstance(
    AEECLSID ClsId,     // 作成するアプレットのクラス ID
    IShell * pIShell,   // シェル オブジェクト
    IModule * po,       // モジュール オブジェクト
    void ** ppObj)      // 作成したアプレットを返す
{
    *ppObj = NULL;
    
    if (ClsId == AEECLSID_SQUARE) {
        if (AEEApplet_New(sizeof(AEEApplet), ClsId, pIShell, po, (IApplet**)ppObj,
            (AEEHANDLER)Square_HandleEvent,NULL) == TRUE) {
            return (AEE_SUCCESS);
        }
    }
    return (EFAILED);
}

//
//  Square アプレットのイベント ハンドラ
//
static boolean Square_HandleEvent(
    IApplet * pi,
    AEEEvent eCode,
    uint16 wParam,
    uint32 dwParam)
{  
    switch (eCode) 
    {
    case EVT_APP_START:                        
        Square_OnAppStart((AEEApplet*) pi);
        return TRUE;
            
    case EVT_APP_STOP:
        return TRUE;
        
    default:
        break;
    }
    return FALSE;
}

//
//  アプリケーション開始時に呼び出される
//
static void Square_OnAppStart(AEEApplet* app)
{
    IShell* shell;
    IDisplay* disp;
    AEEDeviceInfo devinfo;
    AEERect whole_rect;
    AEERect red_rect;
    RGBVAL light_blue   = MAKE_RGB(200, 200, 255);
    RGBVAL red          = MAKE_RGB(255, 0, 0);

    // IShell オブジェクトを取得する
    shell = app->m_pIShell;

    // IDisplay オブジェクトを取得する
    disp  = app->m_pIDisplay;

    // 携帯電話の画面の大きさを取得する
    ISHELL_GetDeviceInfo(shell, &devinfo);

    // 画面の大きさの長方形を作成
    whole_rect.x    = 0;                    // 左上の X 座標
    whole_rect.y    = 0;                    // 左上の Y 座標
    whole_rect.dx   = devinfo.cxScreen;     // 幅
    whole_rect.dy   = devinfo.cyScreen;     // 高さ

    // 画面全体を淡い青で塗りつぶす
    IDISPLAY_FillRect(disp, &whole_rect, light_blue);

    // 赤い四角形の枠を描画する
    red_rect.x      = 20;
    red_rect.y      = 20;
    red_rect.dx     = 40;
    red_rect.dy     = 30;
    IDISPLAY_DrawRect(disp, &red_rect, red, 0, IDF_RECT_FRAME);

    // 画面ビットマップへの描画を実際に表示する
    IDISPLAY_Update(disp);
}