Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TGPicture.h
Go to the documentation of this file.
1 // @(#)root/gui:$Id$
2 // Author: Fons Rademakers 01/01/98
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TGPicture
13 #define ROOT_TGPicture
14 
15 
16 //////////////////////////////////////////////////////////////////////////
17 // //
18 // TGPicture, TGSelectdPicture & TGPicturePool //
19 // //
20 // The TGPicture class implements pictures and icons used in the //
21 // different GUI elements and widgets. The TGPicturePool class //
22 // implements a TGPicture cache. TGPictures are created, managed and //
23 // destroyed by the TGPicturePool. //
24 // //
25 //////////////////////////////////////////////////////////////////////////
26 
27 #include "TObject.h"
28 #include "TRefCnt.h"
29 #include "TString.h"
30 #include "TGClient.h"
31 #include "TGGC.h"
32 
33 class THashTable;
34 
35 
36 class TGPicture : public TObject, public TRefCnt {
37 
38 friend class TGPicturePool;
39 
40 protected:
41  TString fName; // name of picture
42  Bool_t fScaled; // kTRUE if picture is scaled
43  Pixmap_t fPic; // picture pixmap
44  Pixmap_t fMask; // picture mask pixmap
45  PictureAttributes_t fAttributes; // picture attributes
46 
47  TGPicture(const char *name, Bool_t scaled = kFALSE):
48  fName(name), fScaled(scaled), fPic(kNone), fMask(kNone), fAttributes()
49  {
50  fAttributes.fPixels = 0;
51  SetRefCount(1);
52  }
53 
54  TGPicture(const char *name, Pixmap_t pxmap, Pixmap_t mask = 0);
55 
56  // override default of TObject
57  void Draw(Option_t * = "") { MayNotUse("Draw(Option_t*)"); }
58 
59 public:
60  virtual ~TGPicture();
61 
62  const char *GetName() const { return fName; }
63  UInt_t GetWidth() const { return fAttributes.fWidth; }
64  UInt_t GetHeight() const { return fAttributes.fHeight; }
65  Pixmap_t GetPicture() const { return fPic; }
66  Pixmap_t GetMask() const { return fMask; }
67  Bool_t IsScaled() const { return fScaled; }
68  ULong_t Hash() const { return fName.Hash(); }
69  static const char *HashName(const char *name, Int_t width, Int_t height);
70 
71  virtual void Draw(Handle_t id, GContext_t gc, Int_t x, Int_t y) const;
72  void Print(Option_t *option="") const;
73 
74  ClassDef(TGPicture,0) // Pictures and icons used by the GUI classes
75 };
76 
77 
78 class TGSelectedPicture : public TGPicture {
79 
80 protected:
81  const TGClient *fClient; // client to which selected picture belongs
82 
83  static TGGC *fgSelectedGC;
84  static TGGC &GetSelectedGC();
85 
86  TGSelectedPicture(const TGSelectedPicture& gp):
87  TGPicture(gp), fClient(gp.fClient) { }
88  TGSelectedPicture& operator=(const TGSelectedPicture& gp)
89  {if(this!=&gp) { TGPicture::operator=(gp); fClient=gp.fClient;}
90  return *this;}
91 
92 public:
93  TGSelectedPicture(const TGClient *client, const TGPicture *p);
94  virtual ~TGSelectedPicture();
95 
96  ClassDef(TGSelectedPicture,0) // Selected looking picture
97 };
98 
99 
100 class TGPicturePool : public TObject {
101 
102 protected:
103  const TGClient *fClient; // client for which we keep icon pool
104  TString fPath; // icon search path
105  THashTable *fPicList; // hash table containing the icons
106 
107  TGPicturePool(const TGPicturePool&);
108  TGPicturePool& operator=(const TGPicturePool&);
109 
110 public:
111  TGPicturePool(const TGClient *client, const char *path):
112  fClient(client), fPath(path), fPicList(0) { }
113  virtual ~TGPicturePool();
114 
115  const char *GetPath() const { return fPath; }
116  const TGPicture *GetPicture(const char *name);
117  const TGPicture *GetPicture(const char *name, char **xpm);
118  const TGPicture *GetPicture(const char *name, UInt_t new_width, UInt_t new_height);
119  const TGPicture *GetPicture(const char *name, Pixmap_t pxmap, Pixmap_t mask = 0);
120  void FreePicture(const TGPicture *pic);
121 
122  void Print(Option_t *option="") const;
123 
124  ClassDef(TGPicturePool,0) // Picture and icon cache
125 };
126 
127 #endif