// @(#)root/gui:$Name: $:$Id: TGPicture.h,v 1.9 2005/05/30 22:38:39 rdm Exp $
// Author: Fons Rademakers 01/01/98
/*************************************************************************
* Copyright (C) 1995-2000, 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_TGPicture
#define ROOT_TGPicture
//////////////////////////////////////////////////////////////////////////
// //
// TGPicture, TGSelectdPicture & TGPicturePool //
// //
// The TGPicture class implements pictures and icons used in the //
// different GUI elements and widgets. The TGPicturePool class //
// implements a TGPicture cache. TGPictures are created, managed and //
// destroyed by the TGPicturePool. //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TObject
#include "TObject.h"
#endif
#ifndef ROOT_TRefCnt
#include "TRefCnt.h"
#endif
#ifndef ROOT_TString
#include "TString.h"
#endif
#ifndef ROOT_TGClient
#include "TGClient.h"
#endif
#ifndef ROOT_TGGC
#include "TGGC.h"
#endif
class THashTable;
class TGPicture : public TObject, public TRefCnt {
friend class TGPicturePool;
protected:
TString fName; // name of picture
Bool_t fScaled; // kTRUE if picture is scaled
Pixmap_t fPic; // picture pixmap
Pixmap_t fMask; // picture mask pixmap
PictureAttributes_t fAttributes; // picture attributes
TGPicture(const char *name, Bool_t scaled = kFALSE) {
fName = name;
fScaled = scaled;
fPic = kNone;
fMask = kNone;
fAttributes.fPixels = 0;
SetRefCount(1);
}
TGPicture(const char *name, Pixmap_t pxmap, Pixmap_t mask = 0);
// override default of TObject
void Draw(Option_t * = "") { MayNotUse("Draw(Option_t*)"); }
public:
virtual ~TGPicture();
const char *GetName() const { return fName; }
UInt_t GetWidth() const { return fAttributes.fWidth; }
UInt_t GetHeight() const { return fAttributes.fHeight; }
Pixmap_t GetPicture() const { return fPic; }
Pixmap_t GetMask() const { return fMask; }
Bool_t IsScaled() const { return fScaled; }
ULong_t Hash() const { return fName.Hash(); }
static const char *HashName(const char *name, Int_t width, Int_t height);
virtual void Draw(Handle_t id, GContext_t gc, Int_t x, Int_t y) const;
void Print(Option_t *option="") const;
ClassDef(TGPicture,0) // Pictures and icons used by the GUI classes
};
class TGSelectedPicture : public TGPicture {
protected:
const TGClient *fClient; // client to which selected picture belongs
static TGGC *fgSelectedGC;
static TGGC &GetSelectedGC();
public:
TGSelectedPicture(const TGClient *client, const TGPicture *p);
virtual ~TGSelectedPicture();
ClassDef(TGSelectedPicture,0) // Selected looking picture
};
class TGPicturePool : public TObject {
protected:
const TGClient *fClient; // client for which we keep icon pool
TString fPath; // icon search path
THashTable *fPicList; // hash table containing the icons
public:
TGPicturePool(const TGClient *client, const char *path) {
fClient = client;
fPath = path;
fPicList = 0;
}
virtual ~TGPicturePool();
const char *GetPath() const { return fPath; }
const TGPicture *GetPicture(const char *name);
const TGPicture *GetPicture(const char *name, char **xpm);
const TGPicture *GetPicture(const char *name, UInt_t new_width, UInt_t new_height);
const TGPicture *GetPicture(const char *name, Pixmap_t pxmap, Pixmap_t mask = 0);
void FreePicture(const TGPicture *pic);
void Print(Option_t *option="") const;
ClassDef(TGPicturePool,0) // Picture and icon cache
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1