/*===========================================
          DolphMorph（ドルフモーフ）

      モーフィング＆変形アニメ作成ソフト

  モーフィングアルゴリズム: EAST 1994
  インターフェース作成:     松内 良介 1994
===========================================*/
#define	MODULE_DESKTOP

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <winb.h>
#include <te.h>
#include <fntb.h>
#include <gui.h>
#include <ryosuke.h>
#include <usrlib.h>

#include "desktop.h"
#include "points.h"
#include "guisub.h"
#include "imstore.h"
#include "morphgo.h"
#include "about.h"
#include "movie.h"
#include "alert.h"
#include "movfile.h"

/*--------------------------------------------------------*/
/*                        部品ＩＤ                        */
/*--------------------------------------------------------*/

	int	idBackDialog = -1 ;
	int	idDesktopSelectiveHyper = -1 ;
	int	idDesktopWinAttachHyper = -1 ;
	int	idDesktopToolAttachHyper = -1 ;
	int	idDesktopDialog = -1 ;
	int	idDesktopMenu = -1 ;
	int	idDesktopMItem_System = -1 ;
	int	idDesktopSystemMenu = -1 ;
	int	idDesktopSystemMenuItem[3] = -1 ;
	int	idDesktopMItem_file = -1 ;
	int	idDesktopFileMenu = -1 ;
	int	idDesktopFileMItem[8] = -1 ;
	int	idDesktopLoadImageMenu = -1 ;
	int	idDesktopLoadImageMItem[4] = -1 ;
	int	idDesktopSaveImageMenu = -1 ;
	int	idDesktopSaveImageMItem[2] = -1 ;
	int	idDesktopMItem_make = -1 ;
	int	idDesktopMakeMenu = -1 ;
	int	idDesktopMakeMItem[4] = -1 ;
	int	idDesktopExitIcon = -1 ;
	int	idDesktopClockMsg = -1 ;
	int	idDesktopAlertHyper = -1 ;
	int	idDesktopSkbIcon = -1 ;

/*--------------------------------------------------------*/
/*        デスクトップメニューの選択可／不可を設定        */
/*--------------------------------------------------------*/

	void desktop_checkActivity(void)
	{
		void setAct(int id, int flag)
		/* flag:0=可  0以外=不可 */
		{
			if (flag == 0)
				MTL_resetAtrObj(id, ~MS_INACTIVEL40); // 可
			else
				MTL_setAtrObj(id, MS_INACTIVEL40);	 // 不可
		}
	  /* 「マーク画像保存」 */
		setAct(idDesktopSaveImageMItem[0], imstore_checkSaveMarkedImage());
		setAct(idDesktopSaveImageMItem[1], imstore_checkSaveFrameStore());
	  /* 「操作点読み込み」メニューの可・不可 */
		setAct(idDesktopFileMItem[2], points_checkLoadPoints());
	  /* 「操作点保存」メニューの可・不可 */
		setAct(idDesktopFileMItem[3], points_checkSavePoints());
	  /* 「操作点クリア」メニューの可・不可 */
		setAct(idDesktopFileMItem[4], points_checkClearPoints());
	  /* 「動画(MOV)保存」の可・不可 */
		setAct(idDesktopFileMItem[6], movfile_checkRec());
	  /* 「モーフィング」「変形アニメ」*/
		setAct(idDesktopMakeMItem[0], morphgo_checkExecMorph(0));
		setAct(idDesktopMakeMItem[1], morphgo_checkExecMorph(1));
	  /* 「動画再生」 */
		setAct(idDesktopMakeMItem[3], movie_checkPlay());
	}

/*--------------------------------------------------------*/
/*                 部品からの呼び出し関数                 */
/*--------------------------------------------------------*/

	int	DesktopSystemAboutFunc(void)		/* idDesktopSystemMenuItem[0] */
	{
		about_display();
		return NOERR ;
	}
							/* idDesktopSystemMenuItem[1],idDesktopExitIcon */
	int	DesktopExitFunc(void)
	{
		if (dispCheckMessage("終了", "DolphMorph を終了します。"
							 "よろしいですか？", "終了") == 0)
			MMI_SetHaltFlag(TRUE);
		return NOERR ;
	}

	int	DesktopSkbFunc(void)					/* idDesktopSkbIcon */
	{
		MMI_DspSkb();
		return NOERR ;
	}
							/* idDesktopLoadImageMItem[0],[1],[2],[3] */
	int	DesktopFileLoadImageFunc(int kobj, int messId)
	{
		if (kobj == idDesktopLoadImageMItem[0])
			points_loadImage(0);	// 操作点設定ウィンドウのＡ側へ静止画ロード
		else if (kobj == idDesktopLoadImageMItem[1])
			points_loadImage(1);	// 操作点設定ウィンドウのＢ側へ静止画ロード
		else if (kobj == idDesktopLoadImageMItem[2])
			imstore_loadToStore(0);
		else if (kobj == idDesktopLoadImageMItem[3])
			imstore_loadToStore(1);
		desktop_checkActivity();
		return NOERR ;
	}
									/* idDesktopSaveImageMItem[0],[1] */
	int	DesktopFileSaveImageFunc(int kobj, int messId)
	{
		if (kobj == idDesktopSaveImageMItem[0])
			imstore_saveMarkedImage();
		else if (kobj == idDesktopSaveImageMItem[1])
			imstore_saveFrameStore();
		desktop_checkActivity();
		return NOERR ;
	}

	int	DesktopLoadPointsFunc(void)			/* idDesktopFileMItem[2] */
	{
		points_loadPoints();
		desktop_checkActivity();
		return NOERR ;
	}

	int	DesktopSavePointsFunc(void)			/* idDesktopFileMItem[3] */
	{
		points_savePoints();
		desktop_checkActivity();
		return NOERR ;
	}

	int	DesktopClearPointsFunc(void)		/* idDesktopFileMItem[4] */
	{
		points_clearPoints();
		desktop_checkActivity();
		return NOERR ;
	}

	int	DesktopFileMovieLoadFunc(void)		/* idDesktopFileMItem[4] */
	{
		return NOERR ;
	}

	/*	initDataZDESKTOP:idDesktopFileMItem[6]:MJ_MITEML40の呼び出し関数	*/
	int	DesktopMovSaveFunc(kobj, messId, argc, pev, trigger)
	int		kobj ;
	int		messId ;
	int		argc ;
	EVENT	*pev ;
	int		trigger ;
	{
		movfile_rec();
		desktop_checkActivity();
		return NOERR ;
	}

	/*	initDataZDESKTOP:idDesktopFileMItem[7]:MJ_MITEML40の呼び出し関数	*/
	int	DesktopMovPlayFunc(kobj, messId, argc, pev, trigger)
	int		kobj ;
	int		messId ;
	int		argc ;
	EVENT	*pev ;
	int		trigger ;
	{
		movfile_play();
		desktop_checkActivity();
		return NOERR ;
	}

	#if 0
		/* idDesktopFileMItem[5] */
		int	DesktopFileMovieSaveFunc(kobj, messId, argc, pev, trigger)
		int		kobj ;
		int		messId ;
		int		argc ;
		EVENT	*pev ;
		int		trigger ;
		{
			imstore_saveFrameStoreAsMovieFile();
			return NOERR ;
		}
	#endif

	int	DesktopMakeMorphFunc(void)		/* idDesktopMakeMItem[0] */
	{
		morphgo_execMorph(0);
		desktop_checkActivity();
		return NOERR ;
	}

	int	DesktopMakeTransformFunc(void)		/* idDesktopMakeMItem[1] */
	{
		morphgo_execMorph(1);
		desktop_checkActivity();
		return NOERR ;
	}

	int	DesktopMoviePlayFunc(void)		/* idDesktopMovieMItem[0] */
	{
		movie_play();
		desktop_checkActivity();
		return NOERR ;
	}

	int	DesktopOtherInfoFunc(void)		/* idDesktopOtherMItem[0] */
	{
		return NOERR ;
	}

/* [end] */
