/**********************************************************************
 
	Copyright (C) 2003 Hirohisa MORI <joshua@nichibun.ac.jp>
 
	This program is free software; you can redistribute it 
	and/or modify it under the terms of the GLOBALBASE 
	Library General Public License (G-LGPL) as published by 

	http://www.globalbase.org/
 
	This program is distributed in the hope that it will be 
	useful, but WITHOUT ANY WARRANTY; without even the 
	implied warranty of MERCHANTABILITY or FITNESS FOR A 
	PARTICULAR PURPOSE.

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

#ifndef __ARC_DATA_H__
#define __ARC_DATA_H__

/* アークの１レコード */
typedef struct arc_id_record{
	char code[32]; 
	int kind;
	int id;           
	int point_count;
	GB_POINT *points; 
	int flags; /* データの状態を示すフラグ(アーク結合時、すでに結合に使用されたかどうかのフラグなどをセット) */
#define AF_NOTFINDFORJOIN  1
#define AF_INVERTFORJOIN   2
#define AF_REMOVED		   4
} ARC_ID_RECORD;

/* アークＩＤレコードをまとめたデータ */
/* アークファイルに相当 */
typedef struct arc_data{
	KIBAN_FILE_HEADER header;
	ARC_ID_RECORD *record; /*アークのレコード */
} ARC_DATA;

/* アーク指定レコード */
typedef struct arc_ref{
	int direction; /* アークの方向1か0 */
	int arc_id;    /* アークのＩＤ */
} ARC_REF;


/* アークを出力する */
int PrintArc(FILE *fp, ARC_ID_RECORD *pArcID, int bDirection, int nOption);
/* アークデータファイルを読み込む */
int ReadArc(const char *filename, FILE *fp, ARC_DATA *pData, int Flags);
/* アークデータをSVGで吐き出す */
void ArcData2SVG(FILE *fp, ARC_DATA *pArc, const char *szStrokeColor);
/* アークIDレコードを検索する */
ARC_ID_RECORD *GetArcIDRecord(ARC_DATA *pArc, int nArcID);

ARC_DATA *malloc_arc_data();
void free_ark_id_record(ARC_ID_RECORD *pRecord);
void free_arc_data(ARC_DATA *pData);

#endif