#include <sys/process.h>
#include <resource.h>

#define KSWWRES_MAXRES 16

extern res_t far	*g_lpRes[KSWWRES_MAXRES];
extern int			g_nRes;

void	ResFindResource();					/* リソースを検索 */

/* 一般 */
#define ResGetNum()		(g_nRes)			/* リソースの数を取得 */
#define ResGetType(x)	(g_lpRes[x]->type)	/* リソースのタイプを取得 */
#define ResGetSize(x)	(g_lpRes[x]->size)	/* リソースのサイズを取得 */
#define ResGetId(x)		(g_lpRes[x]->id)	/* リソースの ID番号を取得 */
#define ResGetRes(x)	(g_lpRes[x])		/* リソースのアドレスを取得 */

/* タイプ取得 */
#define ResIsImage(x)	(ResGetType(x) == RESID_IMAGE)	/* イメージリソースか */
#define ResIsMusic(x)	(ResGetType(x) == RESID_MUSIC)	/* BGMリソースか */
#define ResIsSe(x)		(ResGetType(x) == RESID_SE)		/* 効果音リソースか */
#define ResIsInst(x)	(ResGetType(x) == RESID_INST)	/* 音源リソースか */
#define ResIsVoice(x)	(ResGetType(x) == RESID_VOICE)	/* PCMボイスリソースか */

/* イメージ用 */
#define ResGetImgWidth(x)	(((res_image_t far *)g_lpRes[x])->width)				/* 幅を取得 */
#define ResGetImgHeight(x)	(((res_image_t far *)g_lpRes[x])->height)				/* 高さを取得 */
#define ResIsMono(x)		(((res_image_t far *)g_lpRes[x])->format == IMAGE_MONO)		/* モノクロか */
#define ResIsColor(x)		(((res_image_t far *)g_lpRes[x])->format == IMAGE_COLOR)	/* 4色グレースケールか */
#define ResIsColorTrans(x)	(((res_image_t far *)g_lpRes[x])->format == IMAGE_COLORMASK)	/* 3色グレースケール+透明色か */
#define ResIs16Color(x)		(((res_image_t far *)g_lpRes[x])->format & IMAGE_16COLOR)	/* 16色カラーか */
#define ResIs16Plain(x)			(ResIs16Color(x) \
								&& !(((res_image_t far *)g_lpRes[x])->format & IMAGE_16PACKED))	/* プレーン形式か */
#define ResIs16Packed(x)		(ResIs16Color(x) \
								&& (((res_image_t far *)g_lpRes[x])->format & IMAGE_16PACKED))	/* パックト形式か */
#define ResIs16ColorTrans(x)	(ResIs16Color(x) \
								&& (((res_image_t far *)g_lpRes[x])->format & IMAGE_16TRANS))	/* 15色カラー+透明色か */
#define ResGetColorPalette(x)	(((res_image_t far *)g_lpRes[x])->clrtable)				/* 4色グレースケールのパレットを取得 */
#define ResGet16ColorPalette(x)	((WORD far *)(((res_image_t far *)g_lpRes[x]) + 1))		/* 16色カラーのパレットを取得 */
#define ResGetImgBits(x)		((BYTE far *)((res_image_t far *)g_lpRes[x] + 1) \
								+ (ResIs16Color(x) ? sizeof(WORD) * 16 : 0))			/* ビットマップ本体を取得 */
