123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- /*****************************************************************************/
- /* XColorGC GCと色の管理・問い合わせ用のライブラリ */
- /*****************************************************************************/
- #ifndef _XColorGCP_h_INCLUDED_
- #define _XColorGCP_h_INCLUDED_
- #include "XColorGC.h"
- #define RGB_MAX_VALUE 65535
- /*===========================================================================*/
- /* XFireworks は,描画の高速化のために,描画に必要な色と GC は,起動時に */
- /* すべて確保するのですが,無駄な X サーバへのリクエストとメモリの浪費を */
- /* 減らすために,いったん確保した色と GC はデータベースに記憶しておき, */
- /* 同じ色が必要になったときには,共有するようにします. */
- /* (XColorGCDatabase はそのためのクラスです) */
- /* これにより,XAllocColor() による色の問い合わせ待ちが減るため, */
- /* 起動が格段に高速になります. */
- /* データベースの検索には,ハッシュ,キャッシュ,学習機能を使用することが */
- /* できます. */
- /*===========================================================================*/
- /*---------------------------------------------------------------------------*/
- /* 以下を有効にすると,同じ色のGCがどれくらい共有されているか調べることが */
- /* できます. */
- /*---------------------------------------------------------------------------*/
- /* #define HIT_LIST */
- /*---------------------------------------------------------------------------*/
- /* 以下を有効にすると,キャッシュのヒット率を調べることができます. */
- /*---------------------------------------------------------------------------*/
- /* #define HIT_CACHE */
- /*===========================================================================*/
- /* GC の実体を管理するクラス */
- /*===========================================================================*/
- typedef struct _XColorGCInstance * XColorGCInstance;
- typedef struct _XColorGCInstance {
- XDisplay x_display;
- GC gc;
- XColor color;
- } _XColorGCInstance;
- /*===========================================================================*/
- /* GC の実体のリストを管理するクラス */
- /* 同一の色のGCは共有したいため,GCの実体をリストで管理し,GCの取得要求に */
- /* 対して,適切な XColorGCInstance を返す. */
- /* (すでに存在するのならそれを返し,無ければ Create する) */
- /*===========================================================================*/
- typedef struct _XColorGCList * XColorGCList;
- typedef struct _XColorGCList { /* GC の管理用 */
- XDisplay x_display;
- int studying_flag; /* 学習機能のON/OFFのフラグ */
- ObjList list; /* XColorGCInstance のリスト */
- } _XColorGCList;
- /*===========================================================================*/
- /* キャッシュ */
- /*===========================================================================*/
- typedef struct _XColorGCCacheBuffer * XColorGCCacheBuffer;
- typedef struct _XColorGCCache * XColorGCCache;
- /* キャッシュ用バッファ */
- typedef struct _XColorGCCacheBuffer {
- XColorGCInstance instance;
- } _XColorGCCacheBuffer;
- /* キャッシュ */
- typedef struct _XColorGCCache {
- int size; /* キャッシュサイズ */
- XColorGCList color_gc_list;
- ObjList buffer_list;
- } _XColorGCCache;
- /*===========================================================================*/
- /* ハッシュ */
- /*===========================================================================*/
- typedef struct _XColorGCHash * XColorGCHash;
- typedef struct _XColorGCHash {
- int number; /* ハッシュの個数 */
- int cache_flag; /* キャッシュの使用・未使用のフラグ */
- XColorGCCache * color_gc_cache;
- XColorGCList * color_gc_list;
- } _XColorGCHash;
- /*===========================================================================*/
- /* 色の名前とRGB値の対応を管理するためのクラス */
- /*===========================================================================*/
- typedef struct _ColorName * ColorName;
- typedef struct _ColorNameList * ColorNameList;
- typedef struct _ColorName {
- char * name;
- XColor color;
- } _ColorName;
- typedef struct _ColorNameList {
- XDisplay x_display;
- ObjList list; /* ColorName のリスト */
- } _ColorNameList;
- /*===========================================================================*/
- /* 色と GC のデータベース */
- /* GC の検索には,ハッシュを用いる. */
- /*===========================================================================*/
- typedef struct _XColorGCDatabase { /* GC の管理用 */
- XDisplay x_display;
- XColorGCHash hash; /* ハッシュ */
- ColorNameList color_name_list; /* 色名 → RGB値の変換用 */
- /* 背景色.色名で"none"を指定すると,この色が使用される. */
- XColorGC background_color_gc;
- /* 減色数.16階調にするときには16を指定 */
- /* 10階調や20階調も指定可能 */
- int gradation;
- } _XColorGCDatabase;
- /*===========================================================================*/
- /* GC を管理するクラス */
- /* 同じ色の GC が重複しない用に,XColorGCList で GC を管理して, */
- /* 色の要求時には,XColorGCList から GC をもらうようにする. */
- /*===========================================================================*/
- typedef struct _XColorGC {
- XColorGCInstance instance;
- } _XColorGC;
- #endif
- /*****************************************************************************/
- /* End of File */
- /*****************************************************************************/
|