/usr/include/root/TGXYLayout.h is in libroot-gui-dev 5.34.14-1build1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 | // @(#)root/gui:$Id$
// Author: Reiner Rohlfs 24/03/2002
/*************************************************************************
* Copyright (C) 1995-2002, Rene Brun, Fons Rademakers and Reiner Rohlfs *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
//////////////////////////////////////////////////////////////////////////
// //
// TGXYLayout //
// //
// Is a layout manager where the position and the size of each widget //
// in the frame are defined by X / Y - coordinates. The coordinates //
// for each widget are defined by the TGXYLayoutHints. Therefore it //
// is not possible to share a layout hint for several widgets. //
// //
// The coordinates (X, Y) and the size (W, H) are defined in units //
// of the size of a typical character. Also the size of the //
// TGCompositeFrame for which a TGXYLayout manager is used has to be //
// defined in its constructor in units of the size of a character! //
// //
// It is not possible to use any other layout hint than the //
// TGXYLayoutHints for this layout manager! //
// //
// The rubberFlag in the constructor of the TGLXYLayoutHints defines //
// how the position and the size of a widget is recalculated if the //
// size of the frame is increased: //
// - kLRubberX: The X - position (left edge) is increased by the same //
// factor as the width of the frame increases. //
// - kLRubberY: The Y - position (upper edge) is increased by the same //
// factor as the height of the frame increases. //
// - kLRubberW: The width of the widget is increased by the same //
// factor as the width of the frame increases. //
// - kLRubberY: The height of the widget is increased by the same //
// factor as the height of the frame increases. //
// But the size never becomes smaller than defined by the //
// TGXYLayoutHints and the X and Y coordinates becomes never smaller //
// than defined by the layout hints. //
// //
// TGXYLayoutHints //
// //
// This layout hint must be used for the TGXYLouyout manager! //
// //
// //
// Example how to use this layout manager: //
// //
// TGMyFrame::TGMyFrame() //
// : TGMainFrame(gClient->GetRoot(), 30, 12) //
// // frame is 30 characters wide and 12 characters high //
// { //
// SetLayoutManager(new TGXYLayout(this)); //
// //
// // create a button of size 8 X 1.8 at position 20 / 1 //
// TGTextButton * button; //
// button = new TGTextButton(this, "&Apply", 1); //
// AddFrame(button, new TGXYLayoutHints(20, 1, 8, 1.8)); //
// //
// // create a listbox of size 18 X 10 at position 1 / 1. //
// // The height will increase if the frame height increases //
// TGListBox *listBox; //
// listBox = new TGListBox(this, 2); //
// AddFrame(listBox, new TGXYLayoutHints(1, 1, 18, 10, //
// TGXYLayoutHints::kLRubberX | //
// TGXYLayoutHints::kLRubberY | //
// TGXYLayoutHints::kLRubberH)); //
// . //
// . //
// . //
// } //
// //
// Normaly there is one layout hint per widget. Therefore these //
// can be deleted like in the following example in the desctuctor //
// of the frame: //
// //
// TGMyFrame::~TGMyFrame() //
// { //
// // Destructor, deletes all frames and their layout hints. //
// //
// // delete all frames and layout hints //
// Cleanup(); //
// } //
// //
//////////////////////////////////////////////////////////////////////////
#ifndef ROOT_TGXYLayout
#define ROOT_TGXYLayout
#ifndef ROOT_TGLayout
#include "TGLayout.h"
#endif
class TGXYLayoutHints : public TGLayoutHints {
protected:
Double_t fX; // x - position of widget
Double_t fY; // y - position of widget
Double_t fW; // width of widget
Double_t fH; // height of widget
UInt_t fFlag; // rubber flag
public:
enum ERubberFlag {
kLRubberX = BIT(0),
kLRubberY = BIT(1),
kLRubberW = BIT(2),
kLRubberH = BIT(3)
};
TGXYLayoutHints(Double_t x, Double_t y, Double_t w, Double_t h,
UInt_t rubberFlag = kLRubberX | kLRubberY);
Double_t GetX() const { return fX; };
Double_t GetY() const { return fY; };
Double_t GetW() const { return fW; };
Double_t GetH() const { return fH; };
UInt_t GetFlag() const { return fFlag; };
void SetX(Double_t x) { fX = x; }
void SetY(Double_t y) { fY = y; }
void SetW(Double_t w) { fW = w; }
void SetH(Double_t h) { fH = h; }
void SetFlag(UInt_t flag) { fFlag = flag; }
virtual void SavePrimitive(ostream &out, Option_t * = "");
ClassDef(TGXYLayoutHints,0) // Hits for the X / Y - layout manager
};
class TGXYLayout : public TGLayoutManager {
protected:
TList *fList; // list of frames to arrange
TGCompositeFrame *fMain; // container frame
Bool_t fFirst; // flag to determine the first call of Layout()
UInt_t fFirstWidth; // original width of the frame fMain
UInt_t fFirstHeight; // original height of the fram fMain
Int_t fTWidth; // text width of a default character "1234567890" / 10
Int_t fTHeight; // text height
TGXYLayout(const TGXYLayout&);
TGXYLayout& operator=(const TGXYLayout&);
public:
TGXYLayout(TGCompositeFrame *main);
virtual void Layout();
virtual TGDimension GetDefaultSize() const;
virtual void SavePrimitive(ostream &out, Option_t * = "");
void NewSize() { fFirst = kTRUE; }
ClassDef(TGXYLayout,0) // X / Y - layout manager
};
#endif
|