/*++

  COPYRIGHT        (C) NEC        Corporation 1997

  All rights reserved by NEC Corporation. This program must be
  used solely for the purpose for which it was furnished by NEC
  Corporation. No part of this program may be reproduced or
  disclosed to others, in any form, without the prior written
  permission of NEC Corporation.
  Use of copyright notice does not evidence publication of this
  program.

  Author	:  		T.Muto(NEC Software Ltd.,)
  Module Name:		kmutil.h

  Abstract:
	KAMUI = Kamui is abstruction model that is ultimate interface for PowerVR.
	'kmutil.h' utilities functions for KAMUI.

  Environment:
	Microsoft Compiler.

  Notes:

  Revision History:

--*/

#if !defined(__kamui_utility_h)
#define __kamui_utility_h

#ifdef __cplusplus
extern "C" {
#endif 

#include "kamui.h"

/*++
kmuCreateTwiddledTexture

proto type:

	KMSTATUS
	kmuCreateTwiddledTexture(
			PKMDWORD		pOutputTexture,
			PKMDWORD		pInputTexture,
			KMBOOLEAN		bAutoMipMap,
			KMBOOLEAN		bDither,
			KMINT32			USize,
			KMTEXTURETYPE	nTextureType
		);

Description:
	メインメモリ上のKM_TEXTURE_BMP形式(ABGR8888)のテクスチャを、
	Twiddled / Twiddled Mipmap 形式のテクスチャに変換します。
	bAutoMipMapにTRUEを指定した場合は、ミップマップの自動生成を行います。
	bDitherにTRUEを指定した場合は、ディザを行います。
	注意：ミップマップ、ディザの指定を行ったときは
			入力テクスチャデータの内容は破壊されます。

Arguments:
	OUT	pOutputTexture	変換後のテクスチャデータを書き込むメインメモリ上のアドレスです。
	IN	pInputTexture	KM_TEXTURE_BMP形式の入力テクスチャを示すポインタです。
	IN	bAutoMipMap		自動的にMIPMAPを生成するかどうかを指定します。
						TRUEが指定された場合には自動的にMIPMAPを生成します。
						(出力はKM_TEXTURE_TWIDDLED_MM形式になります)
						FALSEが指定された場合にはMIPMAP生成は行いません。
						(出力はKM_TEXTURE_TWIDDLED形式になります)
	IN	bDither			ディザをかけるかどうかを指定します。
						TRUEが指定された場合はディザをかけます。
	IN	USize			テクスチャの一辺のテクセル数を指定します。
						下記の中のいずれかを指定します。
						KM_MAPSIZE_8
						KM_MAPSIZE_16
						KM_MAPSIZE_32
						KM_MAPSIZE_64
						KM_MAPSIZE_128
						KM_MAPSIZE_256
						KM_MAPSIZE_512
						KM_MAPSIZE_1024
	IN	nTextureType	変換後のテクスチャのピクセルフォーマットを指定します。
						下記の中のいずれかを指定します。
						KM_PIXELFORMAT_ARGB1555
						KM_PIXELFORMAT_RGB565
						KM_PIXELFORMAT_ARGB4444

Result:
	KMSTATUS_SUCCESS					読み込み成功
	KMSTATUS_INVALID_TEXTURE_TYPE		無効なテクスチャタイプ、サイズを指定した

--*/

KMSTATUS KMAPI
kmuCreateTwiddledTexture(
	PKMDWORD		pOutputTexture,
	PKMDWORD		pInputTexture,
	KMBOOLEAN		bAutoMipMap,
	KMBOOLEAN		bDither,
	KMINT32			USize,
	KMTEXTURETYPE	nTextureType
	);


/*++
kmuConvertFBtoBMP

proto type:

	KMSTATUS
	kmuConvertFBtoBMP(
			PKMDWORD		pOutputData,
			PKMDWORD		pInputData,
			KMINT32			nWidth,
			KMINT32			nHeight,
			KMBPPMODE		nBpp
		);

Description:
	kmGetTextureでメインメモリ上に読み出したフレームバッファの内容を、
	Windows フルカラーBMP形式のピクセルデータとして、メモリ上に書き出します。
	なお、この出力にはWindows BMPのヘッダ54バイトは生成されません。

Arguments:
	OUT	pOutputData		変換後のピクセルデータを書き込むメインメモリ上のアドレスです。
	IN	pInputData		フレームバッファの内容を示すポインタです。
						kmGetTextureで、フレームバッファサーフェスへのディスクリプタを
						指定して読み出したフレームバッファのピクセルデータを指していなければ
						いけません。KAMUIテクスチャデータは指定不可能です。
	IN	nWidth,nHeight	読み出したフレームバッファのサイズを指定します。
	IN	nBpp			読み出したフレームバッファのピクセルフォーマットを指定します。
						下記の中のいずれかを指定します。
							KM_DSPBPP_RGB565
							KM_DSPBPP_RGB555
							KM_DSPBPP_ARGB4444
							KM_DSPBPP_ARGB1555

Result:
	KMSTATUS_SUCCESS					読み込み成功

--*/

KMSTATUS KMAPI
kmuConvertFBtoBMP(
		PKMDWORD		pOutputData,
		PKMDWORD		pInputData,
		KMINT32			nWidth,
		KMINT32			nHeight,
		KMBPPMODE		nBpp
		);


#ifdef __cplusplus
}
#endif 

#endif
