/*
 * $Id: bg_object1a.h,v 1.1 2003/02/07 18:15:44 wheeler Exp $
 *
 * obj1a型定義
 * レクタングル専用型
 *
 * $Log: bg_object1a.h,v $
 * Revision 1.1  2003/02/07 18:15:44  wheeler
 * Fox's version of libultra and friends.
 *
 * Revision 1.5  1996/11/26  10:29:20  hayakawa
 * メンバ名変更
 *
 * Revision 1.4  1996/11/21  05:49:19  hayakawa
 * 新レンダーモードに対応
 * メンバ関数（マクロ）の共通化
 *
 * Revision 1.3  1996/10/20  08:59:17  hayakawa
 * _LANGUAGE_C_PLUS_PLUS を __cplusplus に変更
 *
 */

#ifndef __BG_OBJECT1A_H_
#define __BG_OBJECT1A_H_

#include "bg_pobjanm.h"
#include "u64types.h"
#include "u64macro.h"
#include "bg_oam.h"

/*
 * ＯＢＪ属性の定義
 */
typedef struct BG_Object1a_s {
    u8		oam_type;
    zpos_t 	zPos;		/* 優先度(Z座標) */
    u8		attr;		/* 1bit目:非表示 */
    u8		name;		/* アニメ番号 */
    BG_Bitmap1a *bitmap;	/* 部品アニメーションビットマップ */
    Gfx		*gfx;		/* 拡張ディスプレイリスト  */
    float 	xPos;		/* Ｘ座標 */
    float 	yPos;		/* Ｙ座標 */
    float 	xScale;		/* 横拡大率 */
    float 	yScale;		/* 縦拡大率 */
    signed   int zdepth:16;	/* Ｚ座標 0-0x3fff(ＺバッファＯＮの時) */
    unsigned int rendmode:8;	/* 0:normal,1xlu_surf,2point */
    rgba8888_u_t primcolor;	/* プリミティブカラー */
    rgba8888_u_t envcolor;	/* 環境カラー */
} BG_Object1a;

#define obj1a_disable 			oam_disable                   
#define obj1a_enable 			oam_enable                    
#define obj1a_getBitmap     		oam_getBitmap                 
#define obj1a_getGfx 			oam_getGfx                    
#define obj1a_getName 			oam_getName                   
#define obj1a_getPositionX   		oam_getPositionX              
#define obj1a_getPositionY   		oam_getPositionY              
#define obj1a_getRenderMode 		oam_getRenderMode             
#define obj1a_getZdepth   		oam_getZdepth                 
#define obj1a_hFlip 			oam_hFlip                     
#define obj1a_isenable 			oam_isenable                  
#define obj1a_moveXY 			oam_moveXY                    
#define obj1a_moveXYZ 			oam_moveXYZ                   
#define obj1a_setBitmap 		oam_setBitmap                 
#define obj1a_setEnvColor 		oam_setEnvColor               
#define obj1a_setEnvColor_rgba8888 	oam_setEnvColor_rgba8888      
#define obj1a_setGfx			oam_setGfx                    
#define obj1a_setName 			oam_setName                   
#define obj1a_setPosition 		oam_setPosition               
#define obj1a_setPosition3		oam_setPosition3              
#define obj1a_setPositionX 		oam_setPositionX              
#define obj1a_setPositionY 		oam_setPositionY              
#define obj1a_setPrimColor 		oam_setPrimColor              
#define obj1a_setPrimColor_rgba8888 	oam_setPrimColor_rgba8888     
#define obj1a_setRenderMode 		oam_setRenderMode             
#define obj1a_setScale 			oam_setScale                  
#define obj1a_setZpos 			oam_setZpos                   
#define obj1a_vFlip 			oam_vFlip                     

#ifdef __cplusplus
extern "C" {
#endif

/*
 * オブジェを初期化する。
 */
void
obj1a_init(
    BG_Object1a *obj1,
    BG_Bitmap1a	*const bm1,	/* ビットマップ */
    int zPos			/* 優先度 0 - 1023 */
);

/*
 * テクスチャレクトアングルによるオブジェ表示
 */
void
obj1a_draw(
    BG_Object1a *obj1,
    Gfx **glistpp		/* ディスプレイリストへのポインタのポインタ */
);

#ifdef __cplusplus
} /* extern "C" */
#endif

#endif /* __BG_OBJECT1A_H_ */
