/*
 * $Id: bg_object2x.h,v 1.1 2003/02/07 18:15:44 wheeler Exp $
 *
 * obj2x型定義
 *
 * $Log: bg_object2x.h,v $
 * Revision 1.1  2003/02/07 18:15:44  wheeler
 * Fox's version of libultra and friends.
 *
 * Revision 1.6  1996/11/26  10:31:10  hayakawa
 * 細かい修正
 * メンバ変更
 *
 * Revision 1.5  1996/11/21  05:54:01  hayakawa
 * メンバ関数（マクロ）の共通化
 *
 * Revision 1.4  1996/11/07  02:29:22  hayakawa
 * 型定義ヘッダファイルの変更に伴う修正
 *
 * Revision 1.3  1996/10/29  12:41:03  hayakawa
 * 環境カラー追加
 *
 * Revision 1.2  1996/10/24  01:03:29  hayakawa
 * rendmode 追加
 *
 * Revision 1.1  1996/10/20  09:01:02  hayakawa
 * Initial revision
 *
 */

#ifndef __BG_OBJECT2X_H_
#define __BG_OBJECT2X_H_

#include "bg_bitmap1x.h"
#include "zpos_t.h"		/* zpos_t */
#include "u64types.h"		/* rgba8888_u_t */
#include "bg_oam.h"

/*
 * ＯＢＪ属性の定義
 * ポリゴン専用型
 * 16(+64)Bytes
 */
typedef struct bg_object2x_s {
    u8		oam_type;
    zpos_t 	zPos;		/* 優先度(Z座標) */
    u8		attr;		/* 1bit目:非表示 */
    u8		name;		/* 0 - 255 */
    BG_Bitmap1x  *bitmap;	/* ビットマップ */
    Mtx 	 *matrix;	/* gMatrix用行列 */
    Gfx		 *gfx;		/* ディスプレイリストへのポインタ  */
    unsigned int rendmode:8;	/* 0:normal,1xlu_surf,2point */
    rgba8888_u_t primcolor;	/* プリミティブカラー */
    rgba8888_u_t envcolor;	/* 環境カラー */
} BG_Object2x;

#define obj2x_disable 			oam_disable
#define obj2x_enable 			oam_enable
#define obj2x_getGfx			oam_getGfx
#define obj2x_getName 			oam_getName
#define obj2x_getRenderMode 		oam_getRenderMode
#define obj2x_isenable 			oam_isenable
#define obj2x_setBitmap 		oam_setBitmap
#define obj2x_setEnvColor 		oam_setEnvColor
#define obj2x_setEnvColor_rgba8888 	oam_setEnvColor_rgba8888
#define obj2x_setGfx 			oam_setGfx
#define obj2x_setMatrix 		oam_setMatrix
#define obj2x_getMatrix 		oam_getMatrix
#define obj2x_setName 			oam_setName
#define obj2x_setPrimColor 		oam_setPrimColor
#define obj2x_setPrimColor_rgba8888 	oam_setPrimColor_rgba8888
#define obj2x_setRenderMode		oam_setRenderMode

#ifdef __cplusplus
extern "C" {
#endif

/*
 * オブジェを初期化する。
 */
void
obj2x_init(
    BG_Object2x	*obj1,
    BG_Bitmap1x	*bitmap,	/* ビットマップ */
    Mtx 	*matrix,	/* gMatrix用行列 */
    int name,			/*  */
    int hidden,			/* 1:非表示 */
    int zPos			/* 優先度 0 - 1023 */
);

/*
 * オブジェを表示する。
 */
void
obj2x_draw(
    BG_Object2x *obj1,
    Gfx **glistpp
);

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* __BG_OBJECT2X_H_ */
