// CreateAndFill.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"

#include <time.h>

#include <rvb\rverr.h>
 

#include <rvb\imio.h>
#include <rvb\img.h>
 
 
#pragma comment(lib, "eeh_d")
 

#pragma comment(lib, "img_d")
#pragma comment(lib, "imio_d")
 

/*
内容:
	创建图像对象
相关函数:
	rvCreateImag
		说明:
			创建一个新的RV_IMAGE_TYPE类型图像对象;
		参数:
			RV_IMAGE_TYPE   -	图像格式
			width			-	宽
			height			-	高
	rviFlood
		说明:
			
		参数:
			image	-	图像对象
			level	-	值
	rvDestroyImage
		说明:
			释放图像对象;
		参数:
			image	-	图像对象
*/
HWND m_hWnd = NULL;
CCanvasWindow m_cw;	

void InitAuxWnd()
{
	HINSTANCE hInstance = InitInstance(NULL, FALSE);

	int  cx   =   GetSystemMetrics(  SM_CXFULLSCREEN ); 
	int  cy   =   GetSystemMetrics(  SM_CYFULLSCREEN );

	int w = 600;
	int h = 500;
	int  x = (cx - w)/2;
	int  y = (cy - h)/2;

	// 执行应用程序初始化: 
	m_hWnd = CreateAuxilliaryWindow(hInstance, _T("创建图像对象" ), x,y,w,h);
	assert(m_hWnd);

	RECT rect;

	::GetClientRect(m_hWnd, &rect);
	m_cw.Create(  m_hWnd, _T("FVI canvas window" ), rect.left, rect.top, rect.right -rect.left, rect.bottom- rect.top);
}

void ReleaseAuxWnd()
{
	//释放窗口对象
	m_cw.Destroy();
};



int _tmain(int argc, _TCHAR* argv[])
{
	//初始化应用窗口;
	InitAuxWnd();

	RvImage  image = NULL;

	//创建了一个灰度图像
	 image= rvCreateImage(RIT_GRAY, 600, 500);
	 
	assert( image);

	UINT sze = rviGetSize(image);
	RvByte* buff=new RvByte[sze];
	assert(buff);

	srand(time(NULL)); 
	for (UINT i=0; i<sze; ++i){
		buff[i] =rand() % 256;
	}
 
	rviFloodEx( image, buff, sze);

	delete[] buff;

	m_cw.Show( image);

  
	//消息处理
	DoEvents();

	//释放图像对象
	rvDestroyImage( image);

	//释放窗口对象
	ReleaseAuxWnd();

	return 0; 

}