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() <<
")";