#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include "art.h"
#include "imagewin.h"
#include "desktop.h"
#include "imgwin.h"
#include "guisub.h"
#include "alert.h"

int	idCreateImageDlg = -1 ;
int	idCreateImageOkDBtn = -1 ;
int	idCreateImageCancelDBtn = -1 ;
int	idCreateImageXSizeNBox = -1 ;
int	idCreateImageYSizeNBox = -1 ;
int	idCreateImageSetSizeDBtn[5] = -1 ;
int	idCreateImagePixelTIcon[2] = -1 ;

static int create_exec;
static int nPixelType = 0;

/*--------------------------------------------------------*/
/*                 部品からの呼び出し関数                 */
/*--------------------------------------------------------*/

int	dsk_fileDBTNcreate(int kobj)
// idCreateImageOkDBtn:MJ_DBUTTONL40の呼び出し関数
// idCreateImageCancelDBtn:MJ_DBUTTONL40の呼び出し関数
{
	if (kobj == idCreateImageOkDBtn)
		create_exec = 1;
	else
		create_exec = 0;
	MMI_SetHaltFlag(TRUE);
	return NOERR ;
}

int	dsk_fileNUMBOXcreateFunc(kobj, messId, argc, pev, trigger)
// idCreateImageXSizeNBox:MJ_NUMBOXL40の呼び出し関数
// idCreateImageYSizeNBox:MJ_NUMBOXL40の呼び出し関数
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	return NOERR ;
}

int	CreateImageSetSizeDBtnProc(int kobj)
// idCreateImageSetSizeDBtn[0..4]:MJ_DBUTTONL40の呼び出し関数
{
	static POINT defsize[5] =
		{{320,240},{512,480},{640,480},{1024,768},{1280,1024}};
	int i;
	for (i=0; i<INTNUM(idCreateImageSetSizeDBtn); i++)
		if (idCreateImageSetSizeDBtn[i] == kobj)
			goto FOUND;
	return NOERR;
FOUND:
	if (i < 5)
	{
		RM_setNumBoxValue(idCreateImageXSizeNBox, defsize[i].x, TRUE);
		RM_setNumBoxValue(idCreateImageYSizeNBox, defsize[i].y, TRUE);
	}
	return NOERR ;
}

int	CreateImagePixelTIconProc(int kobj)
// idCreateImagePixelTIcon[1]:MJ_TICONL40の呼び出し関数
// idCreateImagePixelTIcon[0]:MJ_TICONL40の呼び出し関数
{
	RM_pushRadioButton(kobj, idCreateImageDlg, idCreateImagePixelTIcon,
					   INTNUM(idCreateImagePixelTIcon), &nPixelType);
	return NOERR ;
}

/*--------------------------------------------------------*/
/*                     画像の新規作成                     */
/*--------------------------------------------------------*/

int desktop_createNewPicture(void)
{
	if (scrPixelSize == 16)
		nPixelType = 1;
	else
		nPixelType = 0;
	RM_initRadioButton(idCreateImagePixelTIcon,INTNUM(idCreateImagePixelTIcon),
					   &nPixelType);
	EXECDIALOG(idCreateImageDlg);
	if (create_exec)
	{
		int wid,ht;
	  // 作成する画像のサイズを得る
		wid = _max(1,RM_getNumBoxValue(idCreateImageXSizeNBox));
		ht = _max(1,RM_getNumBoxValue(idCreateImageYSizeNBox));
	  // 画像ウィンドウを作成
		IMWIN *win;
		win = imagewin_new((nPixelType==0 ? 24:16), wid, ht);
		if (win != NULL)
		{
			imagewin_link(win);
			imagewin_show(win);
		}
		else
		{
			dispAlertMessage("新規画像作成",
				"新しいウィンドウを生成するために必要なメモリが"
				"不足しています。不要ウィンドウをクローズして"
				"みてください");
		}
	}
	return NOERR ;
}
