45 TWbox::TWbox(Double_t x1, Double_t y1,Double_t x2, Double_t y2,
46 Color_t color ,Short_t bordersize ,Short_t bordermode)
49 fBorderSize = bordersize;
50 fBorderMode = bordermode;
58 TWbox::TWbox(
const TWbox &wbox) : TBox(wbox)
60 wbox.TWbox::Copy(*
this);
66 TWbox &TWbox::operator=(
const TWbox &src)
68 src.TWbox::Copy(*
this);
75 void TWbox::Copy(TObject &obj)
const
78 ((TWbox&)obj).fBorderSize = fBorderSize;
79 ((TWbox&)obj).fBorderMode = fBorderMode;
85 void TWbox::Draw(Option_t *option)
93 void TWbox::DrawWbox(Double_t x1, Double_t y1,Double_t x2, Double_t y2,
94 Color_t color ,Short_t bordersize ,Short_t bordermode)
96 TWbox *newwbox =
new TWbox(x1,y1,x2,y2,color,bordersize,bordermode);
97 newwbox->SetBit(kCanDelete);
106 void TWbox::ExecuteEvent(Int_t event, Int_t px, Int_t py)
108 TBox::ExecuteEvent(event, px, py);
114 void TWbox::Paint(Option_t *)
116 PaintWbox(fX1, fY1, fX2, fY2, GetFillColor(), fBorderSize, fBorderMode);
122 void TWbox::PaintWbox(Double_t x1, Double_t y1, Double_t x2, Double_t y2,
123 Color_t color, Short_t bordersize, Short_t bordermode)
126 TBox::PaintBox(x1, y1, x2, y2);
129 if (!IsTransparent())
130 PaintFrame(x1, y1, x2, y2, color, bordersize, bordermode, kTRUE);
136 void TWbox::PaintFrame(Double_t x1, Double_t y1,Double_t x2, Double_t y2,
137 Color_t color, Short_t bordersize, Short_t bordermode,
140 if (bordermode == 0)
return;
141 if (bordersize <= 0) bordersize = 2;
143 Short_t pxl,pyl,pxt,pyt,px1,py1,px2,py2;
144 Double_t xl, xt, yl, yt;
147 px1 = gPad->XtoPixel(x1); py1 = gPad->YtoPixel(y1);
148 px2 = gPad->XtoPixel(x2); py2 = gPad->YtoPixel(y2);
149 if (px1 < px2) {pxl = px1; pxt = px2; xl = x1; xt = x2; }
150 else {pxl = px2; pxt = px1; xl = x2; xt = x1;}
151 if (py1 > py2) {pyl = py1; pyt = py2; yl = y1; yt = y2;}
152 else {pyl = py2; pyt = py1; yl = y2; yt = y1;}
154 if (!gPad->IsBatch()) {
158 Color_t oldcolor = GetFillColor();
163 frame[0].fX = pxl; frame[0].fY = pyl;
164 frame[1].fX = pxl + bordersize; frame[1].fY = pyl - bordersize;
165 frame[2].fX = frame[1].fX; frame[2].fY = pyt + bordersize;
166 frame[3].fX = pxt - bordersize; frame[3].fY = frame[2].fY;
167 frame[4].fX = pxt; frame[4].fY = pyt;
168 frame[5].fX = pxl; frame[5].fY = pyt;
169 frame[6].fX = pxl; frame[6].fY = pyl;
171 if (bordermode == -1) gVirtualX->SetFillColor(GetDarkColor());
172 else gVirtualX->SetFillColor(GetLightColor());
173 gVirtualX->DrawFillArea(7, frame);
176 frame[0].fX = pxl; frame[0].fY = pyl;
177 frame[1].fX = pxl + bordersize; frame[1].fY = pyl - bordersize;
178 frame[2].fX = pxt - bordersize; frame[2].fY = frame[1].fY;
179 frame[3].fX = frame[2].fX; frame[3].fY = pyt + bordersize;
180 frame[4].fX = pxt; frame[4].fY = pyt;
181 frame[5].fX = pxt; frame[5].fY = pyl;
182 frame[6].fX = pxl; frame[6].fY = pyl;
184 if (bordermode == -1) gVirtualX->SetFillColor(TColor::GetColorBright(GetFillColor()));
185 else gVirtualX->SetFillColor(TColor::GetColorDark(GetFillColor()));
186 gVirtualX->DrawFillArea(7, frame);
188 gVirtualX->SetFillColor(-1);
189 SetFillColor(oldcolor);
198 gPad->PaintBorderPS(xl, yl, xt, yt, bordermode, bordersize,
199 GetDarkColor(), GetLightColor());
205 void TWbox::SavePrimitive(std::ostream &out, Option_t * )
207 if (gROOT->ClassSaved(TWbox::Class())) {
212 out<<
"wbox = new TWbox("<<fX1<<
","<<fY1<<
","<<fX2<<
","<<fY2<<
");"<<std::endl;
214 SaveFillAttributes(out,
"wbox",0,1001);
215 SaveLineAttributes(out,
"wbox",1,1,1);
217 out<<
" wbox->Draw();"<<std::endl;