GadgetSeed  0.9.6
graphics.c ファイル

グラフィックス描画 [詳解]

#include "graphics.h"
#include "device.h"
#include "device/video_ioctl.h"
#include "tkprintf.h"
#include "tprintf.h"
#include "dtprintf.h"
#include <limits.h>
graphics.c の依存先関係図:

[ソースコード]

マクロ定義

#define LEFT   1
 
#define RIGHT   2
 
#define TOP   4
 
#define BOTTOM   8
 
#define TOP_MAX   SHRT_MAX
 
#define LEFT_MAX   SHRT_MAX
 
#define RIGHT_MIN   SHRT_MIN
 
#define BOTTOM_MIN   SHRT_MIN
 

関数

int register_graphics_dev (struct st_device *dev)
 グラフィックライブラリにデバイスを登録する [詳解]
 
int set_display_frame (int fnum)
 表示するフレームバッファ番号を設定する [詳解]
 
int get_display_frame (void)
 表示しているフレームバッファ番号を取得する [詳解]
 
int get_frame_num (void)
 フレームバッファ数を取得する [詳解]
 
int set_draw_frame (int fnum)
 描画するフレームバッファ番号を設定する [詳解]
 
int get_draw_frame (void)
 描画するフレームバッファ番号を取得する [詳解]
 
void clear_clip_rect (void)
 クリッピングエリアを無効にする
 
void set_clip_rect (struct st_rect *rect)
 クリッピングエリアを矩形で指定する [詳解]
 
void set_clip_box (struct st_box *box)
 クリッピングエリアを四角形で指定する [詳解]
 
void get_clip_rect (struct st_rect *rect)
 クリッピングエリアを矩形で取得する [詳解]
 
int init_graphics (char *devname)
 グラフィックスライブラリを初期化する [詳解]
 
void get_screen_info (short *width, short *height)
 スクリーンのサイズ情報を取得する [詳解]
 
void clear_screen (void)
 画面を全て0で描画する
 
static void prepare_color (void)
 
void set_forecolor (unsigned int color)
 描画の色を設定する [詳解]
 
unsigned int get_forecolor (void)
 描画の色を取得する [詳解]
 
void set_backcolor (unsigned int color)
 描画の背景色を設定する [詳解]
 
unsigned int get_backcolor (void)
 描画の背景色を取得する [詳解]
 
void set_draw_mode (unsigned char mode)
 描画モードを設定する [詳解]
 
unsigned char get_draw_mode (void)
 描画モードを取得する [詳解]
 
static void _draw_point (short x, short y)
 
void draw_point (short x, short y)
 点を描画する [詳解]
 
static void _draw_h_line (short x, short y, short xe)
 
void draw_h_line (short x, short y, short width)
 水平線を描画する [詳解]
 
static void _draw_v_line (short x, short y, short ye)
 
void draw_v_line (short x, short y, short height)
 垂直線を描画する [詳解]
 
static short calc_seq_code (short x, short y)
 
static short calc_clipped_point (short code, short x0, short y0, short x1, short y1, short *x, short *y)
 
static short clipping (short *x0, short *y0, short *x1, short *y1)
 
static void line (short x0, short y0, short x1, short y1)
 
void draw_line (short x, short y, short xe, short ye)
 直線を描画する [詳解]
 
void draw_rect (struct st_rect *rect)
 矩形を描画する [詳解]
 
void draw_round_rect (struct st_rect *rect, short r)
 角の丸い矩形を描画する [詳解]
 
static void _draw_fill_rect (struct st_rect *rect)
 
void draw_fill_rect (struct st_rect *rect)
 塗りつぶした矩形を描画する [詳解]
 
void draw_round_fill_rect (struct st_rect *rect, short r)
 角の丸い塗りつぶした矩形を描画する [詳解]
 
static void draw_bits (short x, short y, short width, short height, short offset, unsigned char *data, short dw)
 
static void draw_enlarged_bits (short x, short y, short width, short height, short offset, unsigned char *data, short dw, int rate, short dox, short doy)
 
void draw_bitdata (short px, short py, short width, short height, unsigned char *data, short dw)
 ビットデータを描画する [詳解]
 
void draw_enlarged_bitdata (short px, short py, short width, short height, unsigned char *data, short dw, int rate)
 拡大したビットデータを描画する [詳解]
 
void draw_bitmap (short px, short py, struct st_bitmap *bitmap)
 ビットマップデータを描画する [詳解]
 
void draw_enlarged_bitmap (short px, short py, struct st_bitmap *bitmap, int rate)
 拡大したビットマップデータを描画する [詳解]
 
void draw_circle (short x0, short y0, short r)
 円を描画する [詳解]
 
void draw_quarter_circle (short x0, short y0, short r, char q)
 1/4の円を描画する [詳解]
 
void draw_fill_circle (short x0, short y0, short r)
 塗りつぶした円を描画する [詳解]
 
void draw_ellipse (short xc, short yc, short rx, short ry)
 楕円を描画する [詳解]
 
void draw_fill_ellipse (short xc, short yc, short rx, short ry)
 塗りつぶした楕円を描画する [詳解]
 
void draw_box (struct st_box *box)
 四角を描画する [詳解]
 
void draw_round_box (struct st_box *box, short r)
 角の丸い四角を描画する [詳解]
 
void draw_round_fill_box (struct st_box *box, short r)
 塗りつぶした角の丸い四角を描画する [詳解]
 
void draw_fill_box (struct st_box *box)
 塗りつぶした四角を描画する [詳解]
 
static void set_region_pos (short x0, short y0, short x1, short y1, int lr)
 
void draw_vertex4_region (short x0, short y0, short x1, short y1, short x2, short y2, short x3, short y3)
 塗りつぶした4頂点の領域を描画する [詳解]
 
static void set_arc (short x, short y, short r, char q, unsigned char lr)
 
void draw_sector (short x, short y, short er, short ir, char q)
 扇形を描画する [詳解]
 
static void _draw_data (short x, short y, short width, short height, short offset, void *data, short dw)
 
void draw_image (short px, short py, short width, short height, void *image, short dw)
 イメージデータを描画する [詳解]
 
void scroll_rect_v (struct st_rect *rect, short pixel)
 矩形範囲を縦方向にスクロールする [詳解]
 

変数

static struct st_devicefb_dev
 
static short gdev_type
 
static short screen_width
 
static short screen_height
 
static unsigned short color_depth
 
static unsigned int screen_mem_size
 
static unsigned short frame_num
 
static unsigned int fore_color
 
static unsigned int back_color
 
static unsigned char pen_mode
 
static struct st_rect i_clip_rect
 
static struct st_rect clip_rect
 
static short region_pos [2][GSC_GRAPHICS_DISPLAY_HEIGHT]
 
static unsigned int graph_copy_buf [GSC_GRAPHICS_DISPLAY_WIDTH]
 

詳解

グラフィックス描画

日付
2015.08.15
2013.06.20
2007.03.20
著者
Takashi SHUDO

graphics.c に定義があります。

関数詳解

◆ draw_bitdata()

void draw_bitdata ( short  px,
short  py,
short  width,
short  height,
unsigned char *  data,
short  dw 
)

ビットデータを描画する

引数
[in]px描画開始X座標
[in]py描画開始Y座標
[in]width描画幅
[in]height描画高さ
[in]dataビットデータポインタ
[in]dwビットデータ幅

graphics.c1041 行目に定義があります。

参照先 and_rect(), st_rect::bottom, st_rect::left, st_rect::right, st_rect::top.

参照元 draw_bitmap().

呼び出し関係図:
被呼び出し関係図:

◆ draw_bitmap()

void draw_bitmap ( short  px,
short  py,
struct st_bitmap bitmap 
)

ビットマップデータを描画する

引数
[in]px描画X座標
[in]py描画Y座標
[in]bitmapビットマップデータ

graphics.c1146 行目に定義があります。

参照先 st_bitmap::data, draw_bitdata(), st_bitmap::height, st_bitmap::width.

呼び出し関係図:

◆ draw_box()

void draw_box ( struct st_box box)

四角を描画する

引数
[in]box四角

graphics.c1391 行目に定義があります。

参照先 box2rect(), draw_rect().

呼び出し関係図:

◆ draw_circle()

void draw_circle ( short  x0,
short  y0,
short  r 
)

円を描画する

引数
[in]x0円の中心X座標
[in]y0円の中心Y座標
[in]r円の半径

graphics.c1173 行目に定義があります。

参照先 draw_point().

呼び出し関係図:

◆ draw_ellipse()

void draw_ellipse ( short  xc,
short  yc,
short  rx,
short  ry 
)

楕円を描画する

引数
[in]xc楕円の中心X座標
[in]yc楕円の中心Y座標
[in]rx縦の半径
[in]ry横の半径

graphics.c1283 行目に定義があります。

参照先 draw_point().

呼び出し関係図:

◆ draw_enlarged_bitdata()

void draw_enlarged_bitdata ( short  px,
short  py,
short  width,
short  height,
unsigned char *  data,
short  dw,
int  rate 
)

拡大したビットデータを描画する

引数
[in]px描画開始X座標
[in]py描画開始Y座標
[in]width描画幅
[in]height描画高さ
[in]dataビットデータポインタ
[in]dwビットデータ幅
[in]rate拡大率

graphics.c1086 行目に定義があります。

参照先 and_rect(), st_rect::bottom, st_rect::left, st_rect::right, st_rect::top.

参照元 draw_enlarged_bitmap().

呼び出し関係図:
被呼び出し関係図:

◆ draw_enlarged_bitmap()

void draw_enlarged_bitmap ( short  px,
short  py,
struct st_bitmap bitmap,
int  rate 
)

拡大したビットマップデータを描画する

引数
[in]px描画X座標
[in]py描画Y座標
[in]bitmapビットマップデータ
[in]rate拡大率

graphics.c1160 行目に定義があります。

参照先 st_bitmap::data, draw_enlarged_bitdata(), st_bitmap::height, st_bitmap::width.

呼び出し関係図:

◆ draw_fill_box()

void draw_fill_box ( struct st_box box)

塗りつぶした四角を描画する

引数
[in]box四角

graphics.c1435 行目に定義があります。

参照先 box2rect(), draw_fill_rect().

呼び出し関係図:

◆ draw_fill_circle()

void draw_fill_circle ( short  x0,
short  y0,
short  r 
)

塗りつぶした円を描画する

引数
[in]x0円の中心X座標
[in]y0円の中心Y座標
[in]r円の半径

graphics.c1253 行目に定義があります。

参照先 draw_h_line().

呼び出し関係図:

◆ draw_fill_ellipse()

void draw_fill_ellipse ( short  xc,
short  yc,
short  rx,
short  ry 
)

塗りつぶした楕円を描画する

引数
[in]xc楕円の中心X座標
[in]yc楕円の中心Y座標
[in]rx縦の半径
[in]ry横の半径

graphics.c1335 行目に定義があります。

参照先 draw_h_line(), IOCMD_VIDEO_SCROLL, ioctl_device().

呼び出し関係図:

◆ draw_fill_rect()

void draw_fill_rect ( struct st_rect rect)

塗りつぶした矩形を描画する

引数
[in]rect矩形

graphics.c821 行目に定義があります。

参照先 and_rect().

参照元 draw_fill_box().

呼び出し関係図:
被呼び出し関係図:

◆ draw_h_line()

void draw_h_line ( short  x,
short  y,
short  width 
)

水平線を描画する

引数
[in]x水平線のX座標
[in]y水平線上のY座標
[in]width水平線の長さ

graphics.c477 行目に定義があります。

参照元 draw_fill_circle(), draw_fill_ellipse(), draw_round_fill_rect().

被呼び出し関係図:

◆ draw_image()

void draw_image ( short  px,
short  py,
short  width,
short  height,
void *  image,
short  dw 
)

イメージデータを描画する

引数
[in]px描画X座標
[in]py描画Y座標
[in]width描画幅
[in]height描画高さ
[in]imageイメージデータポインタ
[in]dwイメージデータ幅

graphics.c1840 行目に定義があります。

参照先 and_rect(), st_rect::bottom, st_rect::left, st_rect::right, st_rect::top.

呼び出し関係図:

◆ draw_line()

void draw_line ( short  x,
short  y,
short  xe,
short  ye 
)

直線を描画する

引数
[in]x直線描画開始X座標
[in]y直線描画開始Y座標
[in]xe直線描画終了X座標
[in]ye直線描画終了Y座標

graphics.c664 行目に定義があります。

◆ draw_point()

void draw_point ( short  x,
short  y 
)

点を描画する

引数
[in]x点のX座標
[in]y点のY座標

graphics.c447 行目に定義があります。

参照元 draw_circle(), draw_ellipse(), draw_quarter_circle().

被呼び出し関係図:

◆ draw_quarter_circle()

void draw_quarter_circle ( short  x0,
short  y0,
short  r,
char  q 
)

1/4の円を描画する

引数
[in]x0円の中心X座標
[in]y0円の中心Y座標
[in]r円の半径
[in]q象限(0:第1象限 〜 3:4象限)

graphics.c1207 行目に定義があります。

参照先 draw_point().

参照元 draw_round_rect().

呼び出し関係図:
被呼び出し関係図:

◆ draw_rect()

void draw_rect ( struct st_rect rect)

矩形を描画する

引数
[in]rect矩形

graphics.c694 行目に定義があります。

参照先 and_rect().

参照元 draw_box().

呼び出し関係図:
被呼び出し関係図:

◆ draw_round_box()

void draw_round_box ( struct st_box box,
short  r 
)

角の丸い四角を描画する

引数
[in]box四角
[in]r角丸の半径

graphics.c1406 行目に定義があります。

参照先 box2rect(), draw_round_rect().

呼び出し関係図:

◆ draw_round_fill_box()

void draw_round_fill_box ( struct st_box box,
short  r 
)

塗りつぶした角の丸い四角を描画する

引数
[in]box四角
[in]r角丸の半径

graphics.c1421 行目に定義があります。

参照先 box2rect(), draw_round_fill_rect().

呼び出し関係図:

◆ draw_round_fill_rect()

void draw_round_fill_rect ( struct st_rect rect,
short  r 
)

角の丸い塗りつぶした矩形を描画する

引数
[in]rect矩形
[in]r角丸の半径

graphics.c838 行目に定義があります。

参照先 and_rect(), st_rect::bottom, draw_h_line(), st_rect::left, st_rect::right, st_rect::top.

参照元 draw_round_fill_box().

呼び出し関係図:
被呼び出し関係図:

◆ draw_round_rect()

void draw_round_rect ( struct st_rect rect,
short  r 
)

角の丸い矩形を描画する

引数
[in]rect矩形
[in]r角丸の半径

graphics.c748 行目に定義があります。

参照先 st_rect::bottom, draw_quarter_circle(), st_rect::left, st_rect::right, st_rect::top.

参照元 draw_round_box().

呼び出し関係図:
被呼び出し関係図:

◆ draw_sector()

void draw_sector ( short  x,
short  y,
short  er,
short  ir,
char  q 
)

扇形を描画する

引数
[in]x中心のX座標
[in]y中心のY座標
[in]er外径
[in]ir内径
[in]q象限(0:第1象限 〜 3:4象限)

graphics.c1732 行目に定義があります。

◆ draw_v_line()

void draw_v_line ( short  x,
short  y,
short  height 
)

垂直線を描画する

引数
[in]x垂直線左のX座標
[in]y垂直線のY座標
[in]height垂直線の長さ

graphics.c511 行目に定義があります。

◆ draw_vertex4_region()

void draw_vertex4_region ( short  x0,
short  y0,
short  x1,
short  y1,
short  x2,
short  y2,
short  x3,
short  y3 
)

塗りつぶした4頂点の領域を描画する

引数
[in]x0頂点0のX座標
[in]y0頂点0のY座標
[in]x1頂点1のX座標
[in]y1頂点1のY座標
[in]x2頂点2のX座標
[in]y2頂点2のY座標
[in]x3頂点3のX座標
[in]y3頂点3のY座標

graphics.c1510 行目に定義があります。

◆ get_backcolor()

unsigned int get_backcolor ( void  )

描画の背景色を取得する

戻り値
背景色

graphics.c404 行目に定義があります。

◆ get_clip_rect()

void get_clip_rect ( struct st_rect rect)

クリッピングエリアを矩形で取得する

引数
[out]rect取得したクリッピングエリア矩形

graphics.c293 行目に定義があります。

◆ get_display_frame()

int get_display_frame ( void  )

表示しているフレームバッファ番号を取得する

戻り値
表示しているフレームバッファ番号

graphics.c214 行目に定義があります。

参照先 IOCMD_VIDEO_GETDISPFRAME, ioctl_device().

呼び出し関係図:

◆ get_draw_frame()

int get_draw_frame ( void  )

描画するフレームバッファ番号を取得する

戻り値
描画するフレームバッファ番号

graphics.c246 行目に定義があります。

参照先 IOCMD_VIDEO_GETDRAWFRAME, ioctl_device().

呼び出し関係図:

◆ get_draw_mode()

unsigned char get_draw_mode ( void  )

描画モードを取得する

戻り値
描画モード

graphics.c426 行目に定義があります。

◆ get_forecolor()

unsigned int get_forecolor ( void  )

描画の色を取得する

戻り値
描画の色

graphics.c382 行目に定義があります。

◆ get_frame_num()

int get_frame_num ( void  )

フレームバッファ数を取得する

戻り値
フレームバッファ数

graphics.c224 行目に定義があります。

◆ get_screen_info()

void get_screen_info ( short *  width,
short *  height 
)

スクリーンのサイズ情報を取得する

引数
[out]widthスクリーン幅ピクセル数
[out]heightスクリーン高さピクセル数

graphics.c329 行目に定義があります。

◆ init_graphics()

int init_graphics ( char *  devname)

グラフィックスライブラリを初期化する

引数
[in]devnameグラフィックスデバイス名
戻り値
!=0:エラー

graphics.c305 行目に定義があります。

参照先 open_device().

呼び出し関係図:

◆ register_graphics_dev()

int register_graphics_dev ( struct st_device dev)

グラフィックライブラリにデバイスを登録する

引数
[in]devグラフィックデバイス
戻り値
!=0:エラー

graphics.c148 行目に定義があります。

参照先 st_device::info.

◆ scroll_rect_v()

void scroll_rect_v ( struct st_rect rect,
short  pixel 
)

矩形範囲を縦方向にスクロールする

引数
[in]rectスクロール範囲矩形
[in]pixelスクロールドット数

graphics.c1882 行目に定義があります。

参照先 st_rect::bottom, st_rect::left, st_rect::right, st_rect::top.

◆ set_backcolor()

void set_backcolor ( unsigned int  color)

描画の背景色を設定する

引数
color背景色

graphics.c392 行目に定義があります。

参照元 draw_graph_object().

被呼び出し関係図:

◆ set_clip_box()

void set_clip_box ( struct st_box box)

クリッピングエリアを四角形で指定する

引数
[in]boxクリッピングエリア四角形

graphics.c279 行目に定義があります。

参照先 box2rect(), set_clip_rect().

呼び出し関係図:

◆ set_clip_rect()

void set_clip_rect ( struct st_rect rect)

クリッピングエリアを矩形で指定する

引数
[in]rectクリッピングエリア矩形

graphics.c264 行目に定義があります。

参照元 set_clip_box().

被呼び出し関係図:

◆ set_display_frame()

int set_display_frame ( int  fnum)

表示するフレームバッファ番号を設定する

引数
[in]fnum表示するフレームバッファ番号
戻り値
!=0:エラー

graphics.c204 行目に定義があります。

参照先 IOCMD_VIDEO_SETDISPFRAME, ioctl_device().

呼び出し関係図:

◆ set_draw_frame()

int set_draw_frame ( int  fnum)

描画するフレームバッファ番号を設定する

引数
[in]fnum描画するフレームバッファ番号
戻り値
!=0:エラー

graphics.c236 行目に定義があります。

参照先 IOCMD_VIDEO_SETDRAWFRAME, ioctl_device().

呼び出し関係図:

◆ set_draw_mode()

void set_draw_mode ( unsigned char  mode)

描画モードを設定する

引数
[in]mode描画モード

graphics.c414 行目に定義があります。

参照元 draw_graph_object().

被呼び出し関係図:

◆ set_forecolor()

void set_forecolor ( unsigned int  color)

描画の色を設定する

引数
[in]color描画の色

graphics.c370 行目に定義があります。

参照元 draw_graph_object().

被呼び出し関係図: