/*****************************************************************************/
/* XColorGC GCと色の管理・問い合わせ用のライブラリ                           */
/*****************************************************************************/

#ifndef _XColorGC_h_INCLUDED_
#define _XColorGC_h_INCLUDED_

typedef struct _XColorGCDatabase * XColorGCDatabase;
typedef struct _XColorGC * XColorGC;

#include <X11/Xlib.h>

#include "XDisplay.h"
#include "Obj.h"

/*===========================================================================*/
/* XColorGC 関連                                                             */
/*===========================================================================*/

/*---------------------------------------------------------------------------*/
/* オブジェクトの生成                                                        */
/*---------------------------------------------------------------------------*/

XColorGC XColorGC_Create(XColorGCDatabase database, XColor color);
XColorGC XColorGC_CreateFromXColorGC(XColorGCDatabase database, XColorGC c);

/*---------------------------------------------------------------------------*/
/* RGB 値から生成する．                                                      */
/*---------------------------------------------------------------------------*/

XColorGC XColorGC_CreateFromRGB(XColorGCDatabase database,
			      int red, int green, int blue);

/*---------------------------------------------------------------------------*/
/* オブジェクトの削除                                                        */
/*---------------------------------------------------------------------------*/

XColorGC XColorGC_Destroy(XColorGC color_gc);

/*===========================================================================*/
/* 文字列読み込み用関数                                                      */
/*===========================================================================*/

/*---------------------------------------------------------------------------*/
/* 色とGCのデータベースから name で与えられた名前の色を検索する．            */
/*---------------------------------------------------------------------------*/

XColorGC XColorGC_CreateFromCharacters(XColorGCDatabase database, char * name);

/*---------------------------------------------------------------------------*/
/* XColor 構造体の取得                                                       */
/*---------------------------------------------------------------------------*/

XColor XColorGC_GetColor(XColorGC color_gc);

/*---------------------------------------------------------------------------*/
/* ピクセル値の取得                                                          */
/*---------------------------------------------------------------------------*/

unsigned long XColorGC_GetPixel(XColorGC color_gc);

/*---------------------------------------------------------------------------*/
/* GC の取得                                                                 */
/*---------------------------------------------------------------------------*/

GC XColorGC_GetGC(XColorGC color_gc);

/*---------------------------------------------------------------------------*/
/* 色の明るさの取得                                                          */
/*---------------------------------------------------------------------------*/

int GetBrightness(XColor color);

/*===========================================================================*/
/* GC のデータベース                                                         */
/*===========================================================================*/

XColorGCDatabase XColorGCDatabase_Create(XDisplay x_display,
					 int studying_flag,
					 int cache_flag,
					 int cache_size,
					 int hash_number,
					 char * background,
					 int gradation);
XColorGCDatabase XColorGCDatabase_Destroy(XColorGCDatabase database);
XColorGC XColorGCDatabase_GetBackgroundXColorGC(XColorGCDatabase database);

/*---------------------------------------------------------------------------*/
/* チューニング用                                                            */
/*---------------------------------------------------------------------------*/

void XColorGCDatabase_OutputHashStatus(XColorGCDatabase database);

#endif

/*****************************************************************************/
/* End of File                                                               */
/*****************************************************************************/
