/*****************************************************************************/
/* べた表示時におけるパレット設定 */
/*****************************************************************************/

#include <stdio.h>
#include <iocslib.h>
#include "defines.h"
#include "aiggraph.h"

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

int set_pal_beta(palname,max,x,y,wx,wy,crt,fnonclr)
unchar *palname;
int max,crt,fnonclr;
int *x,*y,*wx,*wy;
{
int i,fx=0;
unsint pal[256];
FILE *fp;
	fp=fopen(palname,"rb");
	if (fp==NULL) { /* パレットファイルがない */
		if (max>=0) { /* 画面モードだけ設定 */
			if (!fnonclr) {
				/* べたのnon-clearは画面モードが違ってもいけるようにする */
				if (CRTMOD(-1)!=crt) CRTMOD(crt);
				G_CLR_ON();
			}
		}
		return(-1);
	}
	
	if (max<0) { /* 座標データ読み出しフラグ */
		fx=1;
		max=-max;
		if (max==1) max=0;
	}
	
	if (max) { /* パレット読み出し */
		if (fread(pal,sizeof(unsint),max,fp)<max) {
			fclose(fp);
			return(-2); /* パレット内容が足りない */
		}
	}
	if (fx) { /* 座標データ読み出し（拡張部分）*/
		fread(x,sizeof(int),1,fp);
		fread(y,sizeof(int),1,fp);
		fread(wx,sizeof(int),1,fp);
		fread(wy,sizeof(int),1,fp);
		fread(&crt,sizeof(int),1,fp);
		if (ferror(fp)) {
			fclose(fp);
			return(-3); /* 拡張データがない */
		}
	}
	fclose(fp);
	
	/* 画面モード設定 */
	if (!fnonclr) {
		/* べたのnon-clearは画面モードが違ってもいけるようにする */
		if (CRTMOD(-1)!=crt) CRTMOD(crt);
		G_CLR_ON();
	}
	/* パレット設定 */
	for (i=0;i<max;i++) GPALET(i,pal[i]);
	return(crt);
}

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