#define DEBUG 0
/* 
	TOWNS囲碁棋譜記録プログラム
	                                      1993/07/12  久保田俊也

*/
#include "igo.h"
#include "banx.h"
#include "kiffile.h"
#include "title.h"

static int kaiten, hanten;
/* kaiten 0=普通 1=右1/4回転 2=右半回転 3=右3/4回転 */
/* hanten 1=普通 -1=反転 */

int henkan_init()
{
	kaiten = 0;
	hanten = 1;
	return 0;
}

int henkan_set( int dkaiten, int dhanten)
{

	kaiten = (kaiten + dkaiten) % 4;
	hanten = hanten * dhanten;

	return 0;
}

/* 変換処理をした後、ｘとｙの位置になる値を求める関数 */
int henkan_disp_out( int x, int y)
{
BAN_TYPE ban_type;
int type, bansize, bansize2;
int henkanx, henkany;

	ban_type = *title_bantype_read();
	if( ban_type.type == NORMAL){
		type = NORMAL;
		bansize = ban_type.size;
		bansize2 = (bansize+1)*(bansize+2)+1;
	}

	switch(kaiten){
	case 0:
		henkanx = x;
		henkany = y;
		break;
	case 1:	/*  元へ戻すにはさらに右3/4回転 */
		henkanx = y;
		henkany = bansize-x+1;
		break;
	case 2:
		henkanx = bansize-x+1;
		henkany = bansize-y+1;
		break;
	case 3:	/*  元へ戻すにはさらに右1/4回転 */
		henkanx = bansize-y+1;
		henkany = x;
		break;
	default:
		break;
	}
	
	switch(hanten){
	case 1:
		break;
	case -1:
		henkanx = bansize-henkanx+1;
		break;
	default:
		break;
	}
	
	return henkanx + henkany*(bansize+1);

}

/* 変換処理をした後、ｘとｙの位置が何処になるかを求める関数 */
int henkan_disp_in( int x, int y)
{
BAN_TYPE ban_type;
int type, bansize, bansize2;
int henkanx, henkany;

	ban_type = *title_bantype_read();
	if( ban_type.type == NORMAL){
		type = NORMAL;
		bansize = ban_type.size;
		bansize2 = (bansize+1)*(bansize+2)+1;
	}

	switch(hanten){
	case 1:
		break;
	case -1:
		x = bansize-x+1;
		break;
	default:
		break;
	}
	
	switch(kaiten){
	case 0:
		henkanx = x;
		henkany = y;
		break;
	case 1:
		henkanx = bansize-y+1;
		henkany = x;
		break;
	case 2:
		henkanx = bansize-x+1;
		henkany = bansize-y+1;
		break;
	case 3:
		henkanx = y;
		henkany = bansize-x+1;
		break;
	default:
		break;
	}
	
	return henkanx + henkany*(bansize+1);

}

