// @(#)root/gui:$Id$
// Author: Fons Rademakers   19/5/2003

/*************************************************************************
 * Copyright (C) 1995-2003, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TGResourcePool
#define ROOT_TGResourcePool

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGResourcePool                                                       //
//                                                                      //
// This class implements a pool for the default GUI resource set,       //
// like GC's, colors, fonts, etc..                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TGObject
#include "TGObject.h"
#endif

class TGClient;
class TGFontPool;
class TGFont;
class TGGCPool;
class TGGC;
class TGPicturePool;
class TGPicture;
class TGMimeTypes;


class TGResourcePool : public TGObject {

private:
   Pixel_t          fBackColor;        // default background color
   Pixel_t          fForeColor;        // default foreground color
   Pixel_t          fHilite;           // default hilite color
   Pixel_t          fShadow;           // default shadow color
   Pixel_t          fHighLightColor;   // highlight color
   Pixel_t          fSelBackColor;     // default selection background color
   Pixel_t          fSelForeColor;     // default selection foreground color
   Pixel_t          fDocBackColor;     // default document background color
   Pixel_t          fDocForeColor;     // default document foreground color
   Pixel_t          fTipBackColor;     // default tip background color
   Pixel_t          fTipForeColor;     // default tip foreground color
   Pixel_t          fWhite;            // white color index
   Pixel_t          fBlack;            // black color index

   TGFontPool      *fFontPool;         // font pool manager

   TGFont          *fDefaultFont;      // default font
   TGFont          *fMenuFont;         // menu font
   TGFont          *fMenuHiFont;       // menu highlight font
   TGFont          *fDocFixedFont;     // document fixed font
   TGFont          *fDocPropFont;      // document proportional font
   TGFont          *fIconFont;         // icon font
   TGFont          *fStatusFont;       // status bar font

   TGPicturePool   *fPicturePool;        // picture pool manager

   const TGPicture *fDefaultBackPicture;    // default background picture
   const TGPicture *fDefaultDocBackPicture; // default document background picture

   TGGCPool        *fGCPool;           // graphics drawing context pool manager

   TGGC            *fWhiteGC;          // white gc
   TGGC            *fBlackGC;          // black gc
   TGGC            *fFrameGC;          // frame gc
   TGGC            *fBckgndGC;         // frame background gc
   TGGC            *fHiliteGC;         // frame hilite gc
   TGGC            *fShadowGC;         // frame shadow gc
   TGGC            *fFocusGC;          // frame focus gc
   TGGC            *fDocGC;            // document gc
   TGGC            *fDocbgndGC;        // document background gc
   TGGC            *fSelGC;            // selection gc
   TGGC            *fSelbgndGC;        // selection background gc
   TGGC            *fTipGC;            // tooltip gc

   Pixmap_t        fCheckered;         // checkered pixmap
   Pixmap_t        fCheckeredBitmap;   // checkered bitmap

   Cursor_t        fDefaultCursor;     // default cursor
   Cursor_t        fGrabCursor;        // grab cursor
   Cursor_t        fTextCursor;        // text cursor
   Cursor_t        fWaitCursor;        // wait cursor

   Colormap_t      fDefaultColormap;   // default colormap

   Atom_t          fClipboardAtom;     // handle to clipboard

   TGMimeTypes    *fMimeTypeList;      // list of mime types

public:
   TGResourcePool(TGClient *client);
   virtual ~TGResourcePool();

   TGGCPool       *GetGCPool() const { return fGCPool; }
   TGFontPool     *GetFontPool() const { return fFontPool; }
   TGPicturePool  *GetPicturePool() const { return fPicturePool; }

   //--- inline functions:

   // Color values...

   Pixel_t GetWhiteColor()        const { return fWhite; }
   Pixel_t GetBlackColor()        const { return fBlack; }

   Pixel_t GetFrameFgndColor()    const { return fForeColor; }
   Pixel_t GetFrameBgndColor()    const { return fBackColor; }
   Pixel_t GetFrameHiliteColor()  const { return fHilite; }
   Pixel_t GetFrameShadowColor()  const { return fShadow; }

   Pixel_t GetHighLightColor()    const { return fHighLightColor; }

   Pixel_t GetDocumentFgndColor() const { return fDocForeColor; }
   Pixel_t GetDocumentBgndColor() const { return fDocBackColor; }

   Pixel_t GetSelectedFgndColor() const { return fSelForeColor; }
   Pixel_t GetSelectedBgndColor() const { return fSelBackColor; }

   Pixel_t GetTipFgndColor()      const { return fTipForeColor; }
   Pixel_t GetTipBgndColor()      const { return fTipBackColor; }

   // Fonts...

   const TGFont *GetDefaultFont()       const { return fDefaultFont; }
   const TGFont *GetMenuFont()          const { return fMenuFont; }
   const TGFont *GetMenuHiliteFont()    const { return fMenuHiFont; }
   const TGFont *GetDocumentFixedFont() const { return fDocFixedFont; }
   const TGFont *GetDocumentPropFont()  const { return fDocPropFont; }
   const TGFont *GetIconFont()          const { return fIconFont; }
   const TGFont *GetStatusFont()        const { return fStatusFont; }

   // GCs...

   const TGGC *GetWhiteGC()          const { return fWhiteGC; }
   const TGGC *GetBlackGC()          const { return fBlackGC; }

   const TGGC *GetFrameGC()          const { return fFrameGC; }
   const TGGC *GetFrameBckgndGC()    const { return fBckgndGC; }
   const TGGC *GetFrameHiliteGC()    const { return fHiliteGC; }
   const TGGC *GetFrameShadowGC()    const { return fShadowGC; }
   const TGGC *GetFocusHiliteGC()    const { return fFocusGC; }

   const TGGC *GetDocumentGC()       const { return fDocGC; }
   const TGGC *GetDocumentBckgndGC() const { return fDocbgndGC; }

   const TGGC *GetSelectedGC()       const { return fSelGC; }
   const TGGC *GetSelectedBckgndGC() const { return fSelbgndGC; }

   const TGGC *GetTipGC()            const { return fTipGC; }

   // Pixmaps...

   Pixmap_t GetCheckeredPixmap() const { return fCheckered; }
   Pixmap_t GetCheckeredBitmap() const { return fCheckeredBitmap; }

   const TGPicture *GetFrameBckgndPicture() const
         { return fDefaultBackPicture; }
   const TGPicture *GetDocumentBckgndPicture() const
         { return fDefaultDocBackPicture; }

   // Cursors...

   Cursor_t GetDefaultCursor() const { return fDefaultCursor; }
   Cursor_t GetGrabCursor()    const { return fGrabCursor; }
   Cursor_t GetTextCursor()    const { return fTextCursor; }
   Cursor_t GetWaitCursor()    const { return fWaitCursor; }

   // Colormaps...

   Colormap_t GetDefaultColormap() const { return fDefaultColormap; }

   // Miscellaneous...

   TGMimeTypes *GetMimeTypes() const { return fMimeTypeList; }

   Atom_t       GetClipboard() const { return fClipboardAtom; }

   ClassDef(TGResourcePool,0)  // Graphics resource pool
};

#endif
 TGResourcePool.h:1
 TGResourcePool.h:2
 TGResourcePool.h:3
 TGResourcePool.h:4
 TGResourcePool.h:5
 TGResourcePool.h:6
 TGResourcePool.h:7
 TGResourcePool.h:8
 TGResourcePool.h:9
 TGResourcePool.h:10
 TGResourcePool.h:11
 TGResourcePool.h:12
 TGResourcePool.h:13
 TGResourcePool.h:14
 TGResourcePool.h:15
 TGResourcePool.h:16
 TGResourcePool.h:17
 TGResourcePool.h:18
 TGResourcePool.h:19
 TGResourcePool.h:20
 TGResourcePool.h:21
 TGResourcePool.h:22
 TGResourcePool.h:23
 TGResourcePool.h:24
 TGResourcePool.h:25
 TGResourcePool.h:26
 TGResourcePool.h:27
 TGResourcePool.h:28
 TGResourcePool.h:29
 TGResourcePool.h:30
 TGResourcePool.h:31
 TGResourcePool.h:32
 TGResourcePool.h:33
 TGResourcePool.h:34
 TGResourcePool.h:35
 TGResourcePool.h:36
 TGResourcePool.h:37
 TGResourcePool.h:38
 TGResourcePool.h:39
 TGResourcePool.h:40
 TGResourcePool.h:41
 TGResourcePool.h:42
 TGResourcePool.h:43
 TGResourcePool.h:44
 TGResourcePool.h:45
 TGResourcePool.h:46
 TGResourcePool.h:47
 TGResourcePool.h:48
 TGResourcePool.h:49
 TGResourcePool.h:50
 TGResourcePool.h:51
 TGResourcePool.h:52
 TGResourcePool.h:53
 TGResourcePool.h:54
 TGResourcePool.h:55
 TGResourcePool.h:56
 TGResourcePool.h:57
 TGResourcePool.h:58
 TGResourcePool.h:59
 TGResourcePool.h:60
 TGResourcePool.h:61
 TGResourcePool.h:62
 TGResourcePool.h:63
 TGResourcePool.h:64
 TGResourcePool.h:65
 TGResourcePool.h:66
 TGResourcePool.h:67
 TGResourcePool.h:68
 TGResourcePool.h:69
 TGResourcePool.h:70
 TGResourcePool.h:71
 TGResourcePool.h:72
 TGResourcePool.h:73
 TGResourcePool.h:74
 TGResourcePool.h:75
 TGResourcePool.h:76
 TGResourcePool.h:77
 TGResourcePool.h:78
 TGResourcePool.h:79
 TGResourcePool.h:80
 TGResourcePool.h:81
 TGResourcePool.h:82
 TGResourcePool.h:83
 TGResourcePool.h:84
 TGResourcePool.h:85
 TGResourcePool.h:86
 TGResourcePool.h:87
 TGResourcePool.h:88
 TGResourcePool.h:89
 TGResourcePool.h:90
 TGResourcePool.h:91
 TGResourcePool.h:92
 TGResourcePool.h:93
 TGResourcePool.h:94
 TGResourcePool.h:95
 TGResourcePool.h:96
 TGResourcePool.h:97
 TGResourcePool.h:98
 TGResourcePool.h:99
 TGResourcePool.h:100
 TGResourcePool.h:101
 TGResourcePool.h:102
 TGResourcePool.h:103
 TGResourcePool.h:104
 TGResourcePool.h:105
 TGResourcePool.h:106
 TGResourcePool.h:107
 TGResourcePool.h:108
 TGResourcePool.h:109
 TGResourcePool.h:110
 TGResourcePool.h:111
 TGResourcePool.h:112
 TGResourcePool.h:113
 TGResourcePool.h:114
 TGResourcePool.h:115
 TGResourcePool.h:116
 TGResourcePool.h:117
 TGResourcePool.h:118
 TGResourcePool.h:119
 TGResourcePool.h:120
 TGResourcePool.h:121
 TGResourcePool.h:122
 TGResourcePool.h:123
 TGResourcePool.h:124
 TGResourcePool.h:125
 TGResourcePool.h:126
 TGResourcePool.h:127
 TGResourcePool.h:128
 TGResourcePool.h:129
 TGResourcePool.h:130
 TGResourcePool.h:131
 TGResourcePool.h:132
 TGResourcePool.h:133
 TGResourcePool.h:134
 TGResourcePool.h:135
 TGResourcePool.h:136
 TGResourcePool.h:137
 TGResourcePool.h:138
 TGResourcePool.h:139
 TGResourcePool.h:140
 TGResourcePool.h:141
 TGResourcePool.h:142
 TGResourcePool.h:143
 TGResourcePool.h:144
 TGResourcePool.h:145
 TGResourcePool.h:146
 TGResourcePool.h:147
 TGResourcePool.h:148
 TGResourcePool.h:149
 TGResourcePool.h:150
 TGResourcePool.h:151
 TGResourcePool.h:152
 TGResourcePool.h:153
 TGResourcePool.h:154
 TGResourcePool.h:155
 TGResourcePool.h:156
 TGResourcePool.h:157
 TGResourcePool.h:158
 TGResourcePool.h:159
 TGResourcePool.h:160
 TGResourcePool.h:161
 TGResourcePool.h:162
 TGResourcePool.h:163
 TGResourcePool.h:164
 TGResourcePool.h:165
 TGResourcePool.h:166
 TGResourcePool.h:167
 TGResourcePool.h:168
 TGResourcePool.h:169
 TGResourcePool.h:170
 TGResourcePool.h:171
 TGResourcePool.h:172
 TGResourcePool.h:173
 TGResourcePool.h:174
 TGResourcePool.h:175
 TGResourcePool.h:176
 TGResourcePool.h:177
 TGResourcePool.h:178
 TGResourcePool.h:179
 TGResourcePool.h:180
 TGResourcePool.h:181
 TGResourcePool.h:182
 TGResourcePool.h:183
 TGResourcePool.h:184
 TGResourcePool.h:185
 TGResourcePool.h:186
 TGResourcePool.h:187
 TGResourcePool.h:188
 TGResourcePool.h:189