〜Raspberry Piを使った電子工作〜

グラフィックスライブラリ APIリファレンス


概要

 このグラフィックスライブラリが提供している機能は、大きく分けて次の2つがあります。

 直接描画用APIは、液晶パネルへ描画を行うためのAPI関数で、LCDコントローラのハードウェア支援機能を利用し、高速な図形描画を行うことができます。APIの名前はLCDC_xxxxで始まります。

 仮想フレームバッファ描画APIは、メインメモリ内に仮想フレームバッファを作成し、この仮想フレームバッファへの図形描画を行い、またLCDCコントローラへイメージを転送するためのAPI関数群です。APIの名前はIMG_xxxxで始まります。

 それぞれのAPIの共通の機能として、基本図形の描画、フォントの描画、ビットイメージの転送があります。


1)直接描画API リファレンス

APIの構成モジュール:
lcdc.h
gentype.h
spi.h
spi.c
lcdc_atm0430d5.c
font_5x8h.c

書式
void LCDC_Init(unsigned char mode);
機能
LCDコントローラを初期化します
引数
mode
LCDC_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)
xmag
X座標方向の拡大率を指定します (1 ≦ xmag ≦ 8)
ymag
X座標方向の拡大率を指定します (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)
xmag
X座標方向の拡大率を指定します (1 ≦ xmag ≦ 8)
ymag
X座標方向の拡大率を指定します (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 ピクセル分スクロールします
引数
h
X座標方向へスクロールするピクセル数を指定します (-479 ≦ x ≦ 479)
v
Y座標方向へスクロールするピクセル数を指定します (-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(ピクセル)が戻ります。
コードの中で表示画面の高さを決め打ちにしたくない場合に利用することができます。


2)仮想フレームバッファ描画用API リファレンス

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
読み込みが成功した
1
hBufferが無効なハンドル
2
*filenameで指定したファイルが存在しない
3, 5, 7
ファイルの読み込みに失敗した(ファイルが壊れている/ロックされている等)
4
ファイルフォーマットが異常(ビットマップファイルではない等)
6
24ビット・ビットマップファイルではない、または仮想フレームバッファのサイズと異なる
説明

読み込み可能なビットマップファイルには次の制限があります。

・ 色深度が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)
xmag
X座標方向の拡大率を指定します (1 ≦ xmag ≦ 8)
ymag
X座標方向の拡大率を指定します (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)
xmag
X座標方向の拡大率を指定します (1 ≦ xmag ≦ 8)
ymag
X座標方向の拡大率を指定します (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
仮想フレームバッファのハンドルを指定します
h
X座標方向へスクロールするピクセル数を指定します (-479 ≦ x ≦ 479)
v
Y座標方向へスクロールするピクセル数を指定します (-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
仮想フレームバッファのハンドルを指定します
戻り値
表示画面の高さ(ピクセル数)
説明

コードの中で仮想フレームバッファの高さを決め打ちにしたくない場合に利用することができます。


YokoMuMu's Contentsに戻る

2013/11/09作成