Logo ROOT  
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 
63 
65  void ResizeExistingFrames();
66  void RefitFramesToPack();
67 
68  void AddFrameInternal(TGFrame *f, TGLayoutHints* l = 0, Float_t weight = 1);
70 
71 
72 public:
73  TGPack(const TGWindow *p = 0, UInt_t w = 1, UInt_t h = 1, UInt_t options = 0,
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.
109 
110  ClassDef(TGPack, 0); // Horizontal or vertical stack of frames.
111 };
112 
113 #endif
c
#define c(i)
Definition: RSha256.hxx:119
l
auto * l
Definition: textangle.C:4
TGFrameElementPack::TGFrameElementPack
TGFrameElementPack(TGFrame *frame, TGLayoutHints *lh=0, Float_t weight=1)
cached varaible for optimisation
Definition: TGPack.h:31
TGPack::DeleteFrame
virtual void DeleteFrame(TGFrame *f)
Remove frame f and refit existing frames to pack size.
Definition: TGPack.cxx:325
TGPack::fUseSplitters
Bool_t fUseSplitters
Definition: TGPack.h:47
TGPack::MapSubwindows
virtual void MapSubwindows()
Virtual method of TGcompositeFrame.
Definition: TGPack.cxx:425
TGPack::fVertical
Bool_t fVertical
Definition: TGPack.h:46
TGPack::AddFrameInternal
void AddFrameInternal(TGFrame *f, TGLayoutHints *l=0, Float_t weight=1)
Add frame f at the end.
Definition: TGPack.cxx:231
TGPack::SetFrameLength
void SetFrameLength(TGFrame *f, Int_t len)
Set pack-wise length of frame f.
Definition: TGPack.cxx:82
TGWindow
Definition: TGWindow.h:31
f
#define f(i)
Definition: RSha256.hxx:122
TGPack::SetUseSplitters
void SetUseSplitters(Bool_t x)
Definition: TGPack.h:108
TGPack::GetFrameLength
Int_t GetFrameLength(const TGFrame *f) const
Definition: TGPack.h:55
Pixel_t
ULong_t Pixel_t
Definition: GuiTypes.h:39
TGLayout.h
TGPack::AddFrame
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add frame f at the end with default weight.
Definition: TGPack.cxx:285
TGPack::SetFramePosition
void SetFramePosition(TGFrame *f, Int_t pos)
Set pack-wise position of frame f.
Definition: TGPack.cxx:93
TGPack::EqualizeFrames
void EqualizeFrames()
Refit existing frames so that their lengths are equal.
Definition: TGPack.cxx:497
Float_t
float Float_t
Definition: RtypesCore.h:57
TGPack::SetVertical
void SetVertical(Bool_t x)
Sets the vertical flag and reformats the back to new stacking direction.
Definition: TGPack.cxx:597
Int_t
int Int_t
Definition: RtypesCore.h:45
x
Double_t x[n]
Definition: legend1.C:17
TGFrame::GetDefaultFrameBackground
static Pixel_t GetDefaultFrameBackground()
Get default frame background.
Definition: TGFrame.cxx:668
TGPack::fDragOverflow
Int_t fDragOverflow
Definition: TGPack.h:50
TGPack::AddFrameWithWeight
virtual void AddFrameWithWeight(TGFrame *f, TGLayoutHints *l, Float_t w)
Add frame f at the end with given weight.
Definition: TGPack.cxx:275
TGPack::HandleSplitterStart
void HandleSplitterStart()
Called when splitter drag starts.
Definition: TGPack.cxx:519
TGFrame
Definition: TGFrame.h:105
Bool_t
bool Bool_t
Definition: RtypesCore.h:63
TGPack::GetUseSplitters
Bool_t GetUseSplitters() const
Definition: TGPack.h:107
bool
TGFrameElementPack::fWeight
Float_t fWeight
Definition: TGPack.h:28
TGPack::GetAvailableLength
Int_t GetAvailableLength() const
Return length of entire frame without splitters.
Definition: TGPack.cxx:71
TGPack::Resize
virtual void Resize(UInt_t w=0, UInt_t h=0)
Resize the pack.
Definition: TGPack.cxx:450
TGPack::fWeightSum
Float_t fWeightSum
Definition: TGPack.h:52
TGPack::HideFrame
virtual void HideFrame(TGFrame *f)
Hide sub frame.
Definition: TGPack.cxx:393
TGFrameElementPack::TGFrameElementPack
TGFrameElementPack(const TGFrameElementPack &)
TGPack::Layout
virtual void Layout()
Reposition the frames so that they fit correctly.
Definition: TGPack.cxx:476
TGPack::fNVisible
Int_t fNVisible
Definition: TGPack.h:53
TGFrameElementPack::fSplitFE
TGFrameElementPack * fSplitFE
Definition: TGPack.h:29
TGPack::MoveResize
virtual void MoveResize(Int_t x, Int_t y, UInt_t w=0, UInt_t h=0)
Move and resize the pack.
Definition: TGPack.cxx:466
h
#define h(i)
Definition: RSha256.hxx:124
TGCompositeFrame::MapSubwindows
virtual void MapSubwindows()
Map all sub windows that are part of the composite frame.
Definition: TGFrame.cxx:1149
TGFrame::Resize
virtual void Resize(UInt_t w=0, UInt_t h=0)
Resize the frame.
Definition: TGFrame.cxx:590
TGPack
Definition: TGPack.h:39
TGPack::GetVertical
Bool_t GetVertical() const
Definition: TGPack.h:103
TGFrame.h
TGLayoutHints
Definition: TGLayout.h:57
TGPack::HandleSplitterResize
void HandleSplitterResize(Int_t delta)
Handle resize events from splitters.
Definition: TGPack.cxx:527
Window_t
Handle_t Window_t
Definition: GuiTypes.h:28
UInt_t
unsigned int UInt_t
Definition: RtypesCore.h:46
y
Double_t y[n]
Definition: legend1.C:17
TGPack::CheckSplitterVisibility
void CheckSplitterVisibility()
Check if splitter of first visible frame is hidden.
Definition: TGPack.cxx:105
TGPack::ResizeExistingFrames
void ResizeExistingFrames()
Resize (shrink or expand) existing frames by amount in total.
Definition: TGPack.cxx:138
TGSplitter
Definition: TGSplitter.h:29
TGPack::RefitFramesToPack
void RefitFramesToPack()
Refit existing frames to pack size.
Definition: TGPack.cxx:190
TGFrameElementPack::operator=
TGFrameElementPack & operator=(const TGFrameElementPack &)
TGFrameElementPack
Definition: TGPack.h:21
TGPack::RemoveFrameInternal
void RemoveFrameInternal(TGFrame *f)
Remove frame f.
Definition: TGPack.cxx:294
f1
TF1 * f1
Definition: legend1.C:11
TGPack::operator=
TGPack & operator=(const TGPack &)
TGPack::~TGPack
virtual ~TGPack()
Destructor.
Definition: TGPack.cxx:62
ClassDef
#define ClassDef(name, id)
Definition: Rtypes.h:325
TGPack::RemoveFrame
virtual void RemoveFrame(TGFrame *f)
Remove frame f and refit existing frames to pack size.
Definition: TGPack.cxx:336
TGPack::FindFrames
void FindFrames(TGFrame *splitter, TGFrameElementPack *&f0, TGFrameElementPack *&f1) const
Find frames around splitter and return them f0 (previous) and f1 (next).
Definition: TGPack.cxx:207
TGPack::TGPack
TGPack(const TGPack &)
TGFrameElement
Definition: TGLayout.h:112
TGPack::ShowFrame
virtual void ShowFrame(TGFrame *f)
Show sub frame.
Definition: TGPack.cxx:363
TGPack::fSplitterLen
Int_t fSplitterLen
Definition: TGPack.h:48
TGPack::GetLength
Int_t GetLength() const
Definition: TGPack.h:56
TGCompositeFrame
Definition: TGFrame.h:324
splitter
REAL splitter
Definition: triangle.c:616
TGClient
Definition: TGClient.h:46
TGPack::Dump
virtual void Dump() const
Print sub frame info.
Definition: TGPack.cxx:345
int