Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TGPack.h
Go to the documentation of this file.
1// @(#)root/eve:$Id$
2// Author: Matevz Tadel 2007
3
4/*************************************************************************
5 * Copyright (C) 1995-2021, 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
18class TGSplitter;
19
20
22{
23private:
26
27public:
28 Float_t fWeight; ///< relative weight
29 TGFrameElementPack* fSplitFE; ///<! cached variable for optimisation
30
31 TGFrameElementPack(TGFrame *frame, TGLayoutHints* lh = nullptr, Float_t weight = 1):
32 TGFrameElement(frame, lh), fWeight(weight), fSplitFE(nullptr) { }
33
34 ClassDefOverride(TGFrameElementPack, 0); // Class used in TGPack.
35};
36
37//==============================================================================
38
40{
41private:
42 TGPack(const TGPack&) = delete;
43 TGPack& operator=(const TGPack&) = delete;
44
45protected:
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); }
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
66 void RefitFramesToPack();
67
68 void AddFrameInternal(TGFrame *f, TGLayoutHints* l = nullptr, Float_t weight = 1);
70
71public:
72 TGPack(const TGWindow *p = nullptr, UInt_t w = 1, UInt_t h = 1, UInt_t options = 0,
74 TGPack(TGClient *c, Window_t id, const TGWindow *parent = nullptr);
75 ~TGPack() override;
76
78 void AddFrame(TGFrame *f, TGLayoutHints* l = nullptr) override;
79
80 virtual void DeleteFrame(TGFrame *f);
81 void RemoveFrame(TGFrame *f) override;
82 void ShowFrame(TGFrame *f) override;
83 void HideFrame(TGFrame *f) override;
84
86 void Resize(UInt_t w = 0, UInt_t h = 0) override;
87
89 void MapSubwindows() override;
90
91 void MoveResize(Int_t x, Int_t y, UInt_t w = 0, UInt_t h = 0) override;
92 void Layout() override;
93
94 void Dump() const override;
95
96 void EqualizeFrames();
98 void HandleSplitterResize(Int_t delta);
99
100 // ----------------------------------------------------------------
101
102 Bool_t GetVertical() const { return fVertical; }
103 void SetVertical(Bool_t x);
104
105 // For now assume this is always true. Length of splitter = 4 pixels.
108
109 ClassDefOverride(TGPack, 0); // Horizontal or vertical stack of frames.
110};
111
112#endif
ULong_t Pixel_t
Pixel value.
Definition GuiTypes.h:41
Handle_t Window_t
Window handle.
Definition GuiTypes.h:29
#define f(i)
Definition RSha256.hxx:104
#define c(i)
Definition RSha256.hxx:101
#define h(i)
Definition RSha256.hxx:106
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
Definition RtypesCore.h:60
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
float Float_t
Float 4 bytes (float).
Definition RtypesCore.h:71
#define ClassDefOverride(name, id)
Definition Rtypes.h:348
Window client.
Definition TGClient.h:37
void MapSubwindows() override
Map all sub windows that are part of the composite frame.
Definition TGFrame.cxx:1156
TGCompositeFrame(const TGCompositeFrame &)=delete
Float_t fWeight
relative weight
Definition TGPack.h:28
TGFrameElementPack * fSplitFE
! cached variable for optimisation
Definition TGPack.h:29
TGFrameElementPack(TGFrame *frame, TGLayoutHints *lh=nullptr, Float_t weight=1)
Definition TGPack.h:31
TGFrameElementPack & operator=(const TGFrameElementPack &)=delete
TGFrameElementPack(const TGFrameElementPack &)=delete
TGFrameElement(const TGFrameElement &)
A subclasses of TGWindow, and is used as base class for some simple widgets (buttons,...
Definition TGFrame.h:80
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
Definition TGFrame.cxx:597
TGFrame(const TGFrame &)=delete
static Pixel_t GetDefaultFrameBackground()
Get default frame background.
Definition TGFrame.cxx:675
This class describes layout hints used by the layout classes.
Definition TGLayout.h:50
Bool_t fVertical
Definition TGPack.h:46
void MapSubwindows() override
Virtual method of TGcompositeFrame.
Definition TGPack.cxx:406
void SetUseSplitters(Bool_t x)
Definition TGPack.h:107
void RemoveFrameInternal(TGFrame *f)
Remove frame f.
Definition TGPack.cxx:283
void ResizeExistingFrames()
Resize (shrink or expand) existing frames by amount in total.
Definition TGPack.cxx:137
void MoveResize(Int_t x, Int_t y, UInt_t w=0, UInt_t h=0) override
Move and resize the pack.
Definition TGPack.cxx:447
Int_t GetAvailableLength() const
Return length of entire frame without splitters.
Definition TGPack.cxx:75
void Dump() const override
Print sub frame info.
Definition TGPack.cxx:332
Int_t fSplitterLen
Definition TGPack.h:48
virtual void DeleteFrame(TGFrame *f)
Remove frame f and refit existing frames to pack size.
Definition TGPack.cxx:312
Int_t GetFrameLength(const TGFrame *f) const
Definition TGPack.h:55
virtual void AddFrameWithWeight(TGFrame *f, TGLayoutHints *l, Float_t w)
Add frame f at the end with given weight.
Definition TGPack.cxx:264
void RefitFramesToPack()
Refit existing frames to pack size.
Definition TGPack.cxx:184
TGPack & operator=(const TGPack &)=delete
void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr) override
Add frame f at the end with default weight.
Definition TGPack.cxx:274
Bool_t GetUseSplitters() const
Definition TGPack.h:106
Int_t GetLength() const
Definition TGPack.h:56
~TGPack() override
Destructor.
Definition TGPack.cxx:66
void EqualizeFrames()
Refit existing frames so that their lengths are equal.
Definition TGPack.cxx:476
void HandleSplitterStart()
Called when splitter drag starts.
Definition TGPack.cxx:497
Float_t fWeightSum
total sum of sub frame weights
Definition TGPack.h:52
void RemoveFrame(TGFrame *f) override
Remove frame f and refit existing frames to pack size.
Definition TGPack.cxx:323
TGPack(const TGPack &)=delete
void AddFrameInternal(TGFrame *f, TGLayoutHints *l=nullptr, Float_t weight=1)
Add frame f at the end.
Definition TGPack.cxx:220
Bool_t fUseSplitters
Definition TGPack.h:47
void SetVertical(Bool_t x)
Sets the vertical flag and reformats the back to new stacking direction.
Definition TGPack.cxx:568
void HandleSplitterResize(Int_t delta)
Handle resize events from splitters.
Definition TGPack.cxx:505
void SetFrameLength(TGFrame *f, Int_t len)
Set pack-wise length of frame f.
Definition TGPack.cxx:86
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the pack.
Definition TGPack.cxx:431
void SetFramePosition(TGFrame *f, Int_t pos)
Set pack-wise position of frame f.
Definition TGPack.cxx:97
void CheckSplitterVisibility()
Check if splitter of first visible frame is hidden.
Definition TGPack.cxx:109
Int_t fNVisible
number of visible frames
Definition TGPack.h:53
void Layout() override
Reposition the frames so that they fit correctly.
Definition TGPack.cxx:457
Int_t fDragOverflow
!
Definition TGPack.h:50
void ShowFrame(TGFrame *f) override
Show sub frame.
Definition TGPack.cxx:349
void HideFrame(TGFrame *f) override
Hide sub frame.
Definition TGPack.cxx:377
void FindFrames(TGFrame *splitter, TGFrameElementPack *&f0, TGFrameElementPack *&f1) const
Find frames around splitter and return them f0 (previous) and f1 (next).
Definition TGPack.cxx:200
Bool_t GetVertical() const
Definition TGPack.h:102
A splitter allows the frames left and right or above and below of it to be resized.
Definition TGSplitter.h:19
ROOT GUI Window base class.
Definition TGWindow.h:23
Double_t y[n]
Definition legend1.C:17
Double_t x[n]
Definition legend1.C:17
TF1 * f1
Definition legend1.C:11
TLine l
Definition textangle.C:4