00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "TGo4WinCondPainter.h"
00017
00018 #include <iostream.h>
00019
00020 #include "TVirtualPad.h"
00021
00022 #include "TGo4WinCond.h"
00023 #include "TGo4WinCondView.h"
00024
00025 TGo4WinCondPainter::TGo4WinCondPainter(const Text_t * name, const Text_t * title)
00026 : TGo4ConditionPainter(name,title), fxBox(0)
00027 {
00028
00029 }
00030
00031 TGo4WinCondPainter::TGo4WinCondPainter(const Text_t * name)
00032 : TGo4ConditionPainter(name,"Go4 window condition"), fxBox(0)
00033 {
00034
00035 }
00036
00037 TGo4WinCondPainter::TGo4WinCondPainter()
00038 : TGo4ConditionPainter(), fxBox(0)
00039 {
00040
00041 }
00042
00043 TGo4WinCondPainter::~TGo4WinCondPainter()
00044 {
00045 UnPaintCondition();
00046 }
00047
00048
00049 void TGo4WinCondPainter::PaintCondition(Option_t* opt)
00050 {
00051 if(gPad==0) return;
00052
00053
00054 double xpmin=0;
00055 double xpmax=0;
00056 double ypmin=0;
00057 double ypmax=0;
00058 int dim=0;
00059 TGo4WinCond* wconny=dynamic_cast<TGo4WinCond*>(fxCondition);
00060 if(wconny && wconny->IsVisible())
00061 {
00062 wconny->GetValues(dim, xpmin, xpmax, ypmin, ypmax);
00063
00064
00065
00066
00067 if(xpmin>xpmax)
00068 {
00069 if(wconny->GetDimension()>1)
00070 wconny->SetValues(xpmax, xpmin, ypmin, ypmax );
00071 else
00072 wconny->SetValues(xpmax, xpmin);
00073 }
00074 if(ypmin>ypmax)
00075 {
00076 if(wconny->GetDimension()>1)
00077 wconny->SetValues(xpmin, xpmax, ypmax, ypmin );
00078 }
00079
00080
00081
00082
00083
00084
00085
00086
00087 #if __GO4ROOTVERSION__ < 40302
00088
00089 xpmin=gPad->XtoPad(xpmin);
00090 xpmax=gPad->XtoPad(xpmax);
00091 if(dim==1)
00092 {
00093 ypmin =gPad->GetUymin();
00094 ypmax =gPad->GetUymax();
00095 }
00096 else
00097 {
00098 ypmin=gPad->YtoPad(ypmin);
00099 ypmax=gPad->YtoPad(ypmax);
00100 }
00101
00102 #else
00103 if(dim==1)
00104 {
00105 ypmin=gPad->PadtoY(gPad->GetUymin());
00106 ypmax=gPad->PadtoY(gPad->GetUymax());
00107 }
00108 #endif //__GO4ROOTVERSION__ < 40302
00109
00110 if(fxBox==0 || gPad->GetListOfPrimitives()->FindObject(fxBox)==0)
00111
00112 {
00113 fxBox= new TGo4WinCondView(xpmin,ypmin,xpmax, ypmax);
00114 }
00115 else
00116 {
00117 fxBox->SetX1(xpmin);
00118 fxBox->SetY1(ypmin);
00119 fxBox->SetX2(xpmax);
00120 fxBox->SetY2(ypmax);
00121 }
00122 fxBox->SetCondition(wconny);
00123 if(!strcmp(opt,"fixstyle"))
00124 {
00125
00126
00127 fxBox->SetLineWidth(wconny->GetLineWidth());
00128 fxBox->SetLineColor(wconny->GetLineColor());
00129 fxBox->SetLineStyle(wconny->GetLineStyle());
00130 fxBox->SetFillColor(wconny->GetFillColor());
00131 fxBox->SetFillStyle(wconny->GetFillStyle());
00132 }
00133 if(gPad->GetListOfPrimitives()->FindObject(fxBox)==0)
00134 {
00135 fxBox->SetLineWidth(wconny->GetLineWidth());
00136 fxBox->SetLineColor(wconny->GetLineColor());
00137 fxBox->SetLineStyle(wconny->GetLineStyle());
00138 fxBox->SetFillColor(wconny->GetFillColor());
00139 fxBox->SetFillStyle(wconny->GetFillStyle());
00140 fxBox->AppendPad();
00141
00142 }
00143 fxBox->Paint();
00144
00145
00146 }
00147 else
00148 {
00149 UnPaintCondition();
00150 }
00151 }
00152
00153 void TGo4WinCondPainter::UnPaintCondition(Option_t* opt)
00154 {
00155 if(gPad==0) return;
00156
00157 if(gPad->GetListOfPrimitives()->Remove(fxBox)!=0)
00158 {
00159
00160 TString option=opt;
00161 if(option.Contains("reset"))
00162 {
00163
00164 delete fxBox;
00165 fxBox=0;
00166 }
00167 }
00168 }
00169
00170 ClassImp(TGo4WinCondPainter)
00171
00172
00173
00174
00175