/****************************************************************************/
/* TEXT WINDOW SYSTEM V1.50 Copyright (C) 1991,94 by AIG-SOFT */
/****************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include "defines.h"
#include "menu.h"
#include "win.h"
#include "aigtext.h"
#include "abuff.h"

/****************************************************************************/
/* ウインドウ内部データ（すべて０で初期化）*/

char _win_use[WINMAX]; /* ウインドウ利用状況(0:未使用,>=0:使用中+優先順位) */
char _win_no=0;	  /* 現在開いているウインドウ数 */
char _win_active; /* 現在アクティブなウインドウ番号 */
_WIN_DATA *_awinp[WINMAX]; /* ウインドウ構造体アドレスバッファー */

/****************************************************************************/

int win_open(int x,int y,int wx,int wy,_MENU_DATA *mdata,MCOLORS *colors)
/* ウインドウオープン　*/
{
int i,j,ex,ey;
_WIN_DATA *win;
	/* 空きウインドウサーチ */
	if (_win_no==WINMAX) return(-1); /* 空きウインドウがない */
	/* 空きウインドウサーチ */
	i=0; while (_win_use[i]) i++;
	
	/* ウインドウ構造体確保 */
	win=(_WIN_DATA *)newmalloc(sizeof(_WIN_DATA));
	if (win==NULL) return(-2); /* 構造体が確保できない */
	
	/* ウインドウ待避エリア確保 */
	ex=x+wx-1;
	ey=y+wy-1;
	win->wget=newmalloc(calc_text_size(x,y,ex,ey));
	if (win->wget==NULL) {
		free(win);
		return(-3); /* 退避エリアが確保できない */
	}
	
	/* ポップアップメニュー */
	if (mdata->popup) popup3s(x,y,ex,ey,colors->waku,mdata->pwait,mdata->udmode);
	
	/* 枠描画 */
	make_waku(x,y,ex,ey,mdata,colors);
	
	/* ウインドウ保存 */
	gettext(x,y,ex,ey,win->wget);
	
	/* 座標記録 */
	win->x=x;
	win->y=y;
	win->wx=wx;
	win->wy=wy;
	win->mdata=mdata;
	win->colors=colors;
	win->col=colors->menues;
	
	/* cursor each window home */
	win->cx=win->ccx=win->cy=win->ccy=0;
	win->kanji1=win->fcrlf=win->fesc=0;
	
	win->fcur=mdata->cursor;
	curmode(win->fcur);
	B_LOCATE(x+1,y+1); /* locate window home */
	
	/* ウインドウ登録 */
	_win_no++;	/* ウインドウの数＋１ */
	_awinp[i]=win;	/* 構造体登録 */
	_win_active=i;	/* 今開いたウインドウがアクティブになる */
	for (j=0;j<WINMAX;j++) { /* 優先順位変更 */
		if (_win_use[j]>0) _win_use[j]++;
	}
	_win_use[i]=1;	/* このウインドウ利用中&最優先 */
	return(i);
}

/*****************************************************************************/
