3 #include "RenderElement.h"
4 #include "RGTopFrame.h"
8 #include <TGListTree.h>
14 //______________________________________________________________________
18 ClassImp(RenderElement)
20 RenderElement::RenderElement()
26 RenderElement::RenderElement(Color_t& main_color) : fMainColorPtr(&main_color)
31 RenderElement::~RenderElement()
33 for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
34 i->fTree->DeleteItem(i->fItem);
35 gClient->NeedRedraw(i->fTree);
39 /**************************************************************************/
41 TObject* RenderElement::GetObject(Exc_t eh)
43 TObject* obj = dynamic_cast<TObject*>(this);
45 throw(eh + "not a TObject.");
49 /**************************************************************************/
51 TGListTreeItem* RenderElement::AddIntoListTree(TGListTree* ltree,
52 TGListTreeItem* parent)
54 static const Exc_t eH("RenderElement::AddIntoListTree ");
56 TObject* tobj = GetObject(eH);
57 TGListTreeItem* item = ltree->AddItem(parent, tobj->GetName(), this,
59 item->CheckItem(GetRnrElement());
60 if(fMainColorPtr != 0) item->SetColor(GetMainColor());
61 item->SetTipText(tobj->GetTitle());
63 fItems.insert(ListTreeInfo(ltree, item));
68 /**************************************************************************/
70 void RenderElement::FullUpdate()
72 for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
73 // Setup name and title/tooltip? Need update calls from setname/title as well.
74 i->fItem->CheckItem(fRnrElement);
75 if(fMainColorPtr != 0) i->fItem->SetColor(GetMainColor());
78 gReve->NotifyBrowser();
81 /**************************************************************************/
83 void RenderElement::SpawnEditor()
85 // Here spawn a sub-class of TGedFrame with special UpdateMethod.
86 gReve->EditRenderElement(this);
89 void RenderElement::ExportToCINT(Text_t* var_name)
91 static const Exc_t eH("RenderElement::ExportToCINT ");
93 TObject* obj = GetObject(eH);
94 const char* cname = obj->IsA()->GetName();
95 gROOT->ProcessLine(Form("%s* %s = (%s*) %p;", cname, var_name, cname, obj));
98 /**************************************************************************/
100 void RenderElement::DumpSourceObject()
102 TObject* o = GetSourceObject();
104 printf("Source object not set.\n");
110 void RenderElement::InspectSourceObject()
112 TObject* o = GetSourceObject();
114 printf("Source object not set.\n");
120 /**************************************************************************/
122 void RenderElement::SetRnrElement(Bool_t rnr)
124 if(rnr != fRnrElement) {
130 /**************************************************************************/
132 void RenderElement::SetMainColor(Color_t color)
135 *fMainColorPtr = color;
140 void RenderElement::SetMainColorByPixel(Pixel_t pixel)
142 SetMainColor(Color_t(TColor::GetColor(pixel)));
145 /**************************************************************************/
146 /**************************************************************************/
148 ClassImp(RenderElementObjPtr)
150 RenderElementObjPtr::RenderElementObjPtr(TObject* obj) :
155 RenderElementObjPtr::RenderElementObjPtr(TObject* obj, Color_t& mainColor) :
156 RenderElement(mainColor),
160 RenderElementObjPtr::~RenderElementObjPtr()
165 /**************************************************************************/
167 TObject* RenderElementObjPtr::GetObject(Reve::Exc_t eh)
170 throw(eh + "fObject not set.");
174 void RenderElementObjPtr::SetRnrElement(Bool_t rnr)
176 if(rnr != fRnrElement) {
179 gReve->GetCC()->GetListOfPrimitives()->Add(fObject);
181 gReve->GetCC()->GetListOfPrimitives()->Remove(fObject);
187 /**************************************************************************/
188 /**************************************************************************/
190 ClassImp(RenderElementListBase)
192 Int_t RenderElementListBase::ExpandIntoListTree(TGListTree* ltree,
193 TGListTreeItem* parent)
195 // Populates parent with elements.
196 // parent must be an already existing representation of *this*.
197 // Returns number of inserted elements.
198 // If parent already has children, it does nothing.
200 // RnrEl can be inserted in a list-tree several times, thus we can not
201 // search through fItems to get parent here.
202 // Anyhow, it is probably known as it must have been selected by the user.
204 if(parent->GetFirstChild() != 0)
207 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i) {
208 (*i)->AddIntoListTree(ltree, parent);
214 /**************************************************************************/
216 void RenderElementListBase::EnableListElements()
218 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i)
219 (*i)->SetRnrElement(kTRUE);
222 void RenderElementListBase::DisableListElements()
224 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i)
225 (*i)->SetRnrElement(kFALSE);
228 /**************************************************************************/
230 void RenderElementListBase::SetMainColor(Color_t col)
232 Color_t oldcol = GetMainColor();
233 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i) {
234 if((*i)->GetMainColor() == oldcol) (*i)->SetMainColor(col);
236 RenderElement::SetMainColor(col);
239 void RenderElementListBase::SetMainColor(Pixel_t pixel)
241 // This one needed for proper calling via CINT (signals).
243 SetMainColor(Color_t(TColor::GetColor(pixel)));
246 /**************************************************************************/
248 void RenderElementListBase::PaintElements(Option_t* option)
251 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i) {
252 if((*i)->GetRnrElement())
253 (*i)->GetObject()->Paint(option);
258 /**************************************************************************/
259 /**************************************************************************/
261 ClassImp(RenderElementList)