105 ClassImp(TGXYLayout);
 
  106 ClassImp(TGXYLayoutHints);
 
  115 TGXYLayoutHints::TGXYLayoutHints(Double_t x, Double_t y, Double_t w, Double_t h,
 
  117    : TGLayoutHints(kLHintsNormal, 0,0,0,0)
 
  129 void TGXYLayoutHints::SavePrimitive(std::ostream &out, Option_t * )
 
  132    if (fFlag & kLRubberX) {
 
  133       if (flag.Length() == 0)  flag  = 
"TGXYLayoutHints::kLRubberX";
 
  134       else                     flag += 
" | TGXYLayoutHints::kLRubberX";
 
  136    if (fFlag & kLRubberY) {
 
  137       if  (flag.Length() == 0) flag  = 
"TGXYLayoutHints::kLRubberY";
 
  138       else                      flag += 
" | TGXYLayoutHints::kLRubberY";
 
  140    if (fFlag & kLRubberW) {
 
  141       if (flag.Length() == 0) flag  = 
"TGXYLayoutHints::kLRubberW";
 
  142       else                     flag += 
" | TGXYLayoutHints::kLRubberW";
 
  144    if (fFlag & kLRubberH) {
 
  145       if (flag.Length() == 0) flag  = 
"TGXYLayoutHints::kLRubberH";
 
  146       else                     flag += 
" | TGXYLayoutHints::kLRubberH";
 
  149    out << 
", new TGXYLayoutHints(" << GetX() << 
", " << GetY() << 
", " 
  150        << GetW() << 
", " << GetH();
 
  155       out << 
", " << flag << 
")";
 
  162 TGXYLayout::TGXYLayout(TGCompositeFrame *main)
 
  164    UInt_t  width, height;
 
  168    fList = main->GetList();
 
  170    fFirstWidth = fFirstHeight = 0;
 
  172    FontStruct_t fs = TGLabel::GetDefaultFontStruct();
 
  175    fTWidth = gVirtualX->TextWidth(fs, 
"1234567890", 10) / 10;
 
  176    gVirtualX->GetFontProperties(fs, fTHeight, dummy);
 
  181    width  = main->GetWidth() * fTWidth;
 
  182    height = main->GetHeight() * fTHeight;
 
  184    main->Resize(width, height);
 
  190 TGXYLayout::TGXYLayout(
const TGXYLayout& xyl) :
 
  191   TGLayoutManager(xyl),
 
  195   fFirstWidth(xyl.fFirstWidth),
 
  196   fFirstHeight(xyl.fFirstHeight),
 
  197   fTWidth(xyl.fTWidth),
 
  198   fTHeight(xyl.fTHeight)
 
  205 TGXYLayout& TGXYLayout::operator=(
const TGXYLayout& xyl)
 
  208       TGLayoutManager::operator=(xyl);
 
  212       fFirstWidth=xyl.fFirstWidth;
 
  213       fFirstHeight=xyl.fFirstHeight;
 
  215       fTHeight=xyl.fTHeight;
 
  223 void TGXYLayout::Layout()
 
  226    TGXYLayoutHints  *layout;
 
  238       fFirstWidth   = fMain->GetWidth();
 
  239       fFirstHeight  = fMain->GetHeight();
 
  244    xFactor = (Double_t)fMain->GetWidth() / (Double_t)fFirstWidth;
 
  245    if (xFactor < 1.0) xFactor = 1.0;
 
  246    yFactor = (Double_t)fMain->GetHeight() / (Double_t)fFirstHeight;
 
  247    if (yFactor < 1.0) yFactor = 1.0;
 
  252    while ((ptr = (TGFrameElement *) next()))  {
 
  253       if (ptr->fState & kIsVisible) {
 
  254          layout = (TGXYLayoutHints*)ptr->fLayout;
 
  258          temp = layout->GetX() * fTWidth ;
 
  259          if (layout->GetFlag() & TGXYLayoutHints::kLRubberX)
 
  261          newX = (Int_t)(temp + 0.5);
 
  263          temp = layout->GetY() * fTHeight;
 
  264          if (layout->GetFlag() & TGXYLayoutHints::kLRubberY)
 
  266          newY = (Int_t)(temp + 0.5);
 
  268          temp = layout->GetW() * fTWidth;
 
  269          if (layout->GetFlag() & TGXYLayoutHints::kLRubberW)
 
  271          newW = (UInt_t)(temp + 0.5);
 
  273          temp = layout->GetH() * fTHeight;
 
  274          if (layout->GetFlag() & TGXYLayoutHints::kLRubberH)
 
  276          newH = (UInt_t)(temp + 0.5);
 
  277          ptr->fFrame->MoveResize(newX, newY, newW, newH);
 
  278          ptr->fFrame->Layout();
 
  286 TGDimension TGXYLayout::GetDefaultSize()
 const 
  288    TGDimension size(fFirstWidth, fFirstHeight);
 
  296 void TGXYLayout::SavePrimitive(std::ostream &out, Option_t * )
 
  298    out << 
"new TGXYLayout(" << fMain->GetName() << 
")";