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 /**************************************************************************/
33 TObject* RenderElement::GetObject(Exc_t eh)
35 TObject* obj = dynamic_cast<TObject*>(this);
37 throw(eh + "not a TObject.");
41 /**************************************************************************/
43 TGListTreeItem* RenderElement::AddIntoListTree(TGListTree* ltree,
44 TGListTreeItem* parent)
46 static const Exc_t eH("RenderElement::AddIntoListTree ");
48 TObject* tobj = GetObject(eH);
49 Bool_t colorp = fMainColorPtr != 0;
50 TGListTreeItem* item = ltree->AddItem(parent, tobj->GetName(), this,
52 item->CheckItem(GetRnrElement());
53 if(colorp) item->SetColor(GetMainColor());
54 item->SetTipText(tobj->GetTitle());
56 fItems.insert(ListTreeInfo(ltree, item));
61 /**************************************************************************/
63 void RenderElement::FullUpdate()
65 for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
66 // Setup name and title/tooltip? Need update calls from setname/title as well.
67 i->fItem->CheckItem(fRnrElement);
68 i->fItem->SetColor(GetMainColor());
71 gReve->NotifyBrowser();
74 /**************************************************************************/
76 void RenderElement::SpawnEditor()
78 // Here spawn a sub-class of TGedFrame with special UpdateMethod.
79 gReve->EditRenderElement(this);
82 void RenderElement::ExportToCINT(Text_t* var_name)
84 static const Exc_t eH("RenderElement::ExportToCINT ");
86 TObject* obj = GetObject(eH);
87 const char* cname = obj->IsA()->GetName();
88 gROOT->ProcessLine(Form("%s* %s = (%s*) %p;", cname, var_name, cname, obj));
91 /**************************************************************************/
93 void RenderElement::DumpSourceObject()
95 TObject* o = GetSourceObject();
97 printf("Source object not set.\n");
103 void RenderElement::InspectSourceObject()
105 TObject* o = GetSourceObject();
107 printf("Source object not set.\n");
113 /**************************************************************************/
115 void RenderElement::SetRnrElement(Bool_t rnr)
117 if(rnr != fRnrElement) {
123 /**************************************************************************/
125 void RenderElement::SetMainColor(Color_t color)
128 *fMainColorPtr = color;
133 void RenderElement::SetMainColorByPixel(Pixel_t pixel)
135 SetMainColor(Color_t(TColor::GetColor(pixel)));
138 /**************************************************************************/
139 /**************************************************************************/
141 ClassImp(RenderElementObjPtr)
143 RenderElementObjPtr::RenderElementObjPtr(TObject* obj) :
148 RenderElementObjPtr::RenderElementObjPtr(TObject* obj, Color_t& mainColor) :
149 RenderElement(mainColor),
153 RenderElementObjPtr::~RenderElementObjPtr()
158 /**************************************************************************/
160 TObject* RenderElementObjPtr::GetObject(Reve::Exc_t eh)
163 throw(eh + "fObject not set.");
167 void RenderElementObjPtr::SetRnrElement(Bool_t rnr)
169 if(rnr != fRnrElement) {
172 gReve->GetCC()->GetListOfPrimitives()->Add(fObject);
174 gReve->GetCC()->GetListOfPrimitives()->Remove(fObject);
180 /**************************************************************************/
181 /**************************************************************************/
183 ClassImp(RenderElementListBase)
185 Int_t RenderElementListBase::ExpandIntoListTree(TGListTree* ltree,
186 TGListTreeItem* parent)
188 // Populates parent with elements.
189 // parent must be an already existing representation of *this*.
190 // Returns number of inserted elements.
191 // If parent already has children, it does nothing.
193 // RnrEl can be inserted in a list-tree several times, thus we can not
194 // search through fItems to get parent here.
195 // Anyhow, it is probably known as it must have been selected by the user.
197 if(parent->GetFirstChild() != 0)
200 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i) {
201 (*i)->AddIntoListTree(ltree, parent);
207 /**************************************************************************/
209 void RenderElementListBase::EnableListElements()
211 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i)
212 (*i)->SetRnrElement(true);
215 void RenderElementListBase::DisableListElements()
217 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i)
218 (*i)->SetRnrElement(false);
221 /**************************************************************************/
223 void RenderElementListBase::SetMainColor(Color_t col)
225 Color_t oldcol = GetMainColor();
226 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i) {
227 if((*i)->GetMainColor() == oldcol) (*i)->SetMainColor(col);
229 RenderElement::SetMainColor(col);
232 void RenderElementListBase::SetMainColor(Pixel_t pixel)
234 // This one needed for proper calling via CINT (signals).
236 SetMainColor(Color_t(TColor::GetColor(pixel)));
239 /**************************************************************************/
241 void RenderElementListBase::PaintElements(Option_t* option)
244 for(lpRE_i i=fList.begin(); i!=fList.end(); ++i) {
245 if((*i)->GetRnrElement())
246 (*i)->GetObject()->Paint(option);
251 /**************************************************************************/
252 /**************************************************************************/
254 ClassImp(RenderElementList)