144   for (i = 0; i < 
fNrows; ++i) 
fRow[i].fDefSize = 0;
 
  145   for (i = 0; i < 
fNcols; ++i) 
fCol[i].fDefSize = 0;
 
  157      if (ptr->
fState == 0) 
continue;
 
  161         Error(
"FindRowColSizesSinglyAttached", 
"didn't get TGTableLayoutHints from %s, layout = 0x%lx",
 
  189   UInt_t max_width = 0, max_height = 0, col, row;
 
  192   for (col = 0; col < 
fNcols; ++col)
 
  195   for (row = 0; row < 
fNrows; ++row)
 
  199   for (col = 0; col < 
fNcols; ++col) 
fCol[col].fDefSize = max_width;
 
  200   for (row = 0; row < 
fNrows; ++row) 
fRow[row].fDefSize = max_height;
 
  212      if (ptr->
fState == 0) 
continue;
 
  216         Error(
"FindRowColSizesMultiplyAttached", 
"didn't get TGTableLayoutHints");
 
  221      if (left != right-1) {  
 
  223         for (col = left; col < right; ++col) 
width += 
fCol[col].fDefSize;
 
  229         if (
width < child_width) {
 
  231            for (col = left; col < right; ++col) {
 
  240      if (top != bottom-1) {  
 
  242         for (row = top; row < bottom; ++row) height += 
fRow[row].fDefSize;
 
  248         if (height < child_height) {
 
  249            height = child_height - height;
 
  250            for (row = top; row < bottom; ++row) {
 
  251               UInt_t extra = height / (bottom - row);
 
  269      UInt_t ind, nshrink=0, nexpand=0, cur_size=0;
 
  271      for (ind = 0; ind < nthings; ++ind)
 
  272         cur_size += thing[ind].fDefSize;
 
  274      if (cur_size < real_size) {
 
  275         for (ind = 0; ind < nthings; ++ind)
 
  276            if (thing[ind].fExpand) { ++ nexpand; 
break; }
 
  279            for (ind = 0; ind < nthings; ++ ind) {
 
  280               UInt_t extra = size / (nthings - ind);
 
  286      if (cur_size > real_size) {
 
  287         for (ind = 0; ind < nthings; ++ind)
 
  288            if (thing[ind].fShrink) { ++ nshrink; 
break; }
 
  291            for (ind = 0; ind < nthings; ++ ind) {
 
  292               UInt_t extra = size / (nthings - ind);
 
  299      UInt_t ind, nshrink=0, nexpand=0, size=0;
 
  300      for (ind = 0; ind < nthings; ++ind) {
 
  302         if (thing[ind].fExpand) ++ nexpand;
 
  303         if (thing[ind].fShrink) ++ nshrink;
 
  307      if ((size < real_size) && (nexpand >= 1)) {
 
  308         size = real_size - size;
 
  309         for (ind = 0; ind < nthings; ++ind) {
 
  310            if (thing[ind].fExpand) {
 
  311               UInt_t extra = size / nexpand;
 
  320      if (size > real_size) {
 
  321         UInt_t total_nshrink = nshrink;
 
  322         UInt_t extra = size - real_size;
 
  323         while (total_nshrink > 0 && extra > 0) {
 
  324            nshrink = total_nshrink;
 
  325            for (ind = 0; ind < nthings; ++ind)
 
  326               if (thing[ind].fShrink) {
 
  331                  if (thing[ind].fRealSize < 2) {
 
  363   for (col = 0; col < 
fNcols; ++col) {
 
  372   for (row = 0; row < 
fNrows; ++row) {
 
  388         Error(
"SetRowColSizesInit", 
"didn't get TGTableLayoutHints");
 
  417         Error(
"SetRowColSizesInit", 
"didn't get TGTableLayoutHints");
 
  425      if (left != right - 1) {
 
  426         for (col = left; col < right; ++col) 
fCol[col].fEmpty = 
kFALSE;
 
  429            for (col = left; col < right; ++col)
 
  430               if (
fCol[col].fExpand) { has_expand = 
kTRUE; 
break; }
 
  432               for (col = left; col < right; ++col)
 
  436            for (col = left; col < right; ++col)
 
  437               if (!
fCol[col].fShrink) { has_shrink = 
kFALSE; 
break;}
 
  439               for (col = left; col < right; ++col)
 
  447      if (top != bottom - 1) {
 
  448         for (row = top; row < bottom; ++row) 
fRow[row].fEmpty = 
kFALSE;
 
  451            for (row = top; row < bottom; ++row)
 
  452               if (
fRow[row].fExpand) { has_expand = 
kTRUE; 
break; }
 
  454               for (row = top; row < bottom; ++row)
 
  458            for (row = top; row < bottom; ++row)
 
  459               if (!
fRow[row].fShrink) { has_shrink = 
kFALSE; 
break;}
 
  461               for (row = top; row < bottom; ++row)
 
  468   for (col = 0; col < 
fNcols; ++col) {
 
  469      if (
fCol[col].fEmpty) {
 
  477   for (row = 0; row < 
fNrows; ++row) {
 
  478      if (
fRow[row].fEmpty) {
 
  500         Error(
"CheckSanity", 
"didn't get TGTableLayoutHints");
 
  511         Error(
"CheckSanity", 
"AttachLeft == AttachRight");
 
  515         Error(
"CheckSanity", 
"AttachLeft > AttachRight");
 
  519         Error(
"CheckSanity", 
"AttachLeft illegal value: %u", left);
 
  521      if (right < 1 || right > 
fNcols) {
 
  523         Error(
"CheckSanity", 
"AttachRight illegal value: %u", right);
 
  528         Error(
"CheckSanity", 
"AttachTop == AttachBottom");
 
  532         Error(
"CheckSanity", 
"AttachTop > AttachBottom");
 
  536         Error(
"CheckSanity", 
"AttachTop illegal value: %u", top);
 
  538      if (bottom < 1 || bottom > 
fNrows) {
 
  540         Error(
"CheckSanity", 
"AttachBottom illegal value: %u", bottom);
 
  568         Error(
"TGTableLayout::Layout", 
"didn't get TGTableLayoutHints");
 
  580      UInt_t col, cell_x = border_width + left*
fSep;
 
  581      for (col = 0; col < left; ++col) cell_x += 
fCol[col].fRealSize;
 
  584      for (row = 0; row < top; ++row) cell_y += 
fRow[row].fRealSize;
 
  587      for (col=left; col < right; ++col)
 
  588         cell_width += 
fCol[col].fRealSize;
 
  591      for (row=top; row < bottom; ++row)
 
  592         cell_height += 
fRow[row].fRealSize;
 
  602         ww = cell_width  - pad_left - pad_right;
 
  606         hh = cell_height - pad_top - pad_bottom;
 
  613         xx = cell_x + pad_left;
 
  615         xx = cell_x + cell_width - pad_right - ww;
 
  617         xx = cell_x + cell_width/2 - ww/2; 
 
  619         xx = cell_x + pad_left;
 
  623         yy = cell_y + pad_top;
 
  625         yy = cell_y + cell_height - pad_bottom - hh;
 
  627         yy = cell_y + cell_height/2 - hh/2; 
 
  629         yy = cell_y + pad_top;
 
  678      if (hints.
Length() == 0) hints  = 
"kLHintsLeft";
 
  679      else                     hints += 
" | kLHintsLeft";
 
  682      if  (hints.
Length() == 0) hints  = 
"kLHintsCenterX";
 
  683      else                     hints += 
" | kLHintsCenterX";
 
  686      if (hints.
Length() == 0) hints  = 
"kLHintsRight";
 
  687      else                     hints += 
" | kLHintsRight";
 
  690      if (hints.
Length() == 0) hints  = 
"kLHintsTop";
 
  691      else                     hints += 
" | kLHintsTop";
 
  694      if (hints.
Length() == 0) hints  = 
"kLHintsCenterY";
 
  695      else                     hints += 
" | kLHintsCenterY";
 
  698      if (hints.
Length() == 0) hints  = 
"kLHintsBottom";
 
  699      else                     hints += 
" | kLHintsBottom";
 
  702      if (hints.
Length() == 0) hints  = 
"kLHintsExpandX";
 
  703      else                     hints += 
" | kLHintsExpandX";
 
  706      if (hints.
Length() == 0) hints  = 
"kLHintsExpandY";
 
  707      else                     hints += 
" | kLHintsExpandY";
 
  710      if (hints.
Length() == 0) hints  = 
"kLHintsShrinkX";
 
  711      else                     hints += 
" | kLHintsShrinkX";
 
  714      if (hints.
Length() == 0) hints  = 
"kLHintsShrinkY";
 
  715      else                     hints += 
" | kLHintsShrinkY";
 
  718      if (hints.
Length() == 0) hints  = 
"kLHintsFillX";
 
  719      else                     hints += 
" | kLHintsFillX";
 
  722      if (hints.
Length() == 0) hints  = 
"kLHintsFillY";
 
  723      else                     hints += 
" | kLHintsFillY";
 
include TDocParser_001 C image html pict1_TDocParser_001 png width
virtual TList * GetList() const
virtual TGDimension GetDefaultSize() const
std::cout << fWidth << "x" << fHeight << std::endl;
Int_t GetBorderWidth() const
virtual UInt_t GetDefaultWidth() const
virtual UInt_t GetDefaultHeight() const
TGDimension GetSize() const
virtual UInt_t GetOptions() const
virtual void MoveResize(Int_t x, Int_t y, UInt_t w=0, UInt_t h=0)
Move and/or resize the frame.
Int_t GetPadRight() const
Int_t GetPadBottom() const
ULong_t GetLayoutHints() const
virtual void SavePrimitive(std::ostream &out, Option_t *="")
Save a primitive as a C++ statement(s) on output stream "out".
UInt_t GetAttachLeft() const
UInt_t GetAttachTop() const
UInt_t GetAttachBottom() const
UInt_t GetAttachRight() const
virtual TGDimension GetDefaultSize() const
Return default dimension of the table layout.
void FindRowColSizesMultiplyAttached()
Checks any children which span multiple col/rows.
void FindRowColSizesHomogeneous()
If the table is homogeneous make sure all col/rows are same size as biggest col/row.
void SetRowColSizes()
This gets the new sizes needed to fit the table to the parent frame.
virtual void SavePrimitive(std::ostream &out, Option_t *="")
Save a primitive as a C++ statement(s) on output stream "out".
virtual void Layout()
Make a table layout of all frames in the list.
static void SetRowColResize(UInt_t real_size, UInt_t nthings, TableData_t *thing, Bool_t homogeneous)
If main frame is bigger or smaller than all children, expand/shrink to fill.
void FindRowColSizesSinglyAttached()
Determine the size of rows/cols needed for singly attached children.
void FindRowColSizesInit()
Initialize values needed to determine the size of rows and columns.
TGTableLayout(const TGTableLayout &)
void CheckSanity()
Sanity check various values.
void FindRowColSizes()
Find the sizes of rows and columns needed to statisfy children's layout policies.
void SetRowColSizesInit()
Initialize rows/cols.
virtual ~TGTableLayout()
TGTableLayout constructor.
virtual const char * GetName() const
Return unique name, used in SavePrimitive methods.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
int main(int argc, char **argv)
Short_t Max(Short_t a, Short_t b)