#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 "screen.h"
#include "pic.h"
#include "imagewin.h"
#include "guisub.h"
#include "alert.h"
#include "desktop.h"

int	idAllScrWin = -1 ;

static SCRBITMAP bmDisp = NULL;
static IMWIN* win = NULL;

/*	initDataZALLSCR:idAllScrWin:MJ_WINDOWL40の呼び出し関数	*/
int	AllScrWinProc(kobj, messId, argc, pev, trigger)
int		kobj ;
int		messId ;
int		argc ;
EVENT	*pev ;
int		trigger ;
{
	if (messId == MM_SHOW)
	{
		FRAME fr;  RM_getWinUserFrame(kobj, &fr);
		BEGINPAINT(kobj)
		scrbitmap_draw(bmDisp,fr.X,fr.Y);
		ENDPAINT
	}
	else if (messId == MM_MOUSEON)
	{
		MMI_SetHaltFlag(TRUE);
	}
	return NOERR ;
}

int cmd_viewAllScr(void)
{
	win = imagewin_getCurrentWin();
	if (win == NULL)
		return NOERR;
	int scrwid,scrht;
	RM_getScreenSize(&scrwid,&scrht);
	if ((bmDisp = scrbitmap_new(scrwid,scrht)) == NULL)
	{
		dispAlertMessage("全体表示","画像を全画面に表示するのに必要な"
			"メモリが不足しています。不要ウィンドウをクローズしてみて"
			"ください");
		return NOERR;
	}
	FRAME frDisp = {0,0,win->pic->wid,win->pic->ht};
	int dx = _max(0,(scrwid - win->pic->wid) / 2);
	int dy = _max(0,(scrht - win->pic->ht) / 2);
	pic_getScrBitMap(win->pic, bmDisp, dx,dy, &frDisp, 1);
	FRAME fr = {0,0,scrwid-1,scrht-1};
	RM_setFrame(idAllScrWin, &fr);
	FRAME frAdj = {0,0,-1,-1};
	RM_adjustWinUser(idAllScrWin, &frAdj);
	EXECDIALOG(idAllScrWin);
	scrbitmap_delete(bmDisp);
	return NOERR;
}

