〜Raspberry Piを使った電子工作〜
このグラフィックスライブラリが提供している機能は、大きく分けて次の2つがあります。
直接描画用APIは、液晶パネルへ描画を行うためのAPI関数で、LCDコントローラのハードウェア支援機能を利用し、高速な図形描画を行うことができます。APIの名前はLCDC_xxxxで始まります。
仮想フレームバッファ描画APIは、メインメモリ内に仮想フレームバッファを作成し、この仮想フレームバッファへの図形描画を行い、またLCDCコントローラへイメージを転送するためのAPI関数群です。APIの名前はIMG_xxxxで始まります。
それぞれのAPIの共通の機能として、基本図形の描画、フォントの描画、ビットイメージの転送があります。
APIの構成モジュール: lcdc.h
gentype.h
spi.h
spi.c
lcdc_atm0430d5.c
font_5x8h.c
書式void LCDC_Init(unsigned char mode); 機能LCDコントローラを初期化します 引数 modeLCDC_MODE_RGB888 : カラーフォーマットとして24ビットカラーモードを指定します LCDC_MODE_RGB565 : カラーフォーマットとして16ビットカラーモードを指定します 戻り値なし 説明LCDコントローラを初期化し、画面をクリアします。
他の直接描画用APIおよび、仮想フレームバッファ描画用APIの呼び出しに先立ち、本APIを呼び出す必要があります。
書式void LCDC_ClearScreen(void); 機能画面をクリアします 引数なし 戻り値なし 説明液晶パネル全体をR:0, G:0, B:0 で塗りつぶします。
書式void LCDC_BoxFill(
short x1,
short y1,
short x2,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能塗りつぶされた矩形を描画します 引数 x1矩形の左上のX座標を指定します (0 ≦ x1 ≦ 479) y1矩形の左上のY座標を指定します (0 ≦ y1 ≦ 271) x2矩形の右下のX座標を指定します (0 ≦ x2 ≦ 479) y2矩形の右下のY座標を指定します (0 ≦ y2 ≦ 271) r塗りつぶし色の赤成分を指定します (0 ≦ r ≦ 255) g塗りつぶし色の緑成分を指定します (0 ≦ g ≦ 255) b塗りつぶし色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明LCDコントローラのハードウェア支援機能を使い、塗りつぶされた矩形を描画します。
書式void LCDC_Rectangle(
short x1,
short y1,
short x2,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能矩形を描画します 引数 x1矩形の左上のX座標を指定します (0 ≦ x1 ≦ 479) y1矩形の左上のY座標を指定します (0 ≦ y1 ≦ 271) x2矩形の右下のX座標を指定します (0 ≦ x2 ≦ 479) y2矩形の右下のY座標を指定します (0 ≦ y2 ≦ 271) r矩形の描画色の赤成分を指定します (0 ≦ r ≦ 255) g矩形の描画色の緑成分を指定します (0 ≦ g ≦ 255) b矩形の描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明LCDコントローラのハードウェア支援機能を使い、矩形を描画します。
書式void LCDC_BitBlt(
short x,
short y,
short width,
short height,
short srcx,
short srcy);
機能ビットイメージをコピーします 引数 xコピー先のX座標を指定します (0 ≦ x ≦ 479) yコピー先のY座標を指定します (0 ≦ y ≦ 271 + α) widthコピーするビットイメージの幅を指定します (0 ≦ width ≦ 479) heightコピーするビットイメージの高さを指定します (0 ≦ height ≦ 271) srcxコピー元のX座標を指定します (0 ≦ srcx ≦ 479) srcyコピー元のY座標を指定します (0 ≦ srcy ≦ 271 + α) 戻り値なし 説明LCDコントローラのハードウェア支援機能を使い、ビットイメージをコピーします。
コピー元・コピー先の矩形の座標は次の通りです。コピー元の矩形: (srcx, srcy) - (srcx + width - 1, srcy + height - 1)
コピー先の矩形: (x, y) - (x + width - 1, y + height - 1)LCDCに内蔵されているフレームバッファのうち、表示用として使われていないエリアをオフスクリーンエリアとして利用することができます。
このオフスクリーンエリアと、表示エリア(画面内)の間でビットイメージをコピーすることも可能です。これよって、フォントやキャラクタ・パターン等を高速に描画することが可能です。
但し、オフスクリーンエリアの高さ(α)は、次のようにLCDC_Init() APIで指定したモードによって異なります。S1D13780(フレームバッファ384KByte)とATM0430D5の組み合わせの場合 :
・LCDC_MODE_RGB888: α=0(利用できません)
・LCDC_MODE_RGB565: α=137
書式void LCDC_Line(
short x1,
short y1,
short x2,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能直線を描画します 引数 x1直線の始点のX座標を指定します (0 ≦ x1 ≦ 479) y1直線の始点のY座標を指定します (0 ≦ y1 ≦ 271) x2直線の終点のX座標を指定します (0 ≦ x2 ≦ 479) y2直線の終点のY座標を指定します (0 ≦ y2 ≦ 271) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明ソフトウェア描画により直線を描画します。水平線、垂直線を描画する場合は、本APIではなくハードウェア支援機能を利用できるLCDC_HLine()またはLCDC_VLine()を利用することを推奨します。
書式void LCDC_HLine(
short x1,
short y1,
short x2,
unsigned char r,
unsigned char g,
unsigned char b);
機能水平線を描画します 引数 x1水平線の始点のX座標を指定します (0 ≦ x1 ≦ 479) y1水平線の始点のY座標を指定します (0 ≦ y1 ≦ 271) x2水平線の終点のX座標を指定します (0 ≦ x2 ≦ 479) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明LCDコントローラのハードウェア支援機能を使い、水平線を描画します。
書式void LCDC_VLine(
short x1,
short y1,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能垂直線を描画します 引数 x1垂直線の始点のX座標を指定します (0 ≦ x1 ≦ 479) y1垂直線の始点のY座標を指定します (0 ≦ y1 ≦ 271) y2垂直線の終点のY座標を指定します (0 ≦ y2 ≦ 271) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明LCDコントローラのハードウェア支援機能を使い、垂直線を描画します。
書式void LCDC_Circle(
short cx,
short cy,
short rn,
unsigned char r,
unsigned char g,
unsigned char b);
機能中心点(cx, cy)、半径rnピクセルの円弧を描画します 引数 cx円弧の中心点のX座標を指定します (0 ≦ cx ≦ 479) cy円弧の中心点のY座標を指定します (0 ≦ cy ≦ 271) rn円弧の半径を指定します (0 ≦ rn ≦ 479) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明ソフトウェア描画により円弧を描画します。
書式void LCDC_CircleFill(
short cx,
short cy,
short rn,
unsigned char r,
unsigned char g,
unsigned char b);
機能中心点(cx, cy)、半径rnピクセルの塗りつぶされた円弧を描画します 引数 cx円弧の中心点のX座標を指定します (0 ≦ cx ≦ 479) cy円弧の中心点のY座標を指定します (0 ≦ cy ≦ 271) rn円弧の半径を指定します (0 ≦ rn ≦ 479) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明LCDコントローラのハードウェア支援機能を使い、塗りつぶされた円弧を描画します。
書式void LCDC_SetPixel(
short x,
short y,
unsigned char r,
unsigned char g,
unsigned char b);
機能点を描画します 引数 x点のX座標を指定します (0 ≦ x ≦ 479) y点のY座標を指定します (0 ≦ y ≦ 271) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明ソフトウェア描画により点を描画します。
書式void LCDC_GetPixel(
short x,
short y,
unsigned char *pr,
unsigned char *pg,
unsigned char *pb);
機能座標(x, y)の色を取得します 引数 x色を取得するX座標を指定します (0 ≦ x ≦ 479) y色を取得するY座標を指定します (0 ≦ y ≦ 271) *pr取得した色の赤成分を格納します (0 ≦ r ≦ 255) *pg取得した色の緑成分を指定します (0 ≦ g ≦ 255) *pb取得した色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明*pr, *pg, *pb にはNULLポインタを指定することはできません。NULLポインタを指定した場合の動作は不定です。
書式void LCDC_DrawFont(
short x1,
short y1,
short xmag,
short ymag,
unsigned char code,
unsigned char r,
unsigned char g,
unsigned char b);
機能1文字を描画します 引数 x1文字枠の左上のX座標を指定します (0 ≦ x ≦ 479) y1文字枠の左上のY座標を指定します (0 ≦ y ≦ 271) xmagX座標方向の拡大率を指定します (1 ≦ xmag ≦ 8) ymagX座標方向の拡大率を指定します (1 ≦ ymag ≦ 8) code文字コードを指定します (0x20 ≦ code ≦ 0x7E) r描画色の赤成分を格納します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明ソフトウェア描画により文字を描画します。
文字枠のサイズは幅6ピクセル、高さ8ピクセルです。
書式void LCDC_DrawString(
short x1,
short y1,
short xmag,
short ymag,
char *pstring,
unsigned char r,
unsigned char g,
unsigned char b);
機能文字列を描画します 引数 x1文字枠の左上のX座標を指定します (0 ≦ x ≦ 479) y1文字枠の左上のY座標を指定します (0 ≦ y ≦ 271) xmagX座標方向の拡大率を指定します (1 ≦ xmag ≦ 8) ymagX座標方向の拡大率を指定します (1 ≦ ymag ≦ 8) *pstringヌル文字('\0')を終端に持つ文字列へのポインタを指定します (最長80文字+ヌル文字) r描画色の赤成分を格納します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明ソフトウェア描画により文字列を描画します。
文字枠のサイズは1文字あたり幅6ピクセル、高さ8ピクセルです。
*pstringにNULLポインタを指定することはできません。NULLポインタを指定した場合の動作は不定です。
書式void LCDC_Scroll(
short h,
short v);
機能表示画面をX座標方向へ h ピクセル、Y座標方向へ v ピクセル分スクロールします 引数 hX座標方向へスクロールするピクセル数を指定します (-479 ≦ x ≦ 479) vY座標方向へスクロールするピクセル数を指定します (-271 ≦ y ≦ 271) 戻り値なし 説明LCDコントローラのハードウェア支援機能を使い、表示画面をスクロールします。
パラメータhは正の値を指定すると表示画面は左方向へ、負の値を指定すると右方向へスクロールします。
パラメータvは正の値を指定すると表示画面は上方向へ、負の値を指定すると下方向へスクロールします。
書式void LCDC_WaitVdisp(void); 機能垂直表示期間中のウェイト処理を実行します 引数なし 戻り値なし 説明LCDコントローラが液晶パネルへ画像を転送している期間(垂直表示期間)のウェイトを実行します。
アニメーション表示をする場合、直接描画APIを呼び出す前に本関数を呼び出すことにより、表示画面のチラつきを抑制することができます。但し、垂直表示期間内に描画が完了しなかった場合、次の垂直表示期間にまたがってAPIによる描画処理が実行されることになり、画面のチラつきが発生します。
なお、S1D13781とATM0430D5の組み合わせの場合、垂直表示期間は272ライン、垂直非表示期間は16ラインです。約1/60秒置きに垂直表示期間と垂直非表示期間を繰り返します。
書式unsigned short LCDC_GetImageFormat(void);
機能LCDC_Initで指定したカラーフォーマットを取得します 引数なし 戻り値※LCDC_Initの引数参照 説明表示色数を取得することができます。
書式unsigned short LCDC_GetBitsPerPixel(void);
機能1ピクセルあたりのバイト数を取得します 引数なし 戻り値1ピクセルあたりのバイト数が戻ります。LCDC_Init()に指定したカラーフォーマットによって異なります 説明戻り値はLCDC_Init() APIに指定したカラーフォーマットによって異なり、S1D13780とATM0430D5の組み合わせの場合の値は次のようになります。
・ LCDC_MODE_RGB888: 3(バイト/ピクセル)
・ LCDC_MODE_RGB565: 2(バイト/ピクセル)なお、カラーモードと1ピクセルあたりのバイト数の関係は、厳密には常に対という訳ではありません。カラーフォーマット(表示色数)を取得したい場合にはLCDC_GetImageFormat() APIを利用し、1ピクセルあたりのバイト数を取得したい場合には本APIを利用してください。
書式unsigned short LCDC_GetScreenWidth(void);
機能表示画面の幅をピクセル単位で取得します 引数なし 戻り値表示画面の幅(ピクセル数) 説明S1D13781とATM0430D5の組み合わせの場合、常に480(ピクセル)が戻ります。
コードの中で表示画面の幅を決め打ちにしたくない場合に利用することができます。
書式unsigned short LCDC_GetScreenHeight(void);
機能表示画面の高さをピクセル単位で取得します 引数なし 戻り値表示画面の高さ(ピクセル数) 説明S1D13781とATM0430D5の組み合わせの場合、常に272(ピクセル)が戻ります。
コードの中で表示画面の高さを決め打ちにしたくない場合に利用することができます。
APIの構成モジュール: imagebuf.h
imagebuf.c
書式HIMAGEBUF IMG_CreateOffscreenBuffer(void);
機能表示画面と同じカラーフォーマットと幅、高さを持つ仮想フレームバッファを作成します 引数なし 戻り値仮想フレームバッファのハンドル 説明S1D13781とATM0430D5の組み合わせの場合、常に幅480ピクセル、高さ272ピクセルの仮想フレームバッファを作成します。
仮想フレームバッファのハンドルの使用を終えた時点でIMG_DeleteBuffer() APIを呼び出し、仮想フレームバッファのハンドルを破棄してください。なお、破棄したハンドルはこれ以降利用できなくなります。
書式HIMAGEBUF IMG_CreateBuffer(
short width,
short height);
機能表示画面と同じカラーフォーマットで、任意の幅と高さを持つ仮想フレームバッファを作成します 引数 width仮想フレームバッファの幅をピクセル単位で指定します (1 ≦ width ≦ 1023) height仮想フレームバッファの高さをピクセル単位で指定します (1 ≦ height ≦ 767) 戻り値仮想フレームバッファのハンドル 説明仮想フレームバッファのハンドルの使用を終えた時点でIMG_DeleteBuffer() APIを呼び出し、仮想フレームバッファのハンドルを破棄してください。なお、破棄したハンドルはこれ以降利用できなくなります。
書式void IMG_DeleteBuffer(
HIMAGEBUF hBuffer
);
機能仮想フレームバッファのハンドルを破棄します 引数 hBuffer仮想フレームバッファのハンドルを指定します 戻り値なし 説明仮想フレームバッファのハンドルの使用を終えた時点で本APIを呼び出し、仮想フレームバッファのハンドルを破棄してください。なお、破棄したハンドルはこれ以降利用できなくなります。
書式void IMG_TransferToScreen(
HIMAGEBUF hBuffer
);
機能仮想フレームバッファの内容を表示画面へ転送し表示します 引数 hBuffer仮想フレームバッファのハンドルを指定します 戻り値なし 説明CPU転送により、表示画面と同じ幅・高さを持つ仮想フレームバッファを表示画面へ転送します。
hBufferに指定することのできる仮想フレームバッファのハンドルは、IMG_CreateOffscreenBuffer APIで作成したものに限られます。IMG_CreateBuffer APIで作成したハンドルを指定した場合の動作は保証されていません。
書式void IMG_BitBltToScreen(
HIMAGEBUF hBuffer,
short x,
short y,
short width,
short height,
short src,
short srcy);
機能仮想フレームバッファ上の任意の矩形内のビットイメージを表示画面へ転送(表示)します 引数 hBuffer仮想フレームバッファのハンドルを指定します xコピー先となる表示画面上のX座標を指定します (0 ≦ x ≦ 479) yコピー先となる表示画面上のY座標を指定します (0 ≦ y ≦ 271) widthコピーするビットイメージの幅を指定します (0 ≦ width ≦ 479) heightコピーするビットイメージの高さを指定します (0 ≦ height ≦ 271) srcxコピー元のX座標を指定します (0 ≦ srcx ≦ 1023) srcyコピー元のY座標を指定します (0 ≦ srcy ≦ 767) 戻り値なし 説明CPU転送により、仮想フレームバッファ上のビットイメージを表示画面上へコピーします。
コピー元・コピー先の矩形の座標は次の通りです。コピー元の矩形: (srcx, srcy) - (srcx + width - 1, srcy + height - 1)
コピー先の矩形: (x, y) - (x + width - 1, y + height - 1)なお、LCDCに内蔵されているフレームバッファのうち、表示用として使われていないエリアをオフスクリーンエリアとして利用することができます。ここに転送されたビットイメージは表示されませんが、LCDC_BitBlt APIにより表示画面内へ転送することができます。
これよって、フォントやキャラクタ・パターン等を高速に描画することが可能です。但し、オフスクリーンエリアの高さ(α)は、次のようにLCDC_Init() APIで指定したモードによって異なります。S1D13780(フレームバッファ384KByte)とATM0430D5の組み合わせの場合 :
・LCDC_MODE_RGB888: α=0(利用できません)
・LCDC_MODE_RGB565: α=137
書式int IMG_LoadBMP(
HIMAGEBUF hBuffer,
const char *filename);
機能仮想フレームバッファへWindowsビットマップファイル(DIB)を読み込みます 引数 hBuffer仮想フレームバッファのハンドルを指定します *filenameビットマップファイルのファイル名へのポインタを指定します 戻り値 0読み込みが成功した 1hBufferが無効なハンドル 2*filenameで指定したファイルが存在しない 3, 5, 7ファイルの読み込みに失敗した(ファイルが壊れている/ロックされている等) 4ファイルフォーマットが異常(ビットマップファイルではない等) 624ビット・ビットマップファイルではない、または仮想フレームバッファのサイズと異なる 説明読み込み可能なビットマップファイルには次の制限があります。
・ 色深度が24ビットのビットマップファイルであること
・ 幅と高さが仮想フレームバッファと同じであること
書式void IMG_Fill(
HIMAGEBUF hBuffer,
unsigned char r,
unsigned char g,
unsigned char b);
機能指定したハンドルの仮想フレームバッファを指定した色で塗りつぶします 引数 hBuffer仮想フレームバッファのハンドルを指定します r塗りつぶし色の赤成分を指定します (0 ≦ r ≦ 255) g塗りつぶし色の緑成分を指定します (0 ≦ g ≦ 255) b塗りつぶし色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、仮想フレームバッファをクリア(塗りつぶす)します。
書式void IMG_BoxFill(
HIMAGEBUF hBuffer,
short x1,
short y1,
short x2,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能塗りつぶされた矩形を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します x1矩形の左上のX座標を指定します (0 ≦ x1 ≦ 479) y1矩形の左上のY座標を指定します (0 ≦ y1 ≦ 271) x2矩形の右下のX座標を指定します (0 ≦ x2 ≦ 479) y2矩形の右下のY座標を指定します (0 ≦ y2 ≦ 271) r塗りつぶし色の赤成分を指定します (0 ≦ r ≦ 255) g塗りつぶし色の緑成分を指定します (0 ≦ g ≦ 255) b塗りつぶし色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、塗りつぶされた矩形を描画します。
書式void IMG_Rectangle(
HIMAGEBUF hBuffer,
short x1,
short y1,
short x2,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能矩形を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します x1矩形の左上のX座標を指定します (0 ≦ x1 ≦ 479) y1矩形の左上のY座標を指定します (0 ≦ y1 ≦ 271) x2矩形の右下のX座標を指定します (0 ≦ x2 ≦ 479) y2矩形の右下のY座標を指定します (0 ≦ y2 ≦ 271) r矩形の描画色の赤成分を指定します (0 ≦ r ≦ 255) g矩形の描画色の緑成分を指定します (0 ≦ g ≦ 255) b矩形の描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、矩形を描画します。
書式void IMG_BitBlt(
HIMAGEBUF hBuffer,
short x,
short y,
short width,
short height,
HIMAGEBUF hBufSrc,
short srcx,
short srcy);
機能ビットイメージをコピーします 引数 hBuffer転送先の仮想フレームバッファのハンドルを指定します xコピー先のX座標を指定します (0 ≦ x ≦ 479) yコピー先のY座標を指定します (0 ≦ y ≦ 271 + α) widthコピーするビットイメージの幅を指定します (0 ≦ width ≦ 479) heightコピーするビットイメージの高さを指定します (0 ≦ height ≦ 271) hBufSrc転送元の仮想フレームバッファのハンドルを指定します srcxコピー元のX座標を指定します (0 ≦ srcx ≦ 479) srcyコピー元のY座標を指定します (0 ≦ srcy ≦ 271 + α) 戻り値なし 説明CPU転送により、hBufSrcで指定した仮想フレームバッファのビットイメージをhBufferで指定した仮想フレームバッファへコピーします。
コピー元・コピー先の矩形の座標は次の通りです。コピー元の矩形: (srcx, srcy) - (srcx + width - 1, srcy + height - 1)
コピー先の矩形: (x, y) - (x + width - 1, y + height - 1)
書式void IMG_Line(
HIMAGEBUF hBuffer,
short x1,
short y1,
short x2,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能直線を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します x1直線の始点のX座標を指定します (0 ≦ x1 ≦ 479) y1直線の始点のY座標を指定します (0 ≦ y1 ≦ 271) x2直線の終点のX座標を指定します (0 ≦ x2 ≦ 479) y2直線の終点のY座標を指定します (0 ≦ y2 ≦ 271) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、直線を描画します。
書式void IMG_HLine(
HIMAGEBUF hBuffer,
short x1,
short y1,
short x2,
unsigned char r,
unsigned char g,
unsigned char b);
機能水平線を描画します 引数 hBufferフレームバッファのハンドルを指定します x1水平線の始点のX座標を指定します (0 ≦ x1 ≦ 479) y1水平線の始点のY座標を指定します (0 ≦ y1 ≦ 271) x2水平線の終点のX座標を指定します (0 ≦ x2 ≦ 479) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、水平線を描画します。
書式void IMG_VLine(
HIMAGEBUF hBuffer,
short x1,
short y1,
short y2,
unsigned char r,
unsigned char g,
unsigned char b);
機能垂直線を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します x1垂直線の始点のX座標を指定します (0 ≦ x1 ≦ 479) y1垂直線の始点のY座標を指定します (0 ≦ y1 ≦ 271) y2垂直線の終点のY座標を指定します (0 ≦ y2 ≦ 271) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、垂直線を描画します。
書式void IMG_Circle(
HIMAGEBUF hBuffer,
short cx,
short cy,
short rn,
unsigned char r,
unsigned char g,
unsigned char b);
機能中心点(cx, cy)、半径rnピクセルの円弧を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します cx円弧の中心点のX座標を指定します (0 ≦ cx ≦ 479) cy円弧の中心点のY座標を指定します (0 ≦ cy ≦ 271) rn円弧の半径を指定します (0 ≦ rn ≦ 479) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、円弧を描画します。
書式void IMG_CircleFill(
HIMAGEBUF hBuffer,
short cx,
short cy,
short rn,
unsigned char r,
unsigned char g,
unsigned char b);
機能中心点(cx, cy)、半径rnピクセルの塗りつぶされた円弧を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します cx円弧の中心点のX座標を指定します (0 ≦ cx ≦ 479) cy円弧の中心点のY座標を指定します (0 ≦ cy ≦ 271) rn円弧の半径を指定します (0 ≦ rn ≦ 479) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、塗りつぶされた円弧を描画します。
書式void IMG_SetPixel(
HIMAGEBUF hBuffer,
short x,
short y,
unsigned char r,
unsigned char g,
unsigned char b);
機能点を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します x点のX座標を指定します (0 ≦ x ≦ 479) y点のY座標を指定します (0 ≦ y ≦ 271) r描画色の赤成分を指定します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、点を描画します。
書式void IMG_GetPixel(
HIMAGEBUF hBuffer,
short x,
short y,
unsigned char *pr,
unsigned char *pg,
unsigned char *pb);
機能座標(x, y)の色を取得します 引数 hBuffer仮想フレームバッファのハンドルを指定します x色を取得するX座標を指定します (0 ≦ x ≦ 479) y色を取得するY座標を指定します (0 ≦ y ≦ 271) *pr取得した色の赤成分を格納します (0 ≦ r ≦ 255) *pg取得した色の緑成分を指定します (0 ≦ g ≦ 255) *pb取得した色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明*pr, *pg, *pb にはNULLポインタを指定することはできません。NULLポインタを指定した場合の動作は不定です。
書式void IMG_DrawFont(
HIMAGEBUF hBuffer,
short x1,
short y1,
short xmag,
short ymag,
unsigned char code,
unsigned char r,
unsigned char g,
unsigned char b);
機能1文字を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します x1文字枠の左上のX座標を指定します (0 ≦ x ≦ 479) y1文字枠の左上のY座標を指定します (0 ≦ y ≦ 271) xmagX座標方向の拡大率を指定します (1 ≦ xmag ≦ 8) ymagX座標方向の拡大率を指定します (1 ≦ ymag ≦ 8) code文字コードを指定します (0x20 ≦ code ≦ 0x7E) r描画色の赤成分を格納します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、文字を描画します。
文字枠のサイズは幅6ピクセル、高さ8ピクセルです。
書式void IMG_DrawString(
HIMAGEBUF hBuffer,
short x1,
short y1,
short xmag,
short ymag,
char *pstring,
unsigned char r,
unsigned char g,
unsigned char b);
機能文字列を描画します 引数 hBuffer仮想フレームバッファのハンドルを指定します x1文字枠の左上のX座標を指定します (0 ≦ x ≦ 479) y1文字枠の左上のY座標を指定します (0 ≦ y ≦ 271) xmagX座標方向の拡大率を指定します (1 ≦ xmag ≦ 8) ymagX座標方向の拡大率を指定します (1 ≦ ymag ≦ 8) *pstringヌル文字('\0')を終端に持つ文字列へのポインタを指定します (最長80文字+ヌル文字) r描画色の赤成分を格納します (0 ≦ r ≦ 255) g描画色の緑成分を指定します (0 ≦ g ≦ 255) b描画色の青成分を指定します (0 ≦ b ≦ 255) 戻り値なし 説明CPU転送により、文字列を描画します。
文字枠のサイズは1文字あたり幅6ピクセル、高さ8ピクセルです。
*pstringにNULLポインタを指定することはできません。NULLポインタを指定した場合の動作は不定です。
書式void IMG_Scroll(
HIMAGEBUF hBuffer,
short h,
short v);
機能表示画面をX座標方向へ h ピクセル、Y座標方向へ v ピクセル分スクロールします 引数 hBuffer仮想フレームバッファのハンドルを指定します hX座標方向へスクロールするピクセル数を指定します (-479 ≦ x ≦ 479) vY座標方向へスクロールするピクセル数を指定します (-271 ≦ y ≦ 271) 戻り値なし 説明CPU転送により、表示画面をスクロールします。
パラメータhは正の値を指定すると表示画面は左方向へ、負の値を指定すると右方向へスクロールします。
パラメータvは正の値を指定すると表示画面は上方向へ、負の値を指定すると下方向へスクロールします。
書式void unsigned char* IMG_GetBits(
HIMAGEBUF hBuffer,
unsigned short option);
機能フレームバッファのビットイメージへのポインタを返します 引数 hBuffer仮想フレームバッファのハンドルを指定します option現在使用されていません。0を指定してください 戻り値仮想フレームバッファへのポインタ 説明取得した仮想フレームバッファの幅、高さ、1ピクセルあたりのバイト数は次のAPIを使って取得します。
・ 幅 : IMG_GetWidth(hBuffer)
・ 高さ : IMG_GetHeight(hBuffer)
・ 1ピクセルあたりのバイト数 : IMG_GetBitsPerPixel(hBuffer)フレームバッファの1ラインあたりのバイト数は、(幅)×(1ピクセルあたりのバイト数)で求めることができます。
書式unsigned short IMG_GetBitsPerPixel(
HIMAGEBUF hBuffer
);
機能指定したフレームバッファの1ピクセルあたりのバイト数を取得します 引数 hBuffer仮想フレームバッファのハンドルを指定します 戻り値1ピクセルあたりのバイト数が戻ります。LCDC_Init()に指定したカラーフォーマットによって異なります 説明仮想フレームバッファは、LCDCのフレームバッファと同じカラーフォーマットを持ち、且つ1ピクセルあたりのバイト数も同じです。
そのため、戻り値はLCDC_Init() APIに指定したカラーフォーマットによって異なり、S1D13780とATM0430D5の組み合わせの場合の値は次のようになります。・ LCDC_MODE_RGB888: 3(バイト/ピクセル)
・ LCDC_MODE_RGB565: 2(バイト/ピクセル)なお、カラーモードと1ピクセルあたりのバイト数の関係は、厳密には常に対という訳ではありません。カラーフォーマット(表示色数)を取得したい場合にはLCDC_GetImageFormat() APIを利用し、1ピクセルあたりのバイト数を取得したい場合には本APIを利用してください。
書式unsigned short IMG_GetScreenWidth(
HIMAGEBUF hBuffer
);
機能指定した仮想フレームバッファの幅をピクセル単位で取得します 引数 hBuffer仮想フレームバッファのハンドルを指定します 戻り値仮想フレームバッファの幅(ピクセル数) 説明コードの中で仮想フレームバッファの幅を決め打ちにしたくない場合に利用することができます。
書式unsigned short IMG_GetScreenHeight(
HIMAGEBUF hBuffer
);
機能表示画面の高さをピクセル単位で取得します 引数 hBuffer仮想フレームバッファのハンドルを指定します 戻り値表示画面の高さ(ピクセル数) 説明コードの中で仮想フレームバッファの高さを決め打ちにしたくない場合に利用することができます。
2013/11/09作成