]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/Reve/RenderElement.cxx
Add some class docs.
[u/mrichter/AliRoot.git] / EVE / Reve / RenderElement.cxx
index 23d64ffbe6476dfca3695206b8d5ec0114230e44..f228fbdac605c1380e12c002c74db0f89f0f9e3e 100644 (file)
@@ -13,7 +13,7 @@
 
 using namespace Reve;
 
-//______________________________________________________________________
+//______________________________________________________________________________
 // RenderElement
 //
 //
@@ -23,6 +23,7 @@ ClassImp(RenderElement)
 const TGPicture* RenderElement::fgRnrIcons[4] = { 0 };
 const TGPicture* RenderElement::fgListTreeIcons[8] = { 0 };
 
+//______________________________________________________________________________
 RenderElement::RenderElement() :
   fRnrSelf             (kTRUE),
   fRnrChildren         (kTRUE),
@@ -32,8 +33,11 @@ RenderElement::RenderElement() :
   fDestroyOnZeroRefCnt (kTRUE),
   fDenyDestroy         (0),
   fChildren            ()
-{}
+{
+  // Default contructor.
+}
 
+//______________________________________________________________________________
 RenderElement::RenderElement(Color_t& main_color) :
   fRnrSelf             (kTRUE),
   fRnrChildren         (kTRUE),
@@ -43,62 +47,83 @@ RenderElement::RenderElement(Color_t& main_color) :
   fDestroyOnZeroRefCnt (kTRUE),
   fDenyDestroy         (0),
   fChildren            ()
-{}
+{
+  // Constructor.
+}
 
+//______________________________________________________________________________
 RenderElement::~RenderElement()
 {
+  // Destructor.
+
   static const Exc_t _eh("RenderElement::RenderElement ");
 
   RemoveElements();
 
-  for(List_i p=fParents.begin(); p!=fParents.end(); ++p)
+  for (List_i p=fParents.begin(); p!=fParents.end(); ++p)
   {
     (*p)->RemoveElementLocal(this);
     (*p)->fChildren.remove(this);
   }
   fParents.clear();
 
-  for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
+  for (sLTI_i i=fItems.begin(); i!=fItems.end(); ++i)
     i->fTree->DeleteItem(i->fItem);
-  }
 }
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 void RenderElement::SetRnrElNameTitle(const Text_t* name, const Text_t* title)
 {
+  // Virtual function for setting of name and title of render element.
+  // Here we attempt to cast the assigned object into TNamed and call
+  // SetNameTitle() there.
+
   TNamed* named = dynamic_cast<TNamed*>(GetObject());
   if (named)
     named->SetNameTitle(name, title);
 }
 
-/**************************************************************************/
+//______________________________________________________________________________
 const Text_t* RenderElement::GetRnrElName() const
 {
+  // Virtual function for retrieveing name of the render-element.
+  // Here we attempt to cast the assigned object into TNamed and call
+  // GetName() there.
+
   TObject* named = dynamic_cast<TObject*>(GetObject());
-  return named ? named->GetName() : "<noo-nom>";
+  return named ? named->GetName() : "<no-name>";
 }
 
-/**************************************************************************/
+//______________________________________________________________________________
 const Text_t*  RenderElement::GetRnrElTitle() const
 {
+  // Virtual function for retrieveing title of the render-element.
+  // Here we attempt to cast the assigned object into TNamed and call
+  // GetTitle() there.
+
   TObject* named = dynamic_cast<TObject*>(GetObject());
-  return named ? named->GetTitle() : "<noo-tit>";
+  return named ? named->GetTitle() : "<no-title>";
 }
-/**************************************************************************/
 
+/******************************************************************************/
+
+//______________________________________________________________________________
 void RenderElement::AddParent(RenderElement* re)
 {
+  // Add re into the list parents.
   // Adding parent is subordinate to adding an element.
-  // Consider this an internal function.
+  // This is an internal function.
 
   fParents.push_back(re);
 }
 
 void RenderElement::RemoveParent(RenderElement* re)
 {
+  // Remove re from the list of parents.
   // Removing parent is subordinate to removing an element.
-  // Consider this an internal function.
+  // This is an internal function.
 
   static const Exc_t eH("RenderElement::RemoveParent ");
 
@@ -106,8 +131,14 @@ void RenderElement::RemoveParent(RenderElement* re)
   CheckReferenceCount(eH);
 }
 
+/******************************************************************************/
+
+//______________________________________________________________________________
 void RenderElement::CheckReferenceCount(const Reve::Exc_t& eh)
 {
+  // Check external references to this and eventually auto-destruct
+  // the render-element.
+
   if(fParents.empty()   &&  fItems.empty()         &&
      fDenyDestroy <= 0  &&  fDestroyOnZeroRefCnt)
   {
@@ -119,6 +150,7 @@ void RenderElement::CheckReferenceCount(const Reve::Exc_t& eh)
   }
 }
 
+//______________________________________________________________________________
 void RenderElement::CollectSceneParents(List_t& scenes)
 {
   // Collect all parents of class Reve::Scene. This is needed to
@@ -130,6 +162,7 @@ void RenderElement::CollectSceneParents(List_t& scenes)
     (*p)->CollectSceneParents(scenes);
 }
 
+//______________________________________________________________________________
 void RenderElement::CollectSceneParentsFromChildren(List_t& scenes, RenderElement* parent)
 {
   // Collect scene-parents from all children. This is needed to
@@ -138,21 +171,22 @@ void RenderElement::CollectSceneParentsFromChildren(List_t& scenes, RenderElemen
   // Argument parent specifies parent in traversed hierarchy for which we can
   // skip the upwards search.
 
-  for(List_i p=fParents.begin(); p!=fParents.end(); ++p)
+  for (List_i p=fParents.begin(); p!=fParents.end(); ++p)
   {
     if (*p != parent) (*p)->CollectSceneParents(scenes);
   }
 
-  for(List_i c=fChildren.begin(); c!=fChildren.end(); ++c)
+  for (List_i c=fChildren.begin(); c!=fChildren.end(); ++c)
   {
     (*c)->CollectSceneParentsFromChildren(scenes, this);
   }
 }
 
-/**************************************************************************/
+/******************************************************************************/
 // List-tree stuff
-/**************************************************************************/
+/******************************************************************************/
 
+//______________________________________________________________________________
 Int_t RenderElement::ExpandIntoListTree(TGListTree* ltree,
                                        TGListTreeItem* parent)
 {
@@ -165,16 +199,17 @@ Int_t RenderElement::ExpandIntoListTree(TGListTree* ltree,
   // search through fItems to get parent here.
   // Anyhow, it is probably known as it must have been selected by the user.
 
-  if(parent->GetFirstChild() != 0)
+  if (parent->GetFirstChild() != 0)
     return 0;
   Int_t n = 0;
-  for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
+  for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
     (*i)->AddIntoListTree(ltree, parent);
     ++n;
   }
   return n;
 }
 
+//______________________________________________________________________________
 Int_t RenderElement::DestroyListSubTree(TGListTree* ltree,
                                        TGListTreeItem* parent)
 {
@@ -190,8 +225,7 @@ Int_t RenderElement::DestroyListSubTree(TGListTree* ltree,
   return n;
 }
 
-/**************************************************************************/
-
+//______________________________________________________________________________
 TGListTreeItem* RenderElement::AddIntoListTree(TGListTree* ltree,
                                               TGListTreeItem* parent_lti)
 {
@@ -209,7 +243,7 @@ TGListTreeItem* RenderElement::AddIntoListTree(TGListTree* ltree,
   item->SetPictures(GetListTreeIcon(),GetListTreeIcon());
   item->CheckItem(fRnrSelf);
 
-  if(fMainColorPtr != 0) item->SetColor(GetMainColor());
+  if (fMainColorPtr != 0) item->SetColor(GetMainColor());
   item->SetTipText(tobj->GetTitle());
 
   fItems.insert(ListTreeInfo(ltree, item));
@@ -218,6 +252,7 @@ TGListTreeItem* RenderElement::AddIntoListTree(TGListTree* ltree,
   return item;
 }
 
+//______________________________________________________________________________
 TGListTreeItem* RenderElement::AddIntoListTree(TGListTree* ltree,
                                               RenderElement* parent)
 {
@@ -229,15 +264,16 @@ TGListTreeItem* RenderElement::AddIntoListTree(TGListTree* ltree,
   if (parent == 0) {
     lti = AddIntoListTree(ltree, (TGListTreeItem*) 0);
   } else {
-    for(sLTI_ri i = parent->fItems.rbegin(); i != parent->fItems.rend(); ++i)
+    for (sLTI_ri i = parent->fItems.rbegin(); i != parent->fItems.rend(); ++i)
     {
-      if(i->fTree == ltree)
+      if (i->fTree == ltree)
        lti = AddIntoListTree(ltree, i->fItem);
     }
   }
   return lti;
 }
 
+//______________________________________________________________________________
 TGListTreeItem* RenderElement::AddIntoListTrees(RenderElement* parent)
 {
   // Add this render element into all list-trees and all items
@@ -245,20 +281,21 @@ TGListTreeItem* RenderElement::AddIntoListTrees(RenderElement* parent)
   // register entry (but we use a set for that so it can be anything).
 
   TGListTreeItem* lti = 0;
-  for(sLTI_ri i = parent->fItems.rbegin(); i != parent->fItems.rend(); ++i)
+  for (sLTI_ri i = parent->fItems.rbegin(); i != parent->fItems.rend(); ++i)
   {
     lti = AddIntoListTree(i->fTree, i->fItem);
   }
   return lti;
 }
 
+//______________________________________________________________________________
 Bool_t RenderElement::RemoveFromListTree(TGListTree* ltree,
                                         TGListTreeItem* parent_lti)
 {
   static const Exc_t eH("RenderElement::RemoveFromListTree ");
 
   sLTI_i i = FindItem(ltree, parent_lti);
-  if(i != fItems.end()) {
+  if (i != fItems.end()) {
     DestroyListSubTree(ltree, i->fItem);
     ltree->DeleteItem(i->fItem);
     ltree->ClearViewPort();
@@ -270,6 +307,7 @@ Bool_t RenderElement::RemoveFromListTree(TGListTree* ltree,
   }
 }
 
+//______________________________________________________________________________
 Int_t RenderElement::RemoveFromListTrees(RenderElement* parent)
 {
   Int_t count = 0;
@@ -292,77 +330,91 @@ Int_t RenderElement::RemoveFromListTrees(RenderElement* parent)
   return count;
 }
 
-/**************************************************************************/
-
+//______________________________________________________________________________
 RenderElement::sLTI_i RenderElement::FindItem(TGListTree* ltree)
 {
-  for(sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
-    if(i->fTree == ltree)
+  for (sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
+    if (i->fTree == ltree)
       return i;
   return fItems.end();
 }
 
+//______________________________________________________________________________
 RenderElement::sLTI_i RenderElement::FindItem(TGListTree* ltree,
                                              TGListTreeItem* parent_lti)
 {
-  for(sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
-    if(i->fTree == ltree && i->fItem->GetParent() == parent_lti)
+  for (sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
+    if (i->fTree == ltree && i->fItem->GetParent() == parent_lti)
       return i;
   return fItems.end();
 }
 
+//______________________________________________________________________________
 TGListTreeItem* RenderElement::FindListTreeItem(TGListTree* ltree)
 {
-  for(sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
-    if(i->fTree == ltree)
+  for (sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
+    if (i->fTree == ltree)
       return i->fItem;
   return 0;
 }
 
+//______________________________________________________________________________
 TGListTreeItem* RenderElement::FindListTreeItem(TGListTree* ltree,
                                                TGListTreeItem* parent_lti)
 {
-  for(sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
-    if(i->fTree == ltree && i->fItem->GetParent() == parent_lti)
+  for (sLTI_i i = fItems.begin(); i != fItems.end(); ++i)
+    if (i->fTree == ltree && i->fItem->GetParent() == parent_lti)
       return i->fItem;
   return 0;
 }
 
-/**************************************************************************/
-
+//______________________________________________________________________________
 void RenderElement::UpdateItems()
 {
+  // Update list-tree-items representing this render-element.
+
   static const Exc_t eH("RenderElement::UpdateItems ");
 
   TObject* tobj = GetObject(eH);
 
-  for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
+  for (sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
     i->fItem->Rename(tobj->GetName());
     i->fItem->SetTipText(tobj->GetTitle());
     i->fItem->CheckItem(fRnrSelf);
-    if(fMainColorPtr != 0) i->fItem->SetColor(GetMainColor());
+    if (fMainColorPtr != 0) i->fItem->SetColor(GetMainColor());
     i->fTree->ClearViewPort();
   }
 }
 
-/**************************************************************************/
+/******************************************************************************/
 
+//______________________________________________________________________________
 TObject* RenderElement::GetObject(Exc_t eh) const
 {
+  // Get a TObject associated with this render-element.
+  // Most cases uses double-inheritance from RenderElement and TObject
+  // so we just do a dynamic cast here.
+  // If some RenderElement descendant implements a different scheme,
+  // this virtual method should be overriden accordingly.
+
   const TObject* obj = dynamic_cast<const TObject*>(this);
-  if(obj == 0)
+  if (obj == 0)
     throw(eh + "not a TObject.");
   return const_cast<TObject*>(obj);
 }
 
+//______________________________________________________________________________
 void RenderElement::SpawnEditor()
 {
+  // Show GUI editor for this object.
+
   gReve->EditRenderElement(this);
 }
 
+//______________________________________________________________________________
 void RenderElement::ExportToCINT(Text_t* var_name)
 {
-  static const Exc_t eH("RenderElement::ExportToCINT ");
+  // Export render-element to CINT with variable name var_name.
 
   const char* cname = IsA()->GetName();
   gROOT->ProcessLine(Form("%s* %s = (%s*)0x%lx;", cname, var_name, cname, this));
@@ -370,14 +422,17 @@ void RenderElement::ExportToCINT(Text_t* var_name)
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 void RenderElement::PadPaint(Option_t* option)
 {
+  // Paint self and/or children into currently active pad.
+
   if (GetRnrSelf() && GetObject()) 
     GetObject()->Paint(option);
   
 
   if (GetRnrChildren()) {
-    for(List_i i=BeginChildren(); i!=EndChildren(); ++i) {
+    for (List_i i=BeginChildren(); i!=EndChildren(); ++i) {
       (*i)->PadPaint(option);
     }
   }
@@ -385,15 +440,16 @@ void RenderElement::PadPaint(Option_t* option)
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 void RenderElement::SetRnrSelf(Bool_t rnr)
 {
-  if(rnr != fRnrSelf)
+  if (rnr != fRnrSelf)
   {
     fRnrSelf = rnr;
     
-    for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) 
+    for (sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) 
     {
-      if(i->fItem->IsChecked() != rnr) {
+      if (i->fItem->IsChecked() != rnr) {
         i->fItem->SetCheckBoxPictures(GetCheckBoxPicture(1, fRnrChildren),
                                      GetCheckBoxPicture(0, fRnrChildren));
         i->fItem->CheckItem(fRnrSelf);
@@ -403,13 +459,14 @@ void RenderElement::SetRnrSelf(Bool_t rnr)
   }
 }
 
+//______________________________________________________________________________
 void RenderElement::SetRnrChildren(Bool_t rnr)
 {
-  if(rnr != fRnrChildren)
+  if (rnr != fRnrChildren)
   {
     fRnrChildren = rnr; 
 
-    for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) 
+    for (sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) 
     {
       i->fItem->SetCheckBoxPictures(GetCheckBoxPicture(fRnrSelf, fRnrChildren),
                                    GetCheckBoxPicture(fRnrSelf, fRnrChildren));
@@ -418,6 +475,7 @@ void RenderElement::SetRnrChildren(Bool_t rnr)
   }
 }
 
+//______________________________________________________________________________
 void RenderElement::SetRnrState(Bool_t rnr)
 {
   if (fRnrSelf != rnr || fRnrChildren != rnr)
@@ -435,17 +493,21 @@ void RenderElement::SetRnrState(Bool_t rnr)
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 void RenderElement::SetMainColor(Color_t color)
 {
+  // Set main color of the render-element.
+  // List-tree-items are updated.
+
   Color_t oldcol = GetMainColor();
-  for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
-    if((*i)->GetMainColor() == oldcol) (*i)->SetMainColor(color);
+  for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
+    if ((*i)->GetMainColor() == oldcol) (*i)->SetMainColor(color);
   }
 
   if (fMainColorPtr) {
     *fMainColorPtr = color;
-    for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
-      if(i->fItem->GetColor() != color) {
+    for (sLTI_i i=fItems.begin(); i!=fItems.end(); ++i) {
+      if (i->fItem->GetColor() != color) {
         i->fItem->SetColor(GetMainColor());
        i->fTree->ClearViewPort();
       }
@@ -453,15 +515,27 @@ void RenderElement::SetMainColor(Color_t color)
   }
 }
 
+//______________________________________________________________________________
 void RenderElement::SetMainColor(Pixel_t pixel)
 {
+  // Convert pixel to Color_t and call the above function.
+
   SetMainColor(Color_t(TColor::GetColor(pixel)));
 }
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 TGListTreeItem* RenderElement::AddElement(RenderElement* el)
 {
+  // Add el to the list of children.
+
+  static const Exc_t eH("RenderElement::AddElement ");
+
+  if ( ! AcceptRenderElement(el))
+    throw(eH + Form("parent '%s' rejects '%s'.",
+                    GetRnrElName(), el->GetRnrElName()));
+
   el->AddParent(this);
   fChildren.push_back(el);
   TGListTreeItem* ret = el->AddIntoListTrees(this);
@@ -469,6 +543,7 @@ TGListTreeItem* RenderElement::AddElement(RenderElement* el)
   return ret;
 }
 
+//______________________________________________________________________________
 void RenderElement::RemoveElement(RenderElement* el)
 {
   // Remove el from the list of children.
@@ -480,6 +555,7 @@ void RenderElement::RemoveElement(RenderElement* el)
   ElementChanged();
 }
 
+//______________________________________________________________________________
 void RenderElement::RemoveElementLocal(RenderElement* /*el*/)
 {
   // Perform additional local removal of el.
@@ -487,23 +563,24 @@ void RenderElement::RemoveElementLocal(RenderElement* /*el*/)
   // Put into special function as framework-related handling of
   // element removal should really be common to all classes and
   // clearing of local structures happens in between removal
-  // of list-tree-items and final untangling.
+  // of list-tree-items and final removal.
   // If you override this, you should also override
   // RemoveElementsLocal().
 }
 
+//______________________________________________________________________________
 void RenderElement::RemoveElements()
 {
   // Remove all elements. This assumes removing of all elements can be
   // done more efficiently then looping over them and removing one by
   // one.
 
-  for(sLTI_i i=fItems.begin(); i!=fItems.end(); ++i)
+  for (sLTI_i i=fItems.begin(); i!=fItems.end(); ++i)
   {
     DestroyListSubTree(i->fTree, i->fItem);
   }
   RemoveElementsLocal();
-  for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
+  for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
   {
     (*i)->RemoveParent(this);
   }
@@ -511,6 +588,7 @@ void RenderElement::RemoveElements()
   ElementChanged();
 }
 
+//______________________________________________________________________________
 void RenderElement::RemoveElementsLocal()
 {
   // Perform additional local removal of all elements.
@@ -519,9 +597,13 @@ void RenderElement::RemoveElementsLocal()
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 void RenderElement::EnableListElements(Bool_t rnr_self,  Bool_t rnr_children)
 {
-  for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
+  // Enable rendering of children and their list contents.
+  // Arguments control how to set self/child rendering.
+
+  for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
   {
     (*i)->SetRnrSelf(rnr_self);
     (*i)->SetRnrChildren(rnr_children);
@@ -530,9 +612,16 @@ void RenderElement::EnableListElements(Bool_t rnr_self,  Bool_t rnr_children)
   ElementChanged(kTRUE, kTRUE);
 }
 
+//______________________________________________________________________________
 void RenderElement::DisableListElements(Bool_t rnr_self,  Bool_t rnr_children)
 {
-  for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
+  // Disable rendering of children and their list contents.
+  // Arguments control how to set self/child rendering.
+  //
+  // Same as above function, but default arguments are different. This
+  // is convenient for calls via context menu.
+
+  for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
   {
     (*i)->SetRnrSelf(rnr_self);
     (*i)->SetRnrChildren(rnr_children);
@@ -543,6 +632,7 @@ void RenderElement::DisableListElements(Bool_t rnr_self,  Bool_t rnr_children)
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 void RenderElement::Destroy()
 {
   static const Exc_t eH("RenderElement::Destroy ");
@@ -555,18 +645,19 @@ void RenderElement::Destroy()
   gReve->Redraw3D();
 }
 
+//______________________________________________________________________________
 void RenderElement::DestroyElements()
 {
   static const Exc_t eH("RenderElement::DestroyElements ");
 
-  while( ! fChildren.empty()) {
+  while ( ! fChildren.empty()) {
     RenderElement* c = fChildren.front();
     if (c->fDenyDestroy <= 0)
     {
       try {
         c->Destroy();
       }
-      catch(Exc_t exc) {
+      catch (Exc_t exc) {
         Warning(eH, Form("element destruction failed: '%s'.", exc.Data()));
         RemoveElement(c);
       }
@@ -583,6 +674,7 @@ void RenderElement::DestroyElements()
 
 /**************************************************************************/
 
+//______________________________________________________________________________
 Bool_t RenderElement::HandleElementPaste(RenderElement* el)
 {
   // React to element being pasted or dnd-ed.
@@ -592,6 +684,7 @@ Bool_t RenderElement::HandleElementPaste(RenderElement* el)
   return kTRUE;
 }
 
+//______________________________________________________________________________
 void RenderElement::ElementChanged(Bool_t update_scenes, Bool_t redraw)
 {
   if (update_scenes)
@@ -604,12 +697,13 @@ void RenderElement::ElementChanged(Bool_t update_scenes, Bool_t redraw)
 // Statics
 /**************************************************************************/
 
+//______________________________________________________________________________
 const TGPicture*
 RenderElement::GetCheckBoxPicture(Bool_t rnrSelf, Bool_t rnrDaughters)
 {
   Int_t idx = 0;
-  if(rnrSelf)       idx = 2;
-  if(rnrDaughters ) idx++;
+  if (rnrSelf)       idx = 2;
+  if (rnrDaughters ) idx++;
 
   return fgRnrIcons[idx];
 }
@@ -618,33 +712,47 @@ RenderElement::GetCheckBoxPicture(Bool_t rnrSelf, Bool_t rnrDaughters)
 /**************************************************************************/
 /**************************************************************************/
 
-//______________________________________________________________________
+//______________________________________________________________________________
 // Reve::RenderElementObjPtr
 //
 
 ClassImp(RenderElementObjPtr)
 
+//______________________________________________________________________________
 RenderElementObjPtr::RenderElementObjPtr(TObject* obj, Bool_t own) :
   RenderElement(),
   fObject(obj),
   fOwnObject(own)
-{}
+{
+  // Constructor.
+}
 
+//______________________________________________________________________________
 RenderElementObjPtr::RenderElementObjPtr(TObject* obj, Color_t& mainColor, Bool_t own) :
   RenderElement(mainColor),
   fObject(obj),
   fOwnObject(own)
-{}
+{
+  // Constructor.
+}
 
+//______________________________________________________________________________
 TObject* RenderElementObjPtr::GetObject(Reve::Exc_t eh) const
 {
+  // Return external object.
+  // Virtual from RenderElement.
+
   if(fObject == 0)
     throw(eh + "fObject not set.");
   return fObject;
 }
 
+//______________________________________________________________________________
 void RenderElementObjPtr::ExportToCINT(Text_t* var_name)
 {
+  // Export external object to CINT with variable name var_name.
+  // Virtual from RenderElement.
+
   static const Exc_t eH("RenderElementObjPtr::ExportToCINT ");
 
   TObject* obj = GetObject(eH);
@@ -652,25 +760,33 @@ void RenderElementObjPtr::ExportToCINT(Text_t* var_name)
   gROOT->ProcessLine(Form("%s* %s = (%s*)0x%lx;", cname, var_name, cname, obj));
 }
 
+//______________________________________________________________________________
 RenderElementObjPtr::~RenderElementObjPtr()
 {
+  // Destructor.
+
   if(fOwnObject)
     delete fObject;
 }
 
 
-/**************************************************************************/
-/**************************************************************************/
+/******************************************************************************/
+/******************************************************************************/
 
-//______________________________________________________________________
+//______________________________________________________________________________
 // Reve::RenderElementList
 //
+// A list of render elements.
+// Class of acceptable children can be limited by setting the
+// fChildClass member.
+// 
 
 // !!! should have two ctors (like in RenderElement), one with Color_t&
 // and set fDoColor automatically, based on which ctor is called.
 
 ClassImp(RenderElementList)
 
+//______________________________________________________________________________
 RenderElementList::RenderElementList(const Text_t* n, const Text_t* t, Bool_t doColor) :
   RenderElement(),
   TNamed(n, t),
@@ -678,13 +794,19 @@ RenderElementList::RenderElementList(const Text_t* n, const Text_t* t, Bool_t do
   fDoColor(doColor),
   fChildClass(0)
 {
+  // Constructor.
+
   if(fDoColor) {
     SetMainColorPtr(&fColor);
   }
 }
 
+//______________________________________________________________________________
 Bool_t RenderElementList::AcceptRenderElement(RenderElement* el)
 {
+  // Check if RenderElement el is inherited from fChildClass.
+  // Virtual from RenderElement.
+
   if (fChildClass && ! el->IsA()->InheritsFrom(fChildClass))
     return kFALSE;
   return kTRUE;