Logo ROOT   6.10/09
Reference Guide
TGPack.h
Go to the documentation of this file.
1 // @(#)root/eve:$Id$
2 // Author: Matevz Tadel 2007
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2007, 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_TGPack
13 #define ROOT_TGPack
14 
15 #include "TGFrame.h"
16 #include "TGLayout.h"
17 
18 class TGSplitter;
19 
20 
22 {
23 private:
24  TGFrameElementPack(const TGFrameElementPack&); // Not implemented
25  TGFrameElementPack& operator=(const TGFrameElementPack&); // Not implemented
26 
27 public:
28  Float_t fWeight; // relative weight
29  TGFrameElementPack* fSplitFE; //! cached varaible for optimisation
30 
31  TGFrameElementPack(TGFrame *frame, TGLayoutHints* lh = 0, Float_t weight = 1):
32  TGFrameElement(frame, lh), fWeight(weight), fSplitFE(0) { }
33 
34  ClassDef(TGFrameElementPack, 0); // Class used in TGPack.
35 };
36 
37 //==============================================================================
38 
39 class TGPack : public TGCompositeFrame
40 {
41 private:
42  TGPack(const TGPack&); // Not implemented
43  TGPack& operator=(const TGPack&); // Not implemented
44 
45 protected:
49 
51 
52  Float_t fWeightSum; // total sum of sub frame weights
53  Int_t fNVisible; // number of visible frames
54 
55  Int_t GetFrameLength(const TGFrame* f) const { return fVertical ? f->GetHeight() : f->GetWidth(); }
56  Int_t GetLength() const { return GetFrameLength(this); }
57  Int_t GetAvailableLength() const;
58 
59  void SetFrameLength (TGFrame* f, Int_t len);
60  void SetFramePosition(TGFrame* f, Int_t pos);
61 
62  void FindFrames(TGFrame* splitter, TGFrameElementPack*& f0, TGFrameElementPack*& f1) const;
63 
64  void CheckSplitterVisibility();
65  void ResizeExistingFrames();
66  void RefitFramesToPack();
67 
68  void AddFrameInternal(TGFrame *f, TGLayoutHints* l = 0, Float_t weight = 1);
69  void RemoveFrameInternal(TGFrame *f);
70 
71 
72 public:
73  TGPack(const TGWindow *p = 0, UInt_t w = 1, UInt_t h = 1, UInt_t options = 0,
74  Pixel_t back = GetDefaultFrameBackground());
75  TGPack(TGClient *c, Window_t id, const TGWindow *parent = 0);
76  virtual ~TGPack();
77 
78  virtual void AddFrameWithWeight(TGFrame *f, TGLayoutHints* l, Float_t w);
79  virtual void AddFrame(TGFrame *f, TGLayoutHints* l=0);
80 
81  virtual void DeleteFrame(TGFrame *f);
82  virtual void RemoveFrame(TGFrame *f);
83  virtual void ShowFrame(TGFrame *f);
84  virtual void HideFrame(TGFrame *f);
85 
87  virtual void Resize(UInt_t w = 0, UInt_t h = 0);
88 
90  virtual void MapSubwindows();
91 
92  virtual void MoveResize(Int_t x, Int_t y, UInt_t w = 0, UInt_t h = 0);
93  virtual void Layout();
94 
95  virtual void Dump() const;
96 
97  void EqualizeFrames();
98  void HandleSplitterStart();
99  void HandleSplitterResize(Int_t delta);
100 
101  // ----------------------------------------------------------------
102 
103  Bool_t GetVertical() const { return fVertical; }
104  void SetVertical(Bool_t x);
105 
106  // For now assume this is always true. Length of splitter = 4 pixels.
107  Bool_t GetUseSplitters() const { return fUseSplitters; }
108  void SetUseSplitters(Bool_t x) { fUseSplitters = x; }
109 
110  ClassDef(TGPack, 0); // Horizontal or vertical stack of frames.
111 };
112 
113 #endif
Float_t fWeightSum
Definition: TGPack.h:52
TGFrameElementPack(const TGFrameElementPack &)
virtual void Resize(UInt_t w=0, UInt_t h=0)
Resize the frame.
Definition: TGFrame.cxx:587
Int_t fSplitterLen
Definition: TGPack.h:48
TGFrameElementPack * fSplitFE
Definition: TGPack.h:29
Int_t fDragOverflow
Definition: TGPack.h:50
float Float_t
Definition: RtypesCore.h:53
TGFrameElementPack & operator=(const TGFrameElementPack &)
REAL splitter
Definition: triangle.c:616
UInt_t GetHeight() const
Definition: TGFrame.h:272
TH1 * h
Definition: legend2.C:5
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
void SetUseSplitters(Bool_t x)
Definition: TGPack.h:108
UInt_t GetWidth() const
Definition: TGFrame.h:271
Float_t delta
Int_t GetFrameLength(const TGFrame *f) const
Definition: TGPack.h:55
Double_t x[n]
Definition: legend1.C:17
#define ClassDef(name, id)
Definition: Rtypes.h:297
ULong_t Pixel_t
Definition: GuiTypes.h:39
Definition: TGPack.h:39
Bool_t GetVertical() const
Definition: TGPack.h:103
Bool_t fUseSplitters
Definition: TGPack.h:47
Int_t GetLength() const
Definition: TGPack.h:56
Bool_t fVertical
Definition: TGPack.h:46
Bool_t GetUseSplitters() const
Definition: TGPack.h:107
TGFrameElementPack(TGFrame *frame, TGLayoutHints *lh=0, Float_t weight=1)
cached varaible for optimisation
Definition: TGPack.h:31
unsigned int UInt_t
Definition: RtypesCore.h:42
TLine * l
Definition: textangle.C:4
double f(double x)
virtual void Dump() const
Dump contents of object on stdout.
Definition: TObject.cxx:273
Double_t y[n]
Definition: legend1.C:17
virtual void MapSubwindows()
Map all sub windows that are part of the composite frame.
Definition: TGFrame.cxx:1146
Handle_t Window_t
Definition: GuiTypes.h:28
RooCmdArg Layout(Double_t xmin, Double_t xmax=0.99, Double_t ymin=0.95)
Float_t fWeight
Definition: TGPack.h:28
TF1 * f1
Definition: legend1.C:11
Int_t fNVisible
Definition: TGPack.h:53