ROOT logo
// @(#)root/gui:$Id: TRootCanvas.cxx 30690 2009-10-12 18:12:30Z rdm $
// Author: Fons Rademakers   15/01/98

/*************************************************************************
 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TRootCanvas                                                          //
//                                                                      //
// This class creates a main window with menubar, scrollbars and a      //
// drawing area. The widgets used are the new native ROOT GUI widgets.  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "RConfigure.h"

#include "TRootCanvas.h"
#include "TRootApplication.h"
#include "TRootHelpDialog.h"
#include "TGClient.h"
#include "TGCanvas.h"
#include "TGMenu.h"
#include "TGWidget.h"
#include "TGFileDialog.h"
#include "TGStatusBar.h"
#include "TGTextEditDialogs.h"
#include "TROOT.h"
#include "TClass.h"
#include "TSystem.h"
#include "TCanvas.h"
#include "TPadPainter.h"
#include "TBrowser.h"
#include "TClassTree.h"
#include "TMarker.h"
#include "TStyle.h"
#include "TColorWheel.h"
#include "TVirtualX.h"
#include "TApplication.h"
#include "TFile.h"
#include "TInterpreter.h"
#include "TEnv.h"
#include "TMath.h"
#include "Riostream.h"
#include "TGDockableFrame.h"

#include "TG3DLine.h"
#include "TGToolBar.h"
#include "TGToolTip.h"
#include "TVirtualPadEditor.h"
#include "TRootControlBar.h"
#include "TGLabel.h"
#include "TGuiBuilder.h"
#include "TImage.h"
#include "TError.h"
#include "TGDNDManager.h"
#include "TBufferFile.h"

#include "TPluginManager.h"
#include "TVirtualGL.h"

#ifdef WIN32
#include "TWin32SplashThread.h"
#endif

#include "HelpText.h"


// Canvas menu command ids
enum ERootCanvasCommands {
   kFileNewCanvas,
   kFileOpen,
   kFileSaveAs,
   kFileSaveAsRoot,
   kFileSaveAsC,
   kFileSaveAsPS,
   kFileSaveAsEPS,
   kFileSaveAsPDF,
   kFileSaveAsGIF,
   kFileSaveAsJPG,
   kFileSaveAsPNG,
   kFilePrint,
   kFileCloseCanvas,
   kFileQuit,

   kEditStyle,
   kEditCut,
   kEditCopy,
   kEditPaste,
   kEditClearPad,
   kEditClearCanvas,
   kEditUndo,
   kEditRedo,

   kViewEditor,
   kViewToolbar,
   kViewEventStatus,
   kViewToolTips,
   kViewColors,
   kViewFonts,
   kViewMarkers,
   kViewIconify,
   kViewX3D,
   kViewOpenGL,

   kOptionAutoResize,
   kOptionResizeCanvas,
   kOptionMoveOpaque,
   kOptionResizeOpaque,
   kOptionInterrupt,
   kOptionRefresh,
   kOptionAutoExec,
   kOptionStatistics,
   kOptionHistTitle,
   kOptionFitParams,
   kOptionCanEdit,

   kInspectRoot,
   kClassesTree,
   kFitPanel,
   kToolsBrowser,
   kToolsBuilder,
   kToolsRecorder,

   kHelpAbout,
   kHelpOnCanvas,
   kHelpOnMenus,
   kHelpOnGraphicsEd,
   kHelpOnBrowser,
   kHelpOnObjects,
   kHelpOnPS,

   kToolModify,
   kToolArc,
   kToolLine,
   kToolArrow,
   kToolDiamond,
   kToolEllipse,
   kToolPad,
   kToolPave,
   kToolPLabel,
   kToolPText,
   kToolPsText,
   kToolGraph,
   kToolCurlyLine,
   kToolCurlyArc,
   kToolLatex,
   kToolMarker,
   kToolCutG

};

static const char *gOpenTypes[] = { "ROOT files",   "*.root",
                                    "All files",    "*",
                                    0,              0 };

static const char *gSaveAsTypes[] = { "PostScript",   "*.ps",
                                      "Encapsulated PostScript", "*.eps",
                                      "PDF",          "*.pdf",
                                      "SVG",          "*.svg",
                                      "GIF",          "*.gif",
                                      "ROOT macros",  "*.C",
                                      "ROOT files",   "*.root",
                                      "XML",          "*.xml",
                                      "PNG",          "*.png",
                                      "XPM",          "*.xpm",
                                      "JPEG",         "*.jpg",
                                      "TIFF",         "*.tiff",
                                      "XCF",          "*.xcf",
                                      "All files",    "*",
                                      0,              0 };

static ToolBarData_t gToolBarData[] = {
   // { filename,      tooltip,            staydown,  id,              button}
   { "newcanvas.xpm",  "New",              kFALSE,    kFileNewCanvas,  0 },
   { "open.xpm",       "Open",             kFALSE,    kFileOpen,       0 },
   { "save.xpm",       "Save As",          kFALSE,    kFileSaveAs,     0 },
   { "printer.xpm",    "Print",            kFALSE,    kFilePrint,      0 },
   { "",               "",                 kFALSE,    -1,              0 },
   { "interrupt.xpm",  "Interrupt",        kFALSE,    kOptionInterrupt,0 },
   { "refresh2.xpm",   "Refresh",          kFALSE,    kOptionRefresh,  0 },
   { "",               "",                 kFALSE,    -1,              0 },
   { "inspect.xpm",    "Inspect",          kFALSE,    kInspectRoot,    0 },
   { "browser.xpm",    "Browser",          kFALSE,    kToolsBrowser, 0 },
   { 0,                0,                  kFALSE,    0,               0 }
};

static ToolBarData_t gToolBarData1[] = {
   { "pointer.xpm",    "Modify",           kFALSE,    kToolModify,     0 },
   { "arc.xpm",        "Arc",              kFALSE,    kToolArc,        0 },
   { "line.xpm",       "Line",             kFALSE,    kToolLine,       0 },
   { "arrow.xpm",      "Arrow",            kFALSE,    kToolArrow,      0 },
   { "diamond.xpm",    "Diamond",          kFALSE,    kToolDiamond,    0 },
   { "ellipse.xpm",    "Ellipse",          kFALSE,    kToolEllipse,    0 },
   { "pad.xpm",        "Pad",              kFALSE,    kToolPad,        0 },
   { "pave.xpm",       "Pave",             kFALSE,    kToolPave,       0 },
   { "pavelabel.xpm",  "Pave Label",       kFALSE,    kToolPLabel,     0 },
   { "pavetext.xpm",   "Pave Text",        kFALSE,    kToolPText,      0 },
   { "pavestext.xpm",  "Paves Text",       kFALSE,    kToolPsText,     0 },
   { "graph.xpm",      "Graph",            kFALSE,    kToolGraph,      0 },
   { "curlyline.xpm",  "Curly Line",       kFALSE,    kToolCurlyLine,  0 },
   { "curlyarc.xpm",   "Curly Arc",        kFALSE,    kToolCurlyArc,   0 },
   { "latex.xpm",      "Text/Latex",       kFALSE,    kToolLatex,      0 },
   { "marker.xpm",     "Marker",           kFALSE,    kToolMarker,     0 },
   { "cut.xpm",        "Graphical Cut",    kFALSE,    kToolCutG,       0 },
   { 0,                0,                  kFALSE,    0,               0 }
};

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TRootContainer                                                       //
//                                                                      //
// Utility class used by TRootCanvas. The TRootContainer is the frame   //
// embedded in the TGCanvas widget. The ROOT graphics goes into this    //
// frame. This class is used to enable input events on this graphics    //
// frame and forward the events to the TRootCanvas handlers.            //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

class TRootContainer : public TGCompositeFrame {
private:
   TRootCanvas  *fCanvas;    // pointer back to canvas imp
public:
   TRootContainer(TRootCanvas *c, Window_t id, const TGWindow *parent);

   Bool_t  HandleButton(Event_t *ev);
   Bool_t  HandleDoubleClick(Event_t *ev)
               { return fCanvas->HandleContainerDoubleClick(ev); }
   Bool_t  HandleConfigureNotify(Event_t *ev)
               { TGFrame::HandleConfigureNotify(ev);
                  return fCanvas->HandleContainerConfigure(ev); }
   Bool_t  HandleKey(Event_t *ev)
               { return fCanvas->HandleContainerKey(ev); }
   Bool_t  HandleMotion(Event_t *ev)
               { return fCanvas->HandleContainerMotion(ev); }
   Bool_t  HandleExpose(Event_t *ev)
               { return fCanvas->HandleContainerExpose(ev); }
   Bool_t  HandleCrossing(Event_t *ev)
               { return fCanvas->HandleContainerCrossing(ev); }
   void    SavePrimitive(ostream &out, Option_t * = "");
   void    SetEditable(Bool_t) { }
};

//______________________________________________________________________________
TRootContainer::TRootContainer(TRootCanvas *c, Window_t id, const TGWindow *p)
   : TGCompositeFrame(gClient, id, p)
{
   // Create a canvas container.

   fCanvas = c;

   gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
                         kButtonPressMask | kButtonReleaseMask |
                         kPointerMotionMask, kNone, kNone);

   AddInput(kKeyPressMask | kKeyReleaseMask | kPointerMotionMask |
            kExposureMask | kStructureNotifyMask | kLeaveWindowMask);
   fEditDisabled = kEditDisable;
}

//______________________________________________________________________________
Bool_t TRootContainer::HandleButton(Event_t *event)
{
   // Directly handle scroll mouse buttons (4 and 5), only pass buttons
   // 1, 2 and 3 on to the TCanvas.

   TGViewPort *vp = (TGViewPort*)fParent;
   UInt_t page = vp->GetHeight()/4;
   Int_t newpos;

   gVirtualX->SetInputFocus(GetMainFrame()->GetId());

   if (event->fCode == kButton4) {
      //scroll up
      newpos = fCanvas->fCanvasWindow->GetVsbPosition() - page;
      if (newpos < 0) newpos = 0;
      fCanvas->fCanvasWindow->SetVsbPosition(newpos);
//      return kTRUE;
   }
   if (event->fCode == kButton5) {
      // scroll down
      newpos = fCanvas->fCanvasWindow->GetVsbPosition() + page;
      fCanvas->fCanvasWindow->SetVsbPosition(newpos);
//      return kTRUE;
   }
   return fCanvas->HandleContainerButton(event);
}

ClassImp(TRootCanvas)

//______________________________________________________________________________
TRootCanvas::TRootCanvas(TCanvas *c, const char *name, UInt_t width, UInt_t height)
   : TGMainFrame(gClient->GetRoot(), width, height), TCanvasImp(c)
{
   // Create a basic ROOT canvas.
   CreateCanvas(name);

   ShowToolBar(kFALSE);
   ShowEditor(kFALSE);

   Resize(width, height);
}

//______________________________________________________________________________
TRootCanvas::TRootCanvas(TCanvas *c, const char *name, Int_t x, Int_t y, UInt_t width, UInt_t height)
   : TGMainFrame(gClient->GetRoot(), width, height), TCanvasImp(c)
{
   // Create a basic ROOT canvas.
   CreateCanvas(name);

   ShowToolBar(kFALSE);
   ShowEditor(kFALSE);

   MoveResize(x, y, width, height);
   SetWMPosition(x, y);
}

//______________________________________________________________________________
void TRootCanvas::CreateCanvas(const char *name)
{
   // Create the actual canvas.

   fButton    = 0;
   fAutoFit   = kTRUE;   // check also menu entry
   fEditor    = 0;

   // Create menus
   fFileSaveMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fFileSaveMenu->AddEntry(Form("%s.&ps",  name), kFileSaveAsPS);
   fFileSaveMenu->AddEntry(Form("%s.&eps", name), kFileSaveAsEPS);
   fFileSaveMenu->AddEntry(Form("%s.p&df", name), kFileSaveAsPDF);
   fFileSaveMenu->AddEntry(Form("%s.&gif", name), kFileSaveAsGIF);

   static Int_t img = 0;

   if (!img) {
      Int_t sav = gErrorIgnoreLevel;
      gErrorIgnoreLevel = kFatal;
      img = TImage::Create() ? 1 : -1;
      gErrorIgnoreLevel = sav;
   }
   if (img > 0) {
      fFileSaveMenu->AddEntry(Form("%s.&jpg",name),  kFileSaveAsJPG);
      fFileSaveMenu->AddEntry(Form("%s.&png",name),  kFileSaveAsPNG);
   }

   fFileSaveMenu->AddEntry(Form("%s.&C",   name), kFileSaveAsC);
   fFileSaveMenu->AddEntry(Form("%s.&root",name), kFileSaveAsRoot);

   fFileMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fFileMenu->AddEntry("&New Canvas",   kFileNewCanvas);
   fFileMenu->AddEntry("&Open...",      kFileOpen);
   fFileMenu->AddEntry("&Close Canvas", kFileCloseCanvas);
   fFileMenu->AddSeparator();
   fFileMenu->AddPopup("&Save",         fFileSaveMenu);
   fFileMenu->AddEntry("Save &As...",   kFileSaveAs);
   fFileMenu->AddSeparator();
   fFileMenu->AddEntry("&Print...",     kFilePrint);
   fFileMenu->AddSeparator();
   fFileMenu->AddEntry("&Quit ROOT",    kFileQuit);

   fEditClearMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fEditClearMenu->AddEntry("&Pad",     kEditClearPad);
   fEditClearMenu->AddEntry("&Canvas",  kEditClearCanvas);

   fEditMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fEditMenu->AddEntry("&Style...",     kEditStyle);
   fEditMenu->AddSeparator();
   fEditMenu->AddEntry("Cu&t",          kEditCut);
   fEditMenu->AddEntry("&Copy",         kEditCopy);
   fEditMenu->AddEntry("&Paste",        kEditPaste);
   fEditMenu->AddSeparator();
   fEditMenu->AddPopup("C&lear",        fEditClearMenu);
   fEditMenu->AddSeparator();
   fEditMenu->AddEntry("&Undo",         kEditUndo);
   fEditMenu->AddEntry("&Redo",         kEditRedo);

   fEditMenu->DisableEntry(kEditCut);
   fEditMenu->DisableEntry(kEditCopy);
   fEditMenu->DisableEntry(kEditPaste);
   fEditMenu->DisableEntry(kEditUndo);
   fEditMenu->DisableEntry(kEditRedo);

   fViewWithMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fViewWithMenu->AddEntry("&X3D",      kViewX3D);
   fViewWithMenu->AddEntry("&OpenGL",   kViewOpenGL);

   fViewMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fViewMenu->AddEntry("&Editor",       kViewEditor);
   fViewMenu->AddEntry("&Toolbar",      kViewToolbar);
   fViewMenu->AddEntry("Event &Statusbar", kViewEventStatus);
   fViewMenu->AddEntry("T&oolTip Info", kViewToolTips);
   fViewMenu->AddSeparator();
   fViewMenu->AddEntry("&Colors",       kViewColors);
   fViewMenu->AddEntry("&Fonts",        kViewFonts);
   fViewMenu->AddEntry("&Markers",      kViewMarkers);
   fViewMenu->AddSeparator();
   fViewMenu->AddEntry("&Iconify",      kViewIconify);
   fViewMenu->AddSeparator();
   fViewMenu->AddPopup("&View With",    fViewWithMenu);

   fViewMenu->DisableEntry(kViewFonts);

   fOptionMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fOptionMenu->AddEntry("&Auto Resize Canvas",  kOptionAutoResize);
   fOptionMenu->AddEntry("&Resize Canvas",       kOptionResizeCanvas);
   fOptionMenu->AddEntry("&Move Opaque",         kOptionMoveOpaque);
   fOptionMenu->AddEntry("Resize &Opaque",       kOptionResizeOpaque);
   fOptionMenu->AddSeparator();
   fOptionMenu->AddEntry("&Interrupt",           kOptionInterrupt);
   fOptionMenu->AddEntry("R&efresh",             kOptionRefresh);
   fOptionMenu->AddSeparator();
   fOptionMenu->AddEntry("&Pad Auto Exec",       kOptionAutoExec);
   fOptionMenu->AddSeparator();
   fOptionMenu->AddEntry("&Statistics",          kOptionStatistics);
   fOptionMenu->AddEntry("Histogram &Title",     kOptionHistTitle);
   fOptionMenu->AddEntry("&Fit Parameters",      kOptionFitParams);
   fOptionMenu->AddEntry("Can Edit &Histograms", kOptionCanEdit);

   // Opaque options initialized in InitWindow()
   fOptionMenu->CheckEntry(kOptionAutoResize);
   if (gStyle->GetOptStat())
      fOptionMenu->CheckEntry(kOptionStatistics);
   if (gStyle->GetOptTitle())
      fOptionMenu->CheckEntry(kOptionHistTitle);
   if (gStyle->GetOptFit())
      fOptionMenu->CheckEntry(kOptionFitParams);
   if (gROOT->GetEditHistograms())
      fOptionMenu->CheckEntry(kOptionCanEdit);

   fToolsMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fToolsMenu->AddEntry("&Inspect ROOT",   kInspectRoot);
   fToolsMenu->AddEntry("&Class Tree",     kClassesTree);
   fToolsMenu->AddEntry("&Fit Panel",      kFitPanel);
   fToolsMenu->AddEntry("&Start Browser",  kToolsBrowser);
   fToolsMenu->AddEntry("&Gui Builder",    kToolsBuilder);
   fToolsMenu->AddEntry("&Event Recorder", kToolsRecorder);

   fHelpMenu = new TGPopupMenu(fClient->GetDefaultRoot());
   fHelpMenu->AddLabel("Basic Help On...");
   fHelpMenu->AddSeparator();
   fHelpMenu->AddEntry("&Canvas",          kHelpOnCanvas);
   fHelpMenu->AddEntry("&Menus",           kHelpOnMenus);
   fHelpMenu->AddEntry("&Graphics Editor", kHelpOnGraphicsEd);
   fHelpMenu->AddEntry("&Browser",         kHelpOnBrowser);
   fHelpMenu->AddEntry("&Objects",         kHelpOnObjects);
   fHelpMenu->AddEntry("&PostScript",      kHelpOnPS);
   fHelpMenu->AddSeparator();
   fHelpMenu->AddEntry("&About ROOT...",   kHelpAbout);

   // This main frame will process the menu commands
   fFileMenu->Associate(this);
   fFileSaveMenu->Associate(this);
   fEditMenu->Associate(this);
   fEditClearMenu->Associate(this);
   fViewMenu->Associate(this);
   fViewWithMenu->Associate(this);
   fOptionMenu->Associate(this);
   fToolsMenu->Associate(this);
   fHelpMenu->Associate(this);

   // Create menubar layout hints
   fMenuBarLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 0, 0, 1, 1);
   fMenuBarItemLayout = new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 4, 0, 0);
   fMenuBarHelpLayout = new TGLayoutHints(kLHintsTop | kLHintsRight);

   // Create menubar
   fMenuBar = new TGMenuBar(this, 1, 1, kHorizontalFrame);
   fMenuBar->AddPopup("&File",    fFileMenu,    fMenuBarItemLayout);
   fMenuBar->AddPopup("&Edit",    fEditMenu,    fMenuBarItemLayout);
   fMenuBar->AddPopup("&View",    fViewMenu,    fMenuBarItemLayout);
   fMenuBar->AddPopup("&Options", fOptionMenu,  fMenuBarItemLayout);
   fMenuBar->AddPopup("&Tools",   fToolsMenu,   fMenuBarItemLayout);
   fMenuBar->AddPopup("&Help",    fHelpMenu,    fMenuBarHelpLayout);

   AddFrame(fMenuBar, fMenuBarLayout);

   fHorizontal1 = new TGHorizontal3DLine(this);
   fHorizontal1Layout = new TGLayoutHints(kLHintsTop | kLHintsExpandX);
   AddFrame(fHorizontal1, fHorizontal1Layout);

   // Create toolbar dock
   fToolDock = new TGDockableFrame(this);
   fToolDock->EnableHide(kFALSE);
   AddFrame(fToolDock, fDockLayout = new TGLayoutHints(kLHintsExpandX));

   // will alocate it later
   fToolBar = 0;
   fVertical1 = 0;
   fVertical2 = 0;
   fVertical1Layout = 0;
   fVertical2Layout = 0;

   fToolBarSep = new TGHorizontal3DLine(this);
   fToolBarLayout = new TGLayoutHints(kLHintsTop |  kLHintsExpandX);
   AddFrame(fToolBarSep, fToolBarLayout);

   fMainFrame = new TGCompositeFrame(this, GetWidth() + 4, GetHeight() + 4,
                                      kHorizontalFrame);
   fMainFrameLayout = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);

   // Create editor frame that will host the pad editor
   fEditorFrame = new TGCompositeFrame(fMainFrame, 175, fMainFrame->GetHeight()+4, kFixedWidth);
   fEditorLayout = new TGLayoutHints(kLHintsExpandY | kLHintsLeft);
   fMainFrame->AddFrame(fEditorFrame, fEditorLayout);

   // Create canvas and canvas container that will host the ROOT graphics
   fCanvasWindow = new TGCanvas(fMainFrame, GetWidth()+4, GetHeight()+4,
                                kSunkenFrame | kDoubleBorder);

   fCanvasID = -1;

   if (fCanvas->UseGL()) {
      fCanvas->SetSupportGL(kFALSE);
      //first, initialize GL (if not yet)
      if (!gGLManager) {
         TString x = "win32";
         if (gVirtualX->InheritsFrom("TGX11"))
            x = "x11";

         TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TGLManager", x);

         if (ph && ph->LoadPlugin() != -1) {
            if (!ph->ExecPlugin(0))
               Error("CreateCanvas", "GL manager plugin failed");
         }
      }

      if (gGLManager) {
         fCanvasID = gGLManager->InitGLWindow((ULong_t)fCanvasWindow->GetViewPort()->GetId());
         if (fCanvasID != -1) {
            //Create gl context.
            const Int_t glCtx = gGLManager->CreateGLContext(fCanvasID);
            if (glCtx != -1) {
               fCanvas->SetSupportGL(kTRUE);
               fCanvas->SetGLDevice(glCtx);//Now, fCanvas is responsible for context deletion!
            } else
               Error("CreateCanvas", "GL context creation failed.");
         } else
            Error("CreateCanvas", "GL window creation failed\n");
      }
   }

   if (fCanvasID == -1)
      fCanvasID = gVirtualX->InitWindow((ULong_t)fCanvasWindow->GetViewPort()->GetId());

   Window_t win = gVirtualX->GetWindowID(fCanvasID);
   fCanvasContainer = new TRootContainer(this, win, fCanvasWindow->GetViewPort());
   fCanvasWindow->SetContainer(fCanvasContainer);
   fCanvasLayout = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY | kLHintsRight);

   fMainFrame->AddFrame(fCanvasWindow, fCanvasLayout);
   AddFrame(fMainFrame, fMainFrameLayout);

   // create the tooltip with a timeout of 250 ms
   fToolTip = new TGToolTip(fClient->GetDefaultRoot(), fCanvasWindow, "", 250);

   fCanvas->Connect("ProcessedEvent(Int_t, Int_t, Int_t, TObject*)",
                    "TRootCanvas", this,
                    "EventInfo(Int_t, Int_t, Int_t, TObject*)");

   // Create status bar
   int parts[] = { 33, 10, 10, 47 };
   fStatusBar = new TGStatusBar(this, 10, 10);
   fStatusBar->SetParts(parts, 4);

   fStatusBarLayout = new TGLayoutHints(kLHintsBottom | kLHintsLeft | kLHintsExpandX, 2, 2, 1, 1);

   AddFrame(fStatusBar, fStatusBarLayout);

   // Misc
   SetWindowName(name);
   SetIconName(name);
   fIconPic = SetIconPixmap("macro_s.xpm");
   SetClassHints("Canvas", "Canvas");

   SetEditDisabled(kEditDisable);
   MapSubwindows();

   // by default status bar, tool bar and pad editor are hidden
   HideFrame(fStatusBar);
   HideFrame(fToolDock);
   HideFrame(fToolBarSep);
   HideFrame(fHorizontal1);

   ShowToolBar(kFALSE);
   ShowEditor(kFALSE);

   // we need to use GetDefaultSize() to initialize the layout algorithm...
   Resize(GetDefaultSize());

   gVirtualX->SetDNDAware(fId, fDNDTypeList);
   SetDNDTarget(kTRUE);
}

//______________________________________________________________________________
TRootCanvas::~TRootCanvas()
{
   // Delete ROOT basic canvas. Order is significant. Delete in reverse
   // order of creation.

   delete fToolTip;
   if (fIconPic) gClient->FreePicture(fIconPic);
   if (fEditor) delete fEditor;
   if (fToolBar) {
      Disconnect(fToolDock, "Docked()",   this, "AdjustSize()");
      Disconnect(fToolDock, "Undocked()", this, "AdjustSize()");
      fToolBar->Cleanup();
      delete fToolBar;
   }

   if (!MustCleanup()) {
      delete fStatusBar;
      delete fStatusBarLayout;
      delete fCanvasContainer;
      delete fCanvasWindow;

      delete fEditorFrame;
      delete fEditorLayout;
      delete fMainFrame;
      delete fMainFrameLayout;
      delete fToolBarSep;
      delete fToolDock;
      delete fToolBarLayout;
      delete fHorizontal1;
      delete fHorizontal1Layout;

      delete fMenuBar;
      delete fMenuBarLayout;
      delete fMenuBarItemLayout;
      delete fMenuBarHelpLayout;
      delete fCanvasLayout;
      delete fDockLayout;
   }

   delete fFileMenu;
   delete fFileSaveMenu;
   delete fEditMenu;
   delete fEditClearMenu;
   delete fViewMenu;
   delete fViewWithMenu;
   delete fOptionMenu;
   delete fToolsMenu;
   delete fHelpMenu;
}

//______________________________________________________________________________
void TRootCanvas::Close()
{
   // Called via TCanvasImp interface by TCanvas.
   TVirtualPadEditor* gged = TVirtualPadEditor::GetPadEditor(kFALSE);
   if(gged && gged->GetCanvas() == fCanvas)
      gged->Hide();

   gVirtualX->CloseWindow();
}

//______________________________________________________________________________
void TRootCanvas::ReallyDelete()
{
   // Really delete the canvas and this GUI.

   TVirtualPadEditor* gged = TVirtualPadEditor::GetPadEditor(kFALSE);
   if(gged && gged->GetCanvas() == fCanvas)
      gged->Hide();

   fToolTip->Hide();
   Disconnect(fCanvas, "ProcessedEvent(Int_t, Int_t, Int_t, TObject*)",
              this, "EventInfo(Int_t, Int_t, Int_t, TObject*)");

   TVirtualPad *savepad = gPad;
   gPad = 0;        // hide gPad from CINT
   gInterpreter->DeleteGlobal(fCanvas);
   gPad = savepad;  // restore gPad for ROOT
   delete fCanvas;  // will in turn delete this object
}

//______________________________________________________________________________
void TRootCanvas::CloseWindow()
{
   // In case window is closed via WM we get here.

   DeleteWindow();
}

//______________________________________________________________________________
UInt_t TRootCanvas::GetCwidth() const
{
   // Return width of canvas container.

   return fCanvasContainer->GetWidth();
}

//______________________________________________________________________________
UInt_t TRootCanvas::GetCheight() const
{
   // Return height of canvas container.

   return fCanvasContainer->GetHeight();
}

//______________________________________________________________________________
UInt_t TRootCanvas::GetWindowGeometry(Int_t &x, Int_t &y, UInt_t &w, UInt_t &h)
{
   // Gets the size and position of the window containing the canvas. This
   // size includes the menubar and borders.

   gVirtualX->GetWindowSize(fId, x, y, w, h);

   Window_t childdum;
   gVirtualX->TranslateCoordinates(fId, gClient->GetDefaultRoot()->GetId(),
                                   0, 0, x, y, childdum);
   if (!fCanvas->GetShowEditor()) return 0;
   return fEditorFrame->GetWidth();
}

//______________________________________________________________________________
void TRootCanvas::SetStatusText(const char *txt, Int_t partidx)
{
   // Set text in status bar.

   fStatusBar->SetText(txt, partidx);
}

//______________________________________________________________________________
Bool_t TRootCanvas::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Handle menu and other command generated by the user.

   TRootHelpDialog *hd;
   TList *lc;

   switch (GET_MSG(msg)) {

      case kC_COMMAND:

         switch (GET_SUBMSG(msg)) {

            case kCM_BUTTON:
            case kCM_MENU:

               switch (parm1) {
                  // Handle toolbar items...
                  case kToolModify:
                     gROOT->SetEditorMode();
                     break;
                  case kToolArc:
                     gROOT->SetEditorMode("Arc");
                     break;
                  case kToolLine:
                     gROOT->SetEditorMode("Line");
                     break;
                  case kToolArrow:
                     gROOT->SetEditorMode("Arrow");
                     break;
                  case kToolDiamond:
                     gROOT->SetEditorMode("Diamond");
                     break;
                  case kToolEllipse:
                     gROOT->SetEditorMode("Ellipse");
                     break;
                  case kToolPad:
                     gROOT->SetEditorMode("Pad");
                     break;
                  case kToolPave:
                     gROOT->SetEditorMode("Pave");
                     break;
                  case kToolPLabel:
                     gROOT->SetEditorMode("PaveLabel");
                     break;
                  case kToolPText:
                     gROOT->SetEditorMode("PaveText");
                     break;
                  case kToolPsText:
                     gROOT->SetEditorMode("PavesText");
                     break;
                  case kToolGraph:
                     gROOT->SetEditorMode("PolyLine");
                     break;
                  case kToolCurlyLine:
                     gROOT->SetEditorMode("CurlyLine");
                     break;
                  case kToolCurlyArc:
                     gROOT->SetEditorMode("CurlyArc");
                     break;
                  case kToolLatex:
                     gROOT->SetEditorMode("Text");
                     break;
                  case kToolMarker:
                     gROOT->SetEditorMode("Marker");
                     break;
                  case kToolCutG:
                     gROOT->SetEditorMode("CutG");
                     break;

                  // Handle File menu items...
                  case kFileNewCanvas:
                     gROOT->MakeDefCanvas();
                     break;
                  case kFileOpen:
                     {
                        static TString dir(".");
                        TGFileInfo fi;
                        fi.fFileTypes = gOpenTypes;
                        fi.fIniDir    = StrDup(dir);
                        new TGFileDialog(fClient->GetDefaultRoot(), this, kFDOpen,&fi);
                        if (!fi.fFilename) return kTRUE;
                        dir = fi.fIniDir;
                        new TFile(fi.fFilename, "update");
                     }
                     break;
                  case kFileSaveAs:
                     {
                        static TString dir(".");
                        static Int_t typeidx = 0;
                        static Bool_t overwr = kFALSE;
                        TGFileInfo fi;
                        fi.fFileTypes   = gSaveAsTypes;
                        fi.fIniDir      = StrDup(dir);
                        fi.fFileTypeIdx = typeidx;
                        fi.fOverwrite = overwr;
                        new TGFileDialog(fClient->GetDefaultRoot(), this, kFDSave, &fi);
                        if (!fi.fFilename) return kTRUE;
                        Bool_t  appendedType = kFALSE;
                        TString fn = fi.fFilename;
                        TString ft = fi.fFileTypes[fi.fFileTypeIdx+1];
                        dir     = fi.fIniDir;
                        typeidx = fi.fFileTypeIdx;
                        overwr  = fi.fOverwrite;
again:
                        if (fn.EndsWith(".root") ||
                            fn.EndsWith(".ps")   ||
                            fn.EndsWith(".eps")  ||
                            fn.EndsWith(".pdf")  ||
                            fn.EndsWith(".svg")  ||
                            fn.EndsWith(".gif")  ||
                            fn.EndsWith(".xml")  ||
                            fn.EndsWith(".xpm")  ||
                            fn.EndsWith(".jpg")  ||
                            fn.EndsWith(".png")  ||
                            fn.EndsWith(".xcf")  ||
                            fn.EndsWith(".tiff")) {
                           fCanvas->SaveAs(fn);
                        } else if (fn.EndsWith(".C"))
                           fCanvas->SaveSource(fn);
                        else {
                           if (!appendedType) {
                              if (ft.Index(".") != kNPOS) {
                                 fn += ft(ft.Index("."), ft.Length());
                                 appendedType = kTRUE;
                                 goto again;
                              }
                           }
                           Warning("ProcessMessage", "file %s cannot be saved with this extension", fi.fFilename);
                        }
                     }
                     break;
                  case kFileSaveAsRoot:
                     fCanvas->SaveAs(".root");
                     break;
                  case kFileSaveAsC:
                     fCanvas->SaveSource();
                     break;
                  case kFileSaveAsPS:
                     fCanvas->SaveAs();
                     break;
                  case kFileSaveAsEPS:
                     fCanvas->SaveAs(".eps");
                     break;
                  case kFileSaveAsPDF:
                     fCanvas->SaveAs(".pdf");
                     break;
                  case kFileSaveAsGIF:
                     fCanvas->SaveAs(".gif");
                     break;
                  case kFileSaveAsJPG:
                     fCanvas->SaveAs(".jpg");
                     break;
                  case kFileSaveAsPNG:
                     fCanvas->SaveAs(".png");
                     break;
                  case kFilePrint:
                     PrintCanvas();
                     break;
                  case kFileCloseCanvas:
                     SendCloseMessage();
                     break;
                  case kFileQuit:
                     if (!gApplication->ReturnFromRun()) {
                        if ((TVirtualPadEditor::GetPadEditor(kFALSE) != 0))
                           TVirtualPadEditor::Terminate();
                        delete this;
                     }
                     if (TVirtualPadEditor::GetPadEditor(kFALSE) != 0)
                        TVirtualPadEditor::Terminate();
                     if (TClass::GetClass("TStyleManager"))
                        gROOT->ProcessLine("TStyleManager::Terminate()");
                     gApplication->Terminate(0);
                     break;

                  // Handle Edit menu items...
                  case kEditStyle:
                     if (!TClass::GetClass("TStyleManager"))
                        gSystem->Load("libGed");
                     gROOT->ProcessLine("TStyleManager::Show()");
                     break;
                  case kEditCut:
                     // still noop
                     break;
                  case kEditCopy:
                     // still noop
                     break;
                  case kEditPaste:
                     // still noop
                     break;
                  case kEditUndo:
                     // noop
                     break;
                  case kEditRedo:
                     // noop
                     break;
                  case kEditClearPad:
                     gPad->Clear();
                     gPad->Modified();
                     gPad->Update();
                     break;
                  case kEditClearCanvas:
                     fCanvas->Clear();
                     fCanvas->Modified();
                     fCanvas->Update();
                     break;

                  // Handle View menu items...
                  case kViewEditor:
                     fCanvas->ToggleEditor();
                     break;
                  case kViewToolbar:
                     fCanvas->ToggleToolBar();
                     break;
                  case kViewEventStatus:
                     fCanvas->ToggleEventStatus();
                     break;
                  case kViewToolTips:
                     fCanvas->ToggleToolTips();
                     break;
                  case kViewColors:
                     {
                        TVirtualPad *padsav = gPad->GetCanvas();
                        //This was the code with the old color table
                        //   TCanvas *m = new TCanvas("colors","Color Table");
                        //   TPad::DrawColorTable();
                        //   m->Update();
                        TColorWheel *wheel = new TColorWheel();
                        wheel->Draw();
                        padsav->cd();
                     }
                     break;
                  case kViewFonts:
                     // noop
                     break;
                  case kViewMarkers:
                     {
                        TVirtualPad *padsav = gPad->GetCanvas();
                        TCanvas *m = new TCanvas("markers","Marker Types",600,200);
                        TMarker::DisplayMarkerTypes();
                        m->Update();
                        padsav->cd();
                     }
                     break;
                  case kViewIconify:
                     Iconify();
                     break;
                  case kViewX3D:
                     gPad->GetViewer3D("x3d");
                     break;
                  case kViewOpenGL:
                     gPad->GetViewer3D("ogl");
                     break;

                  // Handle Option menu items...
                  case kOptionAutoExec:
                     fCanvas->ToggleAutoExec();
                     if (fCanvas->GetAutoExec()) {
                        fOptionMenu->CheckEntry(kOptionAutoExec);
                     } else {
                        fOptionMenu->UnCheckEntry(kOptionAutoExec);
                     }
                     break;
                  case kOptionAutoResize:
                     {
                        fAutoFit = fAutoFit ? kFALSE : kTRUE;
                        int opt = fCanvasContainer->GetOptions();
                        if (fAutoFit) {
                           opt &= ~kFixedSize;
                           fOptionMenu->CheckEntry(kOptionAutoResize);
                        } else {
                           opt |= kFixedSize;
                           fOptionMenu->UnCheckEntry(kOptionAutoResize);
                        }
                        fCanvasContainer->ChangeOptions(opt);
                        // in case of autofit this will generate a configure
                        // event for the container and this will force the
                        // update of the TCanvas
                        //Layout();
                     }
                     Layout();
                     break;
                  case kOptionResizeCanvas:
                     FitCanvas();
                     break;
                  case kOptionMoveOpaque:
                     if (fCanvas->OpaqueMoving()) {
                        fCanvas->MoveOpaque(0);
                        fOptionMenu->UnCheckEntry(kOptionMoveOpaque);
                     } else {
                        fCanvas->MoveOpaque(1);
                        fOptionMenu->CheckEntry(kOptionMoveOpaque);
                     }
                     break;
                  case kOptionResizeOpaque:
                     if (fCanvas->OpaqueResizing()) {
                        fCanvas->ResizeOpaque(0);
                        fOptionMenu->UnCheckEntry(kOptionResizeOpaque);
                     } else {
                        fCanvas->ResizeOpaque(1);
                        fOptionMenu->CheckEntry(kOptionResizeOpaque);
                     }
                     break;
                  case kOptionInterrupt:
                     gROOT->SetInterrupt();
                     break;
                  case kOptionRefresh:
                     fCanvas->Paint();
                     fCanvas->Update();
                     break;
                  case kOptionStatistics:
                     if (gStyle->GetOptStat()) {
                        gStyle->SetOptStat(0);
                        delete gPad->FindObject("stats");
                        fOptionMenu->UnCheckEntry(kOptionStatistics);
                     } else {
                        gStyle->SetOptStat(1);
                        fOptionMenu->CheckEntry(kOptionStatistics);
                     }
                     gPad->Modified();
                     fCanvas->Update();
                     break;
                  case kOptionHistTitle:
                     if (gStyle->GetOptTitle()) {
                        gStyle->SetOptTitle(0);
                        delete gPad->FindObject("title");
                        fOptionMenu->UnCheckEntry(kOptionHistTitle);
                     } else {
                        gStyle->SetOptTitle(1);
                        fOptionMenu->CheckEntry(kOptionHistTitle);
                     }
                     gPad->Modified();
                     fCanvas->Update();
                     break;
                  case kOptionFitParams:
                     if (gStyle->GetOptFit()) {
                        gStyle->SetOptFit(0);
                        fOptionMenu->UnCheckEntry(kOptionFitParams);
                     } else {
                        gStyle->SetOptFit(1);
                        fOptionMenu->CheckEntry(kOptionFitParams);
                     }
                     gPad->Modified();
                     fCanvas->Update();
                     break;
                  case kOptionCanEdit:
                     if (gROOT->GetEditHistograms()) {
                        gROOT->SetEditHistograms(kFALSE);
                        fOptionMenu->UnCheckEntry(kOptionCanEdit);
                     } else {
                        gROOT->SetEditHistograms(kTRUE);
                        fOptionMenu->CheckEntry(kOptionCanEdit);
                     }
                     break;

                  // Handle Tools menu items...
                  case kInspectRoot:
                     fCanvas->cd();
                     gROOT->Inspect();
                     fCanvas->Update();
                     break;
                  case kToolsBrowser:
                     new TBrowser("browser");
                     break;
                  case kToolsBuilder:
                     TGuiBuilder::Instance();
                     break;
                  case kToolsRecorder:
                     gROOT->ProcessLine("new TGRecorder()");
                     break;

                  // Handle Tools menu items...
                  case kClassesTree:
                     {
                        char cdef[64];
                        lc = (TList*)gROOT->GetListOfCanvases();
                        if (lc->FindObject("ClassTree")) {
                           sprintf(cdef,"ClassTree_%d",lc->GetSize()+1);
                        } else {
                           sprintf(cdef,"%s","ClassTree");
                        }
                        new TClassTree(cdef,"TObject");
                        fCanvas->Update();
                     }
                     break;

               case kFitPanel:
                     {
                        // use plugin manager to create instance of TFitEditor
                        TPluginHandler *handler = gROOT->GetPluginManager()->FindHandler("TFitEditor");
                        if (handler && handler->LoadPlugin() != -1) {
                           if (handler->ExecPlugin(2, fCanvas, 0) == 0)
                              Error("FitPanel", "Unable to crate the FitPanel");
                        }
                        else
                           Error("FitPanel", "Unable to find the FitPanel plug-in");
                     }
                     break;

                  // Handle Help menu items...
                  case kHelpAbout:
                     {
#ifdef R__UNIX
                        TString rootx;
# ifdef ROOTBINDIR
                        rootx = ROOTBINDIR;
# else
                        rootx = gSystem->Getenv("ROOTSYS");
                        if (!rootx.IsNull()) rootx += "/bin";
# endif
                        rootx += "/root -a &";
                        gSystem->Exec(rootx);
#else
#ifdef WIN32
                        new TWin32SplashThread(kTRUE);
#else

                        char str[32];
                        sprintf(str, "About ROOT %s...", gROOT->GetVersion());
                        hd = new TRootHelpDialog(this, str, 600, 400);
                        hd->SetText(gHelpAbout);
                        hd->Popup();
#endif
#endif
                     }
                     break;
                  case kHelpOnCanvas:
                     hd = new TRootHelpDialog(this, "Help on Canvas...", 600, 400);
                     hd->SetText(gHelpCanvas);
                     hd->Popup();
                     break;
                  case kHelpOnMenus:
                     hd = new TRootHelpDialog(this, "Help on Menus...", 600, 400);
                     hd->SetText(gHelpPullDownMenus);
                     hd->Popup();
                     break;
                  case kHelpOnGraphicsEd:
                     hd = new TRootHelpDialog(this, "Help on Graphics Editor...", 600, 400);
                     hd->SetText(gHelpGraphicsEditor);
                     hd->Popup();
                     break;
                  case kHelpOnBrowser:
                     hd = new TRootHelpDialog(this, "Help on Browser...", 600, 400);
                     hd->SetText(gHelpBrowser);
                     hd->Popup();
                     break;
                  case kHelpOnObjects:
                     hd = new TRootHelpDialog(this, "Help on Objects...", 600, 400);
                     hd->SetText(gHelpObjects);
                     hd->Popup();
                     break;
                  case kHelpOnPS:
                     hd = new TRootHelpDialog(this, "Help on PostScript...", 600, 400);
                     hd->SetText(gHelpPostscript);
                     hd->Popup();
                     break;
               }
            default:
               break;
         }
      default:
         break;
   }
   return kTRUE;
}

//______________________________________________________________________________
Int_t TRootCanvas::InitWindow()
{
   // Called by TCanvas ctor to get window indetifier.

   if (fCanvas->OpaqueMoving())
      fOptionMenu->CheckEntry(kOptionMoveOpaque);
   if (fCanvas->OpaqueResizing())
      fOptionMenu->CheckEntry(kOptionResizeOpaque);

   return fCanvasID;
}

//______________________________________________________________________________
void TRootCanvas::SetCanvasSize(UInt_t w, UInt_t h)
{
   // Set size of canvas container. Units in pixels.

   // turn off autofit, we want to stay at the given size
   fAutoFit = kFALSE;
   fOptionMenu->UnCheckEntry(kOptionAutoResize);
   int opt = fCanvasContainer->GetOptions();
   opt |= kFixedSize;    // turn on fixed size mode
   fCanvasContainer->ChangeOptions(opt);
   fCanvasContainer->SetWidth(w);
   fCanvasContainer->SetHeight(h);
   Layout();  // force layout (will update container to given size)
   fCanvas->Resize();
   fCanvas->Update();
}

//______________________________________________________________________________
void TRootCanvas::SetWindowPosition(Int_t x, Int_t y)
{
   // Set canvas position (units in pixels).

   Move(x, y);
}

//______________________________________________________________________________
void TRootCanvas::SetWindowSize(UInt_t w, UInt_t h)
{
   // Set size of canvas (units in pixels).

   Resize(w, h);

   // Make sure the change of size is really done.
   if (!gThreadXAR) {
      gSystem->ProcessEvents();
      gSystem->Sleep(10);
      gSystem->ProcessEvents();
   }
}

//______________________________________________________________________________
void TRootCanvas::RaiseWindow()
{
   // Put canvas window on top of the window stack.

   gVirtualX->RaiseWindow(GetId());
}

//______________________________________________________________________________
void TRootCanvas::SetWindowTitle(const char *title)
{
   // Change title on window.

   SetWindowName(title);
   SetIconName(title);
   fToolDock->SetWindowName(Form("ToolBar: %s", title));
}

//______________________________________________________________________________
void TRootCanvas::FitCanvas()
{
   // Fit canvas container to current window size.

   if (!fAutoFit) {
      int opt = fCanvasContainer->GetOptions();
      int oopt = opt;
      opt &= ~kFixedSize;   // turn off fixed size mode
      fCanvasContainer->ChangeOptions(opt);
      Layout();  // force layout
      fCanvas->Resize();
      fCanvas->Update();
      fCanvasContainer->ChangeOptions(oopt);
   }
}


 //______________________________________________________________________________
void TRootCanvas::PrintCanvas()
{
   // Print the canvas.

   Int_t ret = 0;
   Bool_t pname = kTRUE;
   char *printer, *printCmd;
   static TString sprinter, sprintCmd;

   if (sprinter == "")
      printer = StrDup(gEnv->GetValue("Print.Printer", ""));
   else
      printer = StrDup(sprinter);
   if (sprintCmd == "")
#ifndef WIN32
      printCmd = StrDup(gEnv->GetValue("Print.Command", ""));
#else
      printCmd = StrDup(gEnv->GetValue("Print.Command", "start AcroRd32.exe /p"));
#endif
   else
      printCmd = StrDup(sprintCmd);

   new TGPrintDialog(fClient->GetDefaultRoot(), this, 400, 150,
                     &printer, &printCmd, &ret);
   if (ret) {
      sprinter  = printer;
      sprintCmd = printCmd;

      if (sprinter == "")
         pname = kFALSE;

      TString fn = "rootprint";
      FILE *f = gSystem->TempFileName(fn, gEnv->GetValue("Print.Directory", gSystem->TempDirectory()));
      fclose(f);
      fn += TString::Format(".%s",gEnv->GetValue("Print.FileType", "pdf"));
      fCanvas->Print(fn);

      TString cmd = sprintCmd;
      if (cmd.Contains("%p"))
         cmd.ReplaceAll("%p", sprinter);
      else if (pname) {
         cmd += " "; cmd += sprinter; cmd += " ";
      }

      if (cmd.Contains("%f"))
         cmd.ReplaceAll("%f", fn);
      else {
         cmd += " "; cmd += fn; cmd += " ";
      }

      gSystem->Exec(cmd);
#ifndef WIN32
      gSystem->Unlink(fn);
#endif
   }
   delete [] printer;
   delete [] printCmd;
}

//______________________________________________________________________________
void TRootCanvas::EventInfo(Int_t event, Int_t px, Int_t py, TObject *selected)
{
   // Display a tooltip with infos about the primitive below the cursor.

   fToolTip->Hide();
   if (!fCanvas->GetShowToolTips() || selected == 0 ||
       event != kMouseMotion || fButton != 0)
      return;
   TString tipInfo;
   TString objInfo = selected->GetObjectInfo(px, py);
   if (objInfo.BeginsWith("-")) {
      // if the string begins with '-', display only the object info
      objInfo.Remove(TString::kLeading, '-');
      tipInfo = objInfo;
   }
   else {
      const char *title = selected->GetTitle();
      tipInfo += TString::Format("%s::%s", selected->ClassName(),
                                 selected->GetName());
      if (title && strlen(title))
         tipInfo += TString::Format("\n%s", selected->GetTitle());
      if (event == kKeyPress)
         tipInfo += TString::Format("\n%c", (char) px);
      else
         tipInfo += TString::Format("\n%d, %d", px, py);
      if (!objInfo.IsNull())
         tipInfo += TString::Format("\n%s", objInfo.Data());
   }
   fToolTip->SetText(tipInfo.Data());
   fToolTip->SetPosition(px+15, py+15);
   fToolTip->Reset();
}

//______________________________________________________________________________
void TRootCanvas::ShowMenuBar(Bool_t show)
{
   // Show or hide menubar.

   if (show)  ShowFrame(fMenuBar);
   else       HideFrame(fMenuBar);
}

//______________________________________________________________________________
void TRootCanvas::ShowStatusBar(Bool_t show)
{
   // Show or hide statusbar.

   UInt_t dh = fClient->GetDisplayHeight();
   UInt_t ch = fCanvas->GetWindowHeight();

   UInt_t h = GetHeight();
   UInt_t sh = fStatusBar->GetHeight()+2;

   if (show) {
      ShowFrame(fStatusBar);
      fViewMenu->CheckEntry(kViewEventStatus);
      if (dh - ch >= sh) h = h + sh;
      else h = ch;
   } else {
      HideFrame(fStatusBar);
      fViewMenu->UnCheckEntry(kViewEventStatus);
      if (dh - ch < sh) h = ch;
      else h = h - sh;
   }
   Resize(GetWidth(), h);
}

//______________________________________________________________________________
void TRootCanvas::ShowEditor(Bool_t show)
{
   // Show or hide side frame.

   TVirtualPad *savedPad = 0;
   savedPad = (TVirtualPad *) gPad;
   gPad = Canvas();

   UInt_t w = GetWidth();
   UInt_t e = fEditorFrame->GetWidth();
   UInt_t h = GetHeight();
   UInt_t s = fHorizontal1->GetHeight();

   if (show) {
      if (!fEditor) CreateEditor();
      TVirtualPadEditor* gged = TVirtualPadEditor::GetPadEditor(kFALSE);
      if(gged && gged->GetCanvas() == fCanvas){
         gged->Hide();
      }
      if (!fViewMenu->IsEntryChecked(kViewToolbar) || fToolDock->IsUndocked()) {
         ShowFrame(fHorizontal1);
         h = h + s;
      }
      fMainFrame->ShowFrame(fEditorFrame);
      fEditor->Show();
      fViewMenu->CheckEntry(kViewEditor);
      w = w + e;
   } else {
      if (!fViewMenu->IsEntryChecked(kViewToolbar) || fToolDock->IsUndocked()) {
         HideFrame(fHorizontal1);
         h = h - s;
      }
      if (fEditor) fEditor->Hide();
      fMainFrame->HideFrame(fEditorFrame);
      fViewMenu->UnCheckEntry(kViewEditor);
      w = w - e;
   }
   Resize(w, h);

   if (savedPad) gPad = savedPad;
}

//______________________________________________________________________________
void TRootCanvas::CreateEditor()
{
   // Create embedded editor.

   fEditorFrame->SetEditDisabled(kEditEnable);
   fEditorFrame->SetEditable();
   gPad = Canvas();
   // next two lines are related to the old editor
   Int_t show = gEnv->GetValue("Canvas.ShowEditor", 0);
   gEnv->SetValue("Canvas.ShowEditor","true");
   fEditor = TVirtualPadEditor::LoadEditor();
   fEditor->SetGlobal(kFALSE);
   fEditorFrame->SetEditable(kEditDisable);
   fEditorFrame->SetEditable(kFALSE);

   // next line is related to the old editor
   if (show == 0) gEnv->SetValue("Canvas.ShowEditor","false");
}

//______________________________________________________________________________
void TRootCanvas::ShowToolBar(Bool_t show)
{
   // Show or hide toolbar.

   if (show && !fToolBar) {

      fToolBar = new TGToolBar(fToolDock, 60, 20, kHorizontalFrame);
      fToolDock->AddFrame(fToolBar, fHorizontal1Layout);

      Int_t spacing = 6, i;
      for (i = 0; gToolBarData[i].fPixmap; i++) {
         if (strlen(gToolBarData[i].fPixmap) == 0) {
            spacing = 6;
            continue;
         }
         fToolBar->AddButton(this, &gToolBarData[i], spacing);
         spacing = 0;
      }
      fVertical1 = new TGVertical3DLine(fToolBar);
      fVertical2 = new TGVertical3DLine(fToolBar);
      fVertical1Layout = new TGLayoutHints(kLHintsLeft | kLHintsExpandY, 4,2,0,0);
      fVertical2Layout = new TGLayoutHints(kLHintsLeft | kLHintsExpandY);
      fToolBar->AddFrame(fVertical1, fVertical1Layout);
      fToolBar->AddFrame(fVertical2, fVertical2Layout);

      spacing = 6;
      for (i = 0; gToolBarData1[i].fPixmap; i++) {
         if (strlen(gToolBarData1[i].fPixmap) == 0) {
            spacing = 6;
            continue;
         }
         fToolBar->AddButton(this, &gToolBarData1[i], spacing);
         spacing = 0;
      }
      fToolDock->MapSubwindows();
      fToolDock->Layout();
      fToolDock->SetWindowName(Form("ToolBar: %s", GetWindowName()));
      fToolDock->Connect("Docked()", "TRootCanvas", this, "AdjustSize()");
      fToolDock->Connect("Undocked()", "TRootCanvas", this, "AdjustSize()");
   }

   if (!fToolBar) return;

   UInt_t h = GetHeight();
   UInt_t sh = fToolBarSep->GetHeight();
   UInt_t dh = fToolBar->GetHeight();

   if (show) {
      ShowFrame(fToolDock);
      if (!fViewMenu->IsEntryChecked(kViewEditor)) {
         ShowFrame(fHorizontal1);
         h = h + sh;
      }
      ShowFrame(fToolBarSep);
      fViewMenu->CheckEntry(kViewToolbar);
      h = h + dh + sh;
   } else {
      if (fToolDock->IsUndocked()) {
         fToolDock->DockContainer();
         h = h + 2*sh;
      } else h = h - dh;

      HideFrame(fToolDock);
      if (!fViewMenu->IsEntryChecked(kViewEditor)) {
         HideFrame(fHorizontal1);
         h = h - sh;
      }
      HideFrame(fToolBarSep);
      h = h - sh;
      fViewMenu->UnCheckEntry(kViewToolbar);
   }
   Resize(GetWidth(), h);
}

//______________________________________________________________________________
void TRootCanvas::ShowToolTips(Bool_t show)
{
   // Enable or disable tooltip info.

   if (show)
      fViewMenu->CheckEntry(kViewToolTips);
   else
      fViewMenu->UnCheckEntry(kViewToolTips);
}

//______________________________________________________________________________
Bool_t TRootCanvas::HasEditor() const
{
   // Returns kTRUE if the editor is shown.

   return (fEditor) && fViewMenu->IsEntryChecked(kViewEditor);
}

//______________________________________________________________________________
Bool_t TRootCanvas::HasMenuBar() const
{
   // Returns kTRUE if the menu bar is shown.

   return (fMenuBar) && fMenuBar->IsMapped();
}

//______________________________________________________________________________
Bool_t TRootCanvas::HasStatusBar() const
{
   // Returns kTRUE if the status bar is shown.

   return (fStatusBar) && fStatusBar->IsMapped();
}

//______________________________________________________________________________
Bool_t TRootCanvas::HasToolBar() const
{
   // Returns kTRUE if the tool bar is shown.

   return (fToolBar) && fToolBar->IsMapped();
}

//______________________________________________________________________________
Bool_t TRootCanvas::HasToolTips() const
{
   // Returns kTRUE if the tooltips are enabled.

   return (fCanvas) && fCanvas->GetShowToolTips();
}

//______________________________________________________________________________
void TRootCanvas::AdjustSize()
{
   // Keep the same canvas size while docking/undocking toolbar.

   UInt_t h = GetHeight();
   UInt_t dh = fToolBar->GetHeight();
   UInt_t sh = fHorizontal1->GetHeight();

   if (fToolDock->IsUndocked()) {
      if (!fViewMenu->IsEntryChecked(kViewEditor)) {
         HideFrame(fHorizontal1);
         h = h - sh;
      }
      HideFrame(fToolBarSep);
      h = h - dh - sh;
   } else {
      if (!fViewMenu->IsEntryChecked(kViewEditor)) {
         ShowFrame(fHorizontal1);
         h = h + sh;
      }
      ShowFrame(fToolBarSep);
      h = h + dh + sh;
   }
   Resize(GetWidth(), h);
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleContainerButton(Event_t *event)
{
   // Handle mouse button events in the canvas container.

   Int_t button = event->fCode;
   Int_t x = event->fX;
   Int_t y = event->fY;

   if (event->fType == kButtonPress) {
      if (fToolTip && fCanvas->GetShowToolTips()) {
         fToolTip->Hide();
         gVirtualX->UpdateWindow(0);
         gSystem->ProcessEvents();
      }
      fButton = button;
      if (button == kButton1) {
         if (event->fState & kKeyShiftMask)
            fCanvas->HandleInput(kButton1Shift, x, y);
         else
            fCanvas->HandleInput(kButton1Down, x, y);
      }
      if (button == kButton2)
         fCanvas->HandleInput(kButton2Down, x, y);
      if (button == kButton3) {
         fCanvas->HandleInput(kButton3Down, x, y);
         fButton = 0;  // button up is consumed by TContextMenu
      }

   } else if (event->fType == kButtonRelease) {
      if (button == kButton4)
         fCanvas->HandleInput(kWheelUp, x, y);
      if (button == kButton5)
         fCanvas->HandleInput(kWheelDown, x, y);
      if (button == kButton1)
         fCanvas->HandleInput(kButton1Up, x, y);
      if (button == kButton2)
         fCanvas->HandleInput(kButton2Up, x, y);
      if (button == kButton3)
         fCanvas->HandleInput(kButton3Up, x, y);

      fButton = 0;
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleContainerDoubleClick(Event_t *event)
{
   // Handle mouse button double click events in the canvas container.

   Int_t button = event->fCode;
   Int_t x = event->fX;
   Int_t y = event->fY;

   if (button == kButton1)
      fCanvas->HandleInput(kButton1Double, x, y);
   if (button == kButton2)
      fCanvas->HandleInput(kButton2Double, x, y);
   if (button == kButton3)
      fCanvas->HandleInput(kButton3Double, x, y);

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleContainerConfigure(Event_t *)
{
   // Handle configure (i.e. resize) event.
   if (fAutoFit) {
      fCanvas->Resize();
      fCanvas->Update();
   }

   if (fCanvas->HasFixedAspectRatio()) {
      // get menu height
      static Int_t dh = 0;
      if (!dh)
         dh = GetHeight() - fCanvasContainer->GetHeight();
      UInt_t h = TMath::Nint(fCanvasContainer->GetWidth()/
                             fCanvas->GetAspectRatio()) + dh;
      SetWindowSize(GetWidth(), h);
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleContainerKey(Event_t *event)
{
   // Handle keyboard events in the canvas container.

   if (event->fType == kGKeyPress) {
      fButton = event->fCode;
      UInt_t keysym;
      char str[2];
      gVirtualX->LookupString(event, str, sizeof(str), keysym);

      if (str[0] == kESC){   // ESC sets the escape flag
         gROOT->SetEscape();
         fCanvas->HandleInput(kButton1Up, 0, 0);
         fCanvas->HandleInput(kMouseMotion, 0, 0);
         gPad->Modified();
         return kTRUE;
      }

      if (str[0] == 3)   // ctrl-c sets the interrupt flag
         gROOT->SetInterrupt();
      fCanvas->HandleInput(kKeyPress, str[0], keysym);
   } else if (event->fType == kKeyRelease)
      fButton = 0;

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleContainerMotion(Event_t *event)
{
   // Handle mouse motion event in the canvas container.

   Int_t x = event->fX;
   Int_t y = event->fY;

   if (fButton == 0)
      fCanvas->HandleInput(kMouseMotion, x, y);
   if (fButton == kButton1) {
      if (event->fState & kKeyShiftMask)
         fCanvas->HandleInput(EEventType(8), x, y);
      else
         fCanvas->HandleInput(kButton1Motion, x, y);
   }
   if (fButton == kButton2)
      fCanvas->HandleInput(kButton2Motion, x, y);

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleContainerExpose(Event_t *event)
{
   // Handle expose events.

   if (event->fCount == 0) {
      fCanvas->Flush();
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleContainerCrossing(Event_t *event)
{
   // Handle enter/leave events. Only leave is activated at the moment.

   Int_t x = event->fX;
   Int_t y = event->fY;

   // pointer grabs create also an enter and leave event but with fCode
   // either kNotifyGrab or kNotifyUngrab, don't propagate these events
   if (event->fType == kLeaveNotify && event->fCode == kNotifyNormal)
      fCanvas->HandleInput(kMouseLeave, x, y);

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleDNDDrop(TDNDData *data)
{
   // Handle drop events.

   static Atom_t rootObj  = gVirtualX->InternAtom("application/root", kFALSE);
   static Atom_t uriObj  = gVirtualX->InternAtom("text/uri-list", kFALSE);

   if (data->fDataType == rootObj) {
      TBufferFile buf(TBuffer::kRead, data->fDataLength, (void *)data->fData);
      buf.SetReadMode();
      TObject *obj = (TObject *)buf.ReadObjectAny(TObject::Class());
      gPad->Clear();
      if (obj->InheritsFrom("TGraph"))
         obj->Draw("ACP");
      else if (obj->InheritsFrom("TKey")) {
         TObject *object = (TObject *)gROOT->ProcessLine(Form("((TKey *)0x%lx)->ReadObj();", obj));
         if (object && object->IsA()->GetMethodAllAny("Draw"))
            object->Draw();
      }
      else if (obj->IsA()->GetMethodAllAny("Draw"))
         obj->Draw();
      gPad->Modified();
      gPad->Update();
      return kTRUE;
   }
   else if (data->fDataType == uriObj) {
      TString sfname((char *)data->fData);
      if (sfname.Length() > 7) {
         sfname.ReplaceAll("\r\n", "");
         TUrl uri(sfname.Data());
         if (sfname.EndsWith(".bmp") ||
            sfname.EndsWith(".gif") ||
            sfname.EndsWith(".jpg") ||
            sfname.EndsWith(".png") ||
            sfname.EndsWith(".ps")  ||
            sfname.EndsWith(".eps") ||
            sfname.EndsWith(".pdf") ||
            sfname.EndsWith(".tiff") ||
            sfname.EndsWith(".xpm")) {
            TImage *img = TImage::Open(uri.GetFile());
            if (img) {
               img->Draw("xxx");
               img->SetEditable(kTRUE);
            }
         }
         gPad->Modified();
         gPad->Update();
      }
   }
   return kFALSE;
}

//______________________________________________________________________________
Atom_t TRootCanvas::HandleDNDPosition(Int_t x, Int_t y, Atom_t action,
                                      Int_t /*xroot*/, Int_t /*yroot*/)
{
   // Handle dragging position events.

   TPad *pad = fCanvas->Pick(x, y, 0);
   if (pad) {
      pad->cd();
      gROOT->SetSelectedPad(pad);
   }
   return action;
}

//______________________________________________________________________________
Atom_t TRootCanvas::HandleDNDEnter(Atom_t *typelist)
{
   // Handle drag enter events.

   static Atom_t rootObj  = gVirtualX->InternAtom("application/root", kFALSE);
   static Atom_t uriObj  = gVirtualX->InternAtom("text/uri-list", kFALSE);
   Atom_t ret = kNone;
   for (int i = 0; typelist[i] != kNone; ++i) {
      if (typelist[i] == rootObj)
         ret = rootObj;
      if (typelist[i] == uriObj)
         ret = uriObj;
   }
   return ret;
}

//______________________________________________________________________________
Bool_t TRootCanvas::HandleDNDLeave()
{
   // Handle drag leave events.

   return kTRUE;
}

//______________________________________________________________________________
void TRootContainer::SavePrimitive(ostream &out, Option_t * /*= ""*/)
{
   // Save a canvas container as a C++ statement(s) on output stream out.

   out << endl << "   // canvas container" << endl;
   out << "   Int_t canvasID = gVirtualX->InitWindow((ULong_t)"
       << GetParent()->GetParent()->GetName() << "->GetId());" << endl;
   out << "   Window_t winC = gVirtualX->GetWindowID(canvasID);" << endl;
   out << "   TGCompositeFrame *";
   out << GetName() << " = new TGCompositeFrame(gClient,winC"
       << "," << GetParent()->GetName() << ");" << endl;
}
 TRootCanvas.cxx:1
 TRootCanvas.cxx:2
 TRootCanvas.cxx:3
 TRootCanvas.cxx:4
 TRootCanvas.cxx:5
 TRootCanvas.cxx:6
 TRootCanvas.cxx:7
 TRootCanvas.cxx:8
 TRootCanvas.cxx:9
 TRootCanvas.cxx:10
 TRootCanvas.cxx:11
 TRootCanvas.cxx:12
 TRootCanvas.cxx:13
 TRootCanvas.cxx:14
 TRootCanvas.cxx:15
 TRootCanvas.cxx:16
 TRootCanvas.cxx:17
 TRootCanvas.cxx:18
 TRootCanvas.cxx:19
 TRootCanvas.cxx:20
 TRootCanvas.cxx:21
 TRootCanvas.cxx:22
 TRootCanvas.cxx:23
 TRootCanvas.cxx:24
 TRootCanvas.cxx:25
 TRootCanvas.cxx:26
 TRootCanvas.cxx:27
 TRootCanvas.cxx:28
 TRootCanvas.cxx:29
 TRootCanvas.cxx:30
 TRootCanvas.cxx:31
 TRootCanvas.cxx:32
 TRootCanvas.cxx:33
 TRootCanvas.cxx:34
 TRootCanvas.cxx:35
 TRootCanvas.cxx:36
 TRootCanvas.cxx:37
 TRootCanvas.cxx:38
 TRootCanvas.cxx:39
 TRootCanvas.cxx:40
 TRootCanvas.cxx:41
 TRootCanvas.cxx:42
 TRootCanvas.cxx:43
 TRootCanvas.cxx:44
 TRootCanvas.cxx:45
 TRootCanvas.cxx:46
 TRootCanvas.cxx:47
 TRootCanvas.cxx:48
 TRootCanvas.cxx:49
 TRootCanvas.cxx:50
 TRootCanvas.cxx:51
 TRootCanvas.cxx:52
 TRootCanvas.cxx:53
 TRootCanvas.cxx:54
 TRootCanvas.cxx:55
 TRootCanvas.cxx:56
 TRootCanvas.cxx:57
 TRootCanvas.cxx:58
 TRootCanvas.cxx:59
 TRootCanvas.cxx:60
 TRootCanvas.cxx:61
 TRootCanvas.cxx:62
 TRootCanvas.cxx:63
 TRootCanvas.cxx:64
 TRootCanvas.cxx:65
 TRootCanvas.cxx:66
 TRootCanvas.cxx:67
 TRootCanvas.cxx:68
 TRootCanvas.cxx:69
 TRootCanvas.cxx:70
 TRootCanvas.cxx:71
 TRootCanvas.cxx:72
 TRootCanvas.cxx:73
 TRootCanvas.cxx:74
 TRootCanvas.cxx:75
 TRootCanvas.cxx:76
 TRootCanvas.cxx:77
 TRootCanvas.cxx:78
 TRootCanvas.cxx:79
 TRootCanvas.cxx:80
 TRootCanvas.cxx:81
 TRootCanvas.cxx:82
 TRootCanvas.cxx:83
 TRootCanvas.cxx:84
 TRootCanvas.cxx:85
 TRootCanvas.cxx:86
 TRootCanvas.cxx:87
 TRootCanvas.cxx:88
 TRootCanvas.cxx:89
 TRootCanvas.cxx:90
 TRootCanvas.cxx:91
 TRootCanvas.cxx:92
 TRootCanvas.cxx:93
 TRootCanvas.cxx:94
 TRootCanvas.cxx:95
 TRootCanvas.cxx:96
 TRootCanvas.cxx:97
 TRootCanvas.cxx:98
 TRootCanvas.cxx:99
 TRootCanvas.cxx:100
 TRootCanvas.cxx:101
 TRootCanvas.cxx:102
 TRootCanvas.cxx:103
 TRootCanvas.cxx:104
 TRootCanvas.cxx:105
 TRootCanvas.cxx:106
 TRootCanvas.cxx:107
 TRootCanvas.cxx:108
 TRootCanvas.cxx:109
 TRootCanvas.cxx:110
 TRootCanvas.cxx:111
 TRootCanvas.cxx:112
 TRootCanvas.cxx:113
 TRootCanvas.cxx:114
 TRootCanvas.cxx:115
 TRootCanvas.cxx:116
 TRootCanvas.cxx:117
 TRootCanvas.cxx:118
 TRootCanvas.cxx:119
 TRootCanvas.cxx:120
 TRootCanvas.cxx:121
 TRootCanvas.cxx:122
 TRootCanvas.cxx:123
 TRootCanvas.cxx:124
 TRootCanvas.cxx:125
 TRootCanvas.cxx:126
 TRootCanvas.cxx:127
 TRootCanvas.cxx:128
 TRootCanvas.cxx:129
 TRootCanvas.cxx:130
 TRootCanvas.cxx:131
 TRootCanvas.cxx:132
 TRootCanvas.cxx:133
 TRootCanvas.cxx:134
 TRootCanvas.cxx:135
 TRootCanvas.cxx:136
 TRootCanvas.cxx:137
 TRootCanvas.cxx:138
 TRootCanvas.cxx:139
 TRootCanvas.cxx:140
 TRootCanvas.cxx:141
 TRootCanvas.cxx:142
 TRootCanvas.cxx:143
 TRootCanvas.cxx:144
 TRootCanvas.cxx:145
 TRootCanvas.cxx:146
 TRootCanvas.cxx:147
 TRootCanvas.cxx:148
 TRootCanvas.cxx:149
 TRootCanvas.cxx:150
 TRootCanvas.cxx:151
 TRootCanvas.cxx:152
 TRootCanvas.cxx:153
 TRootCanvas.cxx:154
 TRootCanvas.cxx:155
 TRootCanvas.cxx:156
 TRootCanvas.cxx:157
 TRootCanvas.cxx:158
 TRootCanvas.cxx:159
 TRootCanvas.cxx:160
 TRootCanvas.cxx:161
 TRootCanvas.cxx:162
 TRootCanvas.cxx:163
 TRootCanvas.cxx:164
 TRootCanvas.cxx:165
 TRootCanvas.cxx:166
 TRootCanvas.cxx:167
 TRootCanvas.cxx:168
 TRootCanvas.cxx:169
 TRootCanvas.cxx:170
 TRootCanvas.cxx:171
 TRootCanvas.cxx:172
 TRootCanvas.cxx:173
 TRootCanvas.cxx:174
 TRootCanvas.cxx:175
 TRootCanvas.cxx:176
 TRootCanvas.cxx:177
 TRootCanvas.cxx:178
 TRootCanvas.cxx:179
 TRootCanvas.cxx:180
 TRootCanvas.cxx:181
 TRootCanvas.cxx:182
 TRootCanvas.cxx:183
 TRootCanvas.cxx:184
 TRootCanvas.cxx:185
 TRootCanvas.cxx:186
 TRootCanvas.cxx:187
 TRootCanvas.cxx:188
 TRootCanvas.cxx:189
 TRootCanvas.cxx:190
 TRootCanvas.cxx:191
 TRootCanvas.cxx:192
 TRootCanvas.cxx:193
 TRootCanvas.cxx:194
 TRootCanvas.cxx:195
 TRootCanvas.cxx:196
 TRootCanvas.cxx:197
 TRootCanvas.cxx:198
 TRootCanvas.cxx:199
 TRootCanvas.cxx:200
 TRootCanvas.cxx:201
 TRootCanvas.cxx:202
 TRootCanvas.cxx:203
 TRootCanvas.cxx:204
 TRootCanvas.cxx:205
 TRootCanvas.cxx:206
 TRootCanvas.cxx:207
 TRootCanvas.cxx:208
 TRootCanvas.cxx:209
 TRootCanvas.cxx:210
 TRootCanvas.cxx:211
 TRootCanvas.cxx:212
 TRootCanvas.cxx:213
 TRootCanvas.cxx:214
 TRootCanvas.cxx:215
 TRootCanvas.cxx:216
 TRootCanvas.cxx:217
 TRootCanvas.cxx:218
 TRootCanvas.cxx:219
 TRootCanvas.cxx:220
 TRootCanvas.cxx:221
 TRootCanvas.cxx:222
 TRootCanvas.cxx:223
 TRootCanvas.cxx:224
 TRootCanvas.cxx:225
 TRootCanvas.cxx:226
 TRootCanvas.cxx:227
 TRootCanvas.cxx:228
 TRootCanvas.cxx:229
 TRootCanvas.cxx:230
 TRootCanvas.cxx:231
 TRootCanvas.cxx:232
 TRootCanvas.cxx:233
 TRootCanvas.cxx:234
 TRootCanvas.cxx:235
 TRootCanvas.cxx:236
 TRootCanvas.cxx:237
 TRootCanvas.cxx:238
 TRootCanvas.cxx:239
 TRootCanvas.cxx:240
 TRootCanvas.cxx:241
 TRootCanvas.cxx:242
 TRootCanvas.cxx:243
 TRootCanvas.cxx:244
 TRootCanvas.cxx:245
 TRootCanvas.cxx:246
 TRootCanvas.cxx:247
 TRootCanvas.cxx:248
 TRootCanvas.cxx:249
 TRootCanvas.cxx:250
 TRootCanvas.cxx:251
 TRootCanvas.cxx:252
 TRootCanvas.cxx:253
 TRootCanvas.cxx:254
 TRootCanvas.cxx:255
 TRootCanvas.cxx:256
 TRootCanvas.cxx:257
 TRootCanvas.cxx:258
 TRootCanvas.cxx:259
 TRootCanvas.cxx:260
 TRootCanvas.cxx:261
 TRootCanvas.cxx:262
 TRootCanvas.cxx:263
 TRootCanvas.cxx:264
 TRootCanvas.cxx:265
 TRootCanvas.cxx:266
 TRootCanvas.cxx:267
 TRootCanvas.cxx:268
 TRootCanvas.cxx:269
 TRootCanvas.cxx:270
 TRootCanvas.cxx:271
 TRootCanvas.cxx:272
 TRootCanvas.cxx:273
 TRootCanvas.cxx:274
 TRootCanvas.cxx:275
 TRootCanvas.cxx:276
 TRootCanvas.cxx:277
 TRootCanvas.cxx:278
 TRootCanvas.cxx:279
 TRootCanvas.cxx:280
 TRootCanvas.cxx:281
 TRootCanvas.cxx:282
 TRootCanvas.cxx:283
 TRootCanvas.cxx:284
 TRootCanvas.cxx:285
 TRootCanvas.cxx:286
 TRootCanvas.cxx:287
 TRootCanvas.cxx:288
 TRootCanvas.cxx:289
 TRootCanvas.cxx:290
 TRootCanvas.cxx:291
 TRootCanvas.cxx:292
 TRootCanvas.cxx:293
 TRootCanvas.cxx:294
 TRootCanvas.cxx:295
 TRootCanvas.cxx:296
 TRootCanvas.cxx:297
 TRootCanvas.cxx:298
 TRootCanvas.cxx:299
 TRootCanvas.cxx:300
 TRootCanvas.cxx:301
 TRootCanvas.cxx:302
 TRootCanvas.cxx:303
 TRootCanvas.cxx:304
 TRootCanvas.cxx:305
 TRootCanvas.cxx:306
 TRootCanvas.cxx:307
 TRootCanvas.cxx:308
 TRootCanvas.cxx:309
 TRootCanvas.cxx:310
 TRootCanvas.cxx:311
 TRootCanvas.cxx:312
 TRootCanvas.cxx:313
 TRootCanvas.cxx:314
 TRootCanvas.cxx:315
 TRootCanvas.cxx:316
 TRootCanvas.cxx:317
 TRootCanvas.cxx:318
 TRootCanvas.cxx:319
 TRootCanvas.cxx:320
 TRootCanvas.cxx:321
 TRootCanvas.cxx:322
 TRootCanvas.cxx:323
 TRootCanvas.cxx:324
 TRootCanvas.cxx:325
 TRootCanvas.cxx:326
 TRootCanvas.cxx:327
 TRootCanvas.cxx:328
 TRootCanvas.cxx:329
 TRootCanvas.cxx:330
 TRootCanvas.cxx:331
 TRootCanvas.cxx:332
 TRootCanvas.cxx:333
 TRootCanvas.cxx:334
 TRootCanvas.cxx:335
 TRootCanvas.cxx:336
 TRootCanvas.cxx:337
 TRootCanvas.cxx:338
 TRootCanvas.cxx:339
 TRootCanvas.cxx:340
 TRootCanvas.cxx:341
 TRootCanvas.cxx:342
 TRootCanvas.cxx:343
 TRootCanvas.cxx:344
 TRootCanvas.cxx:345
 TRootCanvas.cxx:346
 TRootCanvas.cxx:347
 TRootCanvas.cxx:348
 TRootCanvas.cxx:349
 TRootCanvas.cxx:350
 TRootCanvas.cxx:351
 TRootCanvas.cxx:352
 TRootCanvas.cxx:353
 TRootCanvas.cxx:354
 TRootCanvas.cxx:355
 TRootCanvas.cxx:356
 TRootCanvas.cxx:357
 TRootCanvas.cxx:358
 TRootCanvas.cxx:359
 TRootCanvas.cxx:360
 TRootCanvas.cxx:361
 TRootCanvas.cxx:362
 TRootCanvas.cxx:363
 TRootCanvas.cxx:364
 TRootCanvas.cxx:365
 TRootCanvas.cxx:366
 TRootCanvas.cxx:367
 TRootCanvas.cxx:368
 TRootCanvas.cxx:369
 TRootCanvas.cxx:370
 TRootCanvas.cxx:371
 TRootCanvas.cxx:372
 TRootCanvas.cxx:373
 TRootCanvas.cxx:374
 TRootCanvas.cxx:375
 TRootCanvas.cxx:376
 TRootCanvas.cxx:377
 TRootCanvas.cxx:378
 TRootCanvas.cxx:379
 TRootCanvas.cxx:380
 TRootCanvas.cxx:381
 TRootCanvas.cxx:382
 TRootCanvas.cxx:383
 TRootCanvas.cxx:384
 TRootCanvas.cxx:385
 TRootCanvas.cxx:386
 TRootCanvas.cxx:387
 TRootCanvas.cxx:388
 TRootCanvas.cxx:389
 TRootCanvas.cxx:390
 TRootCanvas.cxx:391
 TRootCanvas.cxx:392
 TRootCanvas.cxx:393
 TRootCanvas.cxx:394
 TRootCanvas.cxx:395
 TRootCanvas.cxx:396
 TRootCanvas.cxx:397
 TRootCanvas.cxx:398
 TRootCanvas.cxx:399
 TRootCanvas.cxx:400
 TRootCanvas.cxx:401
 TRootCanvas.cxx:402
 TRootCanvas.cxx:403
 TRootCanvas.cxx:404
 TRootCanvas.cxx:405
 TRootCanvas.cxx:406
 TRootCanvas.cxx:407
 TRootCanvas.cxx:408
 TRootCanvas.cxx:409
 TRootCanvas.cxx:410
 TRootCanvas.cxx:411
 TRootCanvas.cxx:412
 TRootCanvas.cxx:413
 TRootCanvas.cxx:414
 TRootCanvas.cxx:415
 TRootCanvas.cxx:416
 TRootCanvas.cxx:417
 TRootCanvas.cxx:418
 TRootCanvas.cxx:419
 TRootCanvas.cxx:420
 TRootCanvas.cxx:421
 TRootCanvas.cxx:422
 TRootCanvas.cxx:423
 TRootCanvas.cxx:424
 TRootCanvas.cxx:425
 TRootCanvas.cxx:426
 TRootCanvas.cxx:427
 TRootCanvas.cxx:428
 TRootCanvas.cxx:429
 TRootCanvas.cxx:430
 TRootCanvas.cxx:431
 TRootCanvas.cxx:432
 TRootCanvas.cxx:433
 TRootCanvas.cxx:434
 TRootCanvas.cxx:435
 TRootCanvas.cxx:436
 TRootCanvas.cxx:437
 TRootCanvas.cxx:438
 TRootCanvas.cxx:439
 TRootCanvas.cxx:440
 TRootCanvas.cxx:441
 TRootCanvas.cxx:442
 TRootCanvas.cxx:443
 TRootCanvas.cxx:444
 TRootCanvas.cxx:445
 TRootCanvas.cxx:446
 TRootCanvas.cxx:447
 TRootCanvas.cxx:448
 TRootCanvas.cxx:449
 TRootCanvas.cxx:450
 TRootCanvas.cxx:451
 TRootCanvas.cxx:452
 TRootCanvas.cxx:453
 TRootCanvas.cxx:454
 TRootCanvas.cxx:455
 TRootCanvas.cxx:456
 TRootCanvas.cxx:457
 TRootCanvas.cxx:458
 TRootCanvas.cxx:459
 TRootCanvas.cxx:460
 TRootCanvas.cxx:461
 TRootCanvas.cxx:462
 TRootCanvas.cxx:463
 TRootCanvas.cxx:464
 TRootCanvas.cxx:465
 TRootCanvas.cxx:466
 TRootCanvas.cxx:467
 TRootCanvas.cxx:468
 TRootCanvas.cxx:469
 TRootCanvas.cxx:470
 TRootCanvas.cxx:471
 TRootCanvas.cxx:472
 TRootCanvas.cxx:473
 TRootCanvas.cxx:474
 TRootCanvas.cxx:475
 TRootCanvas.cxx:476
 TRootCanvas.cxx:477
 TRootCanvas.cxx:478
 TRootCanvas.cxx:479
 TRootCanvas.cxx:480
 TRootCanvas.cxx:481
 TRootCanvas.cxx:482
 TRootCanvas.cxx:483
 TRootCanvas.cxx:484
 TRootCanvas.cxx:485
 TRootCanvas.cxx:486
 TRootCanvas.cxx:487
 TRootCanvas.cxx:488
 TRootCanvas.cxx:489
 TRootCanvas.cxx:490
 TRootCanvas.cxx:491
 TRootCanvas.cxx:492
 TRootCanvas.cxx:493
 TRootCanvas.cxx:494
 TRootCanvas.cxx:495
 TRootCanvas.cxx:496
 TRootCanvas.cxx:497
 TRootCanvas.cxx:498
 TRootCanvas.cxx:499
 TRootCanvas.cxx:500
 TRootCanvas.cxx:501
 TRootCanvas.cxx:502
 TRootCanvas.cxx:503
 TRootCanvas.cxx:504
 TRootCanvas.cxx:505
 TRootCanvas.cxx:506
 TRootCanvas.cxx:507
 TRootCanvas.cxx:508
 TRootCanvas.cxx:509
 TRootCanvas.cxx:510
 TRootCanvas.cxx:511
 TRootCanvas.cxx:512
 TRootCanvas.cxx:513
 TRootCanvas.cxx:514
 TRootCanvas.cxx:515
 TRootCanvas.cxx:516
 TRootCanvas.cxx:517
 TRootCanvas.cxx:518
 TRootCanvas.cxx:519
 TRootCanvas.cxx:520
 TRootCanvas.cxx:521
 TRootCanvas.cxx:522
 TRootCanvas.cxx:523
 TRootCanvas.cxx:524
 TRootCanvas.cxx:525
 TRootCanvas.cxx:526
 TRootCanvas.cxx:527
 TRootCanvas.cxx:528
 TRootCanvas.cxx:529
 TRootCanvas.cxx:530
 TRootCanvas.cxx:531
 TRootCanvas.cxx:532
 TRootCanvas.cxx:533
 TRootCanvas.cxx:534
 TRootCanvas.cxx:535
 TRootCanvas.cxx:536
 TRootCanvas.cxx:537
 TRootCanvas.cxx:538
 TRootCanvas.cxx:539
 TRootCanvas.cxx:540
 TRootCanvas.cxx:541
 TRootCanvas.cxx:542
 TRootCanvas.cxx:543
 TRootCanvas.cxx:544
 TRootCanvas.cxx:545
 TRootCanvas.cxx:546
 TRootCanvas.cxx:547
 TRootCanvas.cxx:548
 TRootCanvas.cxx:549
 TRootCanvas.cxx:550
 TRootCanvas.cxx:551
 TRootCanvas.cxx:552
 TRootCanvas.cxx:553
 TRootCanvas.cxx:554
 TRootCanvas.cxx:555
 TRootCanvas.cxx:556
 TRootCanvas.cxx:557
 TRootCanvas.cxx:558
 TRootCanvas.cxx:559
 TRootCanvas.cxx:560
 TRootCanvas.cxx:561
 TRootCanvas.cxx:562
 TRootCanvas.cxx:563
 TRootCanvas.cxx:564
 TRootCanvas.cxx:565
 TRootCanvas.cxx:566
 TRootCanvas.cxx:567
 TRootCanvas.cxx:568
 TRootCanvas.cxx:569
 TRootCanvas.cxx:570
 TRootCanvas.cxx:571
 TRootCanvas.cxx:572
 TRootCanvas.cxx:573
 TRootCanvas.cxx:574
 TRootCanvas.cxx:575
 TRootCanvas.cxx:576
 TRootCanvas.cxx:577
 TRootCanvas.cxx:578
 TRootCanvas.cxx:579
 TRootCanvas.cxx:580
 TRootCanvas.cxx:581
 TRootCanvas.cxx:582
 TRootCanvas.cxx:583
 TRootCanvas.cxx:584
 TRootCanvas.cxx:585
 TRootCanvas.cxx:586
 TRootCanvas.cxx:587
 TRootCanvas.cxx:588
 TRootCanvas.cxx:589
 TRootCanvas.cxx:590
 TRootCanvas.cxx:591
 TRootCanvas.cxx:592
 TRootCanvas.cxx:593
 TRootCanvas.cxx:594
 TRootCanvas.cxx:595
 TRootCanvas.cxx:596
 TRootCanvas.cxx:597
 TRootCanvas.cxx:598
 TRootCanvas.cxx:599
 TRootCanvas.cxx:600
 TRootCanvas.cxx:601
 TRootCanvas.cxx:602
 TRootCanvas.cxx:603
 TRootCanvas.cxx:604
 TRootCanvas.cxx:605
 TRootCanvas.cxx:606
 TRootCanvas.cxx:607
 TRootCanvas.cxx:608
 TRootCanvas.cxx:609
 TRootCanvas.cxx:610
 TRootCanvas.cxx:611
 TRootCanvas.cxx:612
 TRootCanvas.cxx:613
 TRootCanvas.cxx:614
 TRootCanvas.cxx:615
 TRootCanvas.cxx:616
 TRootCanvas.cxx:617
 TRootCanvas.cxx:618
 TRootCanvas.cxx:619
 TRootCanvas.cxx:620
 TRootCanvas.cxx:621
 TRootCanvas.cxx:622
 TRootCanvas.cxx:623
 TRootCanvas.cxx:624
 TRootCanvas.cxx:625
 TRootCanvas.cxx:626
 TRootCanvas.cxx:627
 TRootCanvas.cxx:628
 TRootCanvas.cxx:629
 TRootCanvas.cxx:630
 TRootCanvas.cxx:631
 TRootCanvas.cxx:632
 TRootCanvas.cxx:633
 TRootCanvas.cxx:634
 TRootCanvas.cxx:635
 TRootCanvas.cxx:636
 TRootCanvas.cxx:637
 TRootCanvas.cxx:638
 TRootCanvas.cxx:639
 TRootCanvas.cxx:640
 TRootCanvas.cxx:641
 TRootCanvas.cxx:642
 TRootCanvas.cxx:643
 TRootCanvas.cxx:644
 TRootCanvas.cxx:645
 TRootCanvas.cxx:646
 TRootCanvas.cxx:647
 TRootCanvas.cxx:648
 TRootCanvas.cxx:649
 TRootCanvas.cxx:650
 TRootCanvas.cxx:651
 TRootCanvas.cxx:652
 TRootCanvas.cxx:653
 TRootCanvas.cxx:654
 TRootCanvas.cxx:655
 TRootCanvas.cxx:656
 TRootCanvas.cxx:657
 TRootCanvas.cxx:658
 TRootCanvas.cxx:659
 TRootCanvas.cxx:660
 TRootCanvas.cxx:661
 TRootCanvas.cxx:662
 TRootCanvas.cxx:663
 TRootCanvas.cxx:664
 TRootCanvas.cxx:665
 TRootCanvas.cxx:666
 TRootCanvas.cxx:667
 TRootCanvas.cxx:668
 TRootCanvas.cxx:669
 TRootCanvas.cxx:670
 TRootCanvas.cxx:671
 TRootCanvas.cxx:672
 TRootCanvas.cxx:673
 TRootCanvas.cxx:674
 TRootCanvas.cxx:675
 TRootCanvas.cxx:676
 TRootCanvas.cxx:677
 TRootCanvas.cxx:678
 TRootCanvas.cxx:679
 TRootCanvas.cxx:680
 TRootCanvas.cxx:681
 TRootCanvas.cxx:682
 TRootCanvas.cxx:683
 TRootCanvas.cxx:684
 TRootCanvas.cxx:685
 TRootCanvas.cxx:686
 TRootCanvas.cxx:687
 TRootCanvas.cxx:688
 TRootCanvas.cxx:689
 TRootCanvas.cxx:690
 TRootCanvas.cxx:691
 TRootCanvas.cxx:692
 TRootCanvas.cxx:693
 TRootCanvas.cxx:694
 TRootCanvas.cxx:695
 TRootCanvas.cxx:696
 TRootCanvas.cxx:697
 TRootCanvas.cxx:698
 TRootCanvas.cxx:699
 TRootCanvas.cxx:700
 TRootCanvas.cxx:701
 TRootCanvas.cxx:702
 TRootCanvas.cxx:703
 TRootCanvas.cxx:704
 TRootCanvas.cxx:705
 TRootCanvas.cxx:706
 TRootCanvas.cxx:707
 TRootCanvas.cxx:708
 TRootCanvas.cxx:709
 TRootCanvas.cxx:710
 TRootCanvas.cxx:711
 TRootCanvas.cxx:712
 TRootCanvas.cxx:713
 TRootCanvas.cxx:714
 TRootCanvas.cxx:715
 TRootCanvas.cxx:716
 TRootCanvas.cxx:717
 TRootCanvas.cxx:718
 TRootCanvas.cxx:719
 TRootCanvas.cxx:720
 TRootCanvas.cxx:721
 TRootCanvas.cxx:722
 TRootCanvas.cxx:723
 TRootCanvas.cxx:724
 TRootCanvas.cxx:725
 TRootCanvas.cxx:726
 TRootCanvas.cxx:727
 TRootCanvas.cxx:728
 TRootCanvas.cxx:729
 TRootCanvas.cxx:730
 TRootCanvas.cxx:731
 TRootCanvas.cxx:732
 TRootCanvas.cxx:733
 TRootCanvas.cxx:734
 TRootCanvas.cxx:735
 TRootCanvas.cxx:736
 TRootCanvas.cxx:737
 TRootCanvas.cxx:738
 TRootCanvas.cxx:739
 TRootCanvas.cxx:740
 TRootCanvas.cxx:741
 TRootCanvas.cxx:742
 TRootCanvas.cxx:743
 TRootCanvas.cxx:744
 TRootCanvas.cxx:745
 TRootCanvas.cxx:746
 TRootCanvas.cxx:747
 TRootCanvas.cxx:748
 TRootCanvas.cxx:749
 TRootCanvas.cxx:750
 TRootCanvas.cxx:751
 TRootCanvas.cxx:752
 TRootCanvas.cxx:753
 TRootCanvas.cxx:754
 TRootCanvas.cxx:755
 TRootCanvas.cxx:756
 TRootCanvas.cxx:757
 TRootCanvas.cxx:758
 TRootCanvas.cxx:759
 TRootCanvas.cxx:760
 TRootCanvas.cxx:761
 TRootCanvas.cxx:762
 TRootCanvas.cxx:763
 TRootCanvas.cxx:764
 TRootCanvas.cxx:765
 TRootCanvas.cxx:766
 TRootCanvas.cxx:767
 TRootCanvas.cxx:768
 TRootCanvas.cxx:769
 TRootCanvas.cxx:770
 TRootCanvas.cxx:771
 TRootCanvas.cxx:772
 TRootCanvas.cxx:773
 TRootCanvas.cxx:774
 TRootCanvas.cxx:775
 TRootCanvas.cxx:776
 TRootCanvas.cxx:777
 TRootCanvas.cxx:778
 TRootCanvas.cxx:779
 TRootCanvas.cxx:780
 TRootCanvas.cxx:781
 TRootCanvas.cxx:782
 TRootCanvas.cxx:783
 TRootCanvas.cxx:784
 TRootCanvas.cxx:785
 TRootCanvas.cxx:786
 TRootCanvas.cxx:787
 TRootCanvas.cxx:788
 TRootCanvas.cxx:789
 TRootCanvas.cxx:790
 TRootCanvas.cxx:791
 TRootCanvas.cxx:792
 TRootCanvas.cxx:793
 TRootCanvas.cxx:794
 TRootCanvas.cxx:795
 TRootCanvas.cxx:796
 TRootCanvas.cxx:797
 TRootCanvas.cxx:798
 TRootCanvas.cxx:799
 TRootCanvas.cxx:800
 TRootCanvas.cxx:801
 TRootCanvas.cxx:802
 TRootCanvas.cxx:803
 TRootCanvas.cxx:804
 TRootCanvas.cxx:805
 TRootCanvas.cxx:806
 TRootCanvas.cxx:807
 TRootCanvas.cxx:808
 TRootCanvas.cxx:809
 TRootCanvas.cxx:810
 TRootCanvas.cxx:811
 TRootCanvas.cxx:812
 TRootCanvas.cxx:813
 TRootCanvas.cxx:814
 TRootCanvas.cxx:815
 TRootCanvas.cxx:816
 TRootCanvas.cxx:817
 TRootCanvas.cxx:818
 TRootCanvas.cxx:819
 TRootCanvas.cxx:820
 TRootCanvas.cxx:821
 TRootCanvas.cxx:822
 TRootCanvas.cxx:823
 TRootCanvas.cxx:824
 TRootCanvas.cxx:825
 TRootCanvas.cxx:826
 TRootCanvas.cxx:827
 TRootCanvas.cxx:828
 TRootCanvas.cxx:829
 TRootCanvas.cxx:830
 TRootCanvas.cxx:831
 TRootCanvas.cxx:832
 TRootCanvas.cxx:833
 TRootCanvas.cxx:834
 TRootCanvas.cxx:835
 TRootCanvas.cxx:836
 TRootCanvas.cxx:837
 TRootCanvas.cxx:838
 TRootCanvas.cxx:839
 TRootCanvas.cxx:840
 TRootCanvas.cxx:841
 TRootCanvas.cxx:842
 TRootCanvas.cxx:843
 TRootCanvas.cxx:844
 TRootCanvas.cxx:845
 TRootCanvas.cxx:846
 TRootCanvas.cxx:847
 TRootCanvas.cxx:848
 TRootCanvas.cxx:849
 TRootCanvas.cxx:850
 TRootCanvas.cxx:851
 TRootCanvas.cxx:852
 TRootCanvas.cxx:853
 TRootCanvas.cxx:854
 TRootCanvas.cxx:855
 TRootCanvas.cxx:856
 TRootCanvas.cxx:857
 TRootCanvas.cxx:858
 TRootCanvas.cxx:859
 TRootCanvas.cxx:860
 TRootCanvas.cxx:861
 TRootCanvas.cxx:862
 TRootCanvas.cxx:863
 TRootCanvas.cxx:864
 TRootCanvas.cxx:865
 TRootCanvas.cxx:866
 TRootCanvas.cxx:867
 TRootCanvas.cxx:868
 TRootCanvas.cxx:869
 TRootCanvas.cxx:870
 TRootCanvas.cxx:871
 TRootCanvas.cxx:872
 TRootCanvas.cxx:873
 TRootCanvas.cxx:874
 TRootCanvas.cxx:875
 TRootCanvas.cxx:876
 TRootCanvas.cxx:877
 TRootCanvas.cxx:878
 TRootCanvas.cxx:879
 TRootCanvas.cxx:880
 TRootCanvas.cxx:881
 TRootCanvas.cxx:882
 TRootCanvas.cxx:883
 TRootCanvas.cxx:884
 TRootCanvas.cxx:885
 TRootCanvas.cxx:886
 TRootCanvas.cxx:887
 TRootCanvas.cxx:888
 TRootCanvas.cxx:889
 TRootCanvas.cxx:890
 TRootCanvas.cxx:891
 TRootCanvas.cxx:892
 TRootCanvas.cxx:893
 TRootCanvas.cxx:894
 TRootCanvas.cxx:895
 TRootCanvas.cxx:896
 TRootCanvas.cxx:897
 TRootCanvas.cxx:898
 TRootCanvas.cxx:899
 TRootCanvas.cxx:900
 TRootCanvas.cxx:901
 TRootCanvas.cxx:902
 TRootCanvas.cxx:903
 TRootCanvas.cxx:904
 TRootCanvas.cxx:905
 TRootCanvas.cxx:906
 TRootCanvas.cxx:907
 TRootCanvas.cxx:908
 TRootCanvas.cxx:909
 TRootCanvas.cxx:910
 TRootCanvas.cxx:911
 TRootCanvas.cxx:912
 TRootCanvas.cxx:913
 TRootCanvas.cxx:914
 TRootCanvas.cxx:915
 TRootCanvas.cxx:916
 TRootCanvas.cxx:917
 TRootCanvas.cxx:918
 TRootCanvas.cxx:919
 TRootCanvas.cxx:920
 TRootCanvas.cxx:921
 TRootCanvas.cxx:922
 TRootCanvas.cxx:923
 TRootCanvas.cxx:924
 TRootCanvas.cxx:925
 TRootCanvas.cxx:926
 TRootCanvas.cxx:927
 TRootCanvas.cxx:928
 TRootCanvas.cxx:929
 TRootCanvas.cxx:930
 TRootCanvas.cxx:931
 TRootCanvas.cxx:932
 TRootCanvas.cxx:933
 TRootCanvas.cxx:934
 TRootCanvas.cxx:935
 TRootCanvas.cxx:936
 TRootCanvas.cxx:937
 TRootCanvas.cxx:938
 TRootCanvas.cxx:939
 TRootCanvas.cxx:940
 TRootCanvas.cxx:941
 TRootCanvas.cxx:942
 TRootCanvas.cxx:943
 TRootCanvas.cxx:944
 TRootCanvas.cxx:945
 TRootCanvas.cxx:946
 TRootCanvas.cxx:947
 TRootCanvas.cxx:948
 TRootCanvas.cxx:949
 TRootCanvas.cxx:950
 TRootCanvas.cxx:951
 TRootCanvas.cxx:952
 TRootCanvas.cxx:953
 TRootCanvas.cxx:954
 TRootCanvas.cxx:955
 TRootCanvas.cxx:956
 TRootCanvas.cxx:957
 TRootCanvas.cxx:958
 TRootCanvas.cxx:959
 TRootCanvas.cxx:960
 TRootCanvas.cxx:961
 TRootCanvas.cxx:962
 TRootCanvas.cxx:963
 TRootCanvas.cxx:964
 TRootCanvas.cxx:965
 TRootCanvas.cxx:966
 TRootCanvas.cxx:967
 TRootCanvas.cxx:968
 TRootCanvas.cxx:969
 TRootCanvas.cxx:970
 TRootCanvas.cxx:971
 TRootCanvas.cxx:972
 TRootCanvas.cxx:973
 TRootCanvas.cxx:974
 TRootCanvas.cxx:975
 TRootCanvas.cxx:976
 TRootCanvas.cxx:977
 TRootCanvas.cxx:978
 TRootCanvas.cxx:979
 TRootCanvas.cxx:980
 TRootCanvas.cxx:981
 TRootCanvas.cxx:982
 TRootCanvas.cxx:983
 TRootCanvas.cxx:984
 TRootCanvas.cxx:985
 TRootCanvas.cxx:986
 TRootCanvas.cxx:987
 TRootCanvas.cxx:988
 TRootCanvas.cxx:989
 TRootCanvas.cxx:990
 TRootCanvas.cxx:991
 TRootCanvas.cxx:992
 TRootCanvas.cxx:993
 TRootCanvas.cxx:994
 TRootCanvas.cxx:995
 TRootCanvas.cxx:996
 TRootCanvas.cxx:997
 TRootCanvas.cxx:998
 TRootCanvas.cxx:999
 TRootCanvas.cxx:1000
 TRootCanvas.cxx:1001
 TRootCanvas.cxx:1002
 TRootCanvas.cxx:1003
 TRootCanvas.cxx:1004
 TRootCanvas.cxx:1005
 TRootCanvas.cxx:1006
 TRootCanvas.cxx:1007
 TRootCanvas.cxx:1008
 TRootCanvas.cxx:1009
 TRootCanvas.cxx:1010
 TRootCanvas.cxx:1011
 TRootCanvas.cxx:1012
 TRootCanvas.cxx:1013
 TRootCanvas.cxx:1014
 TRootCanvas.cxx:1015
 TRootCanvas.cxx:1016
 TRootCanvas.cxx:1017
 TRootCanvas.cxx:1018
 TRootCanvas.cxx:1019
 TRootCanvas.cxx:1020
 TRootCanvas.cxx:1021
 TRootCanvas.cxx:1022
 TRootCanvas.cxx:1023
 TRootCanvas.cxx:1024
 TRootCanvas.cxx:1025
 TRootCanvas.cxx:1026
 TRootCanvas.cxx:1027
 TRootCanvas.cxx:1028
 TRootCanvas.cxx:1029
 TRootCanvas.cxx:1030
 TRootCanvas.cxx:1031
 TRootCanvas.cxx:1032
 TRootCanvas.cxx:1033
 TRootCanvas.cxx:1034
 TRootCanvas.cxx:1035
 TRootCanvas.cxx:1036
 TRootCanvas.cxx:1037
 TRootCanvas.cxx:1038
 TRootCanvas.cxx:1039
 TRootCanvas.cxx:1040
 TRootCanvas.cxx:1041
 TRootCanvas.cxx:1042
 TRootCanvas.cxx:1043
 TRootCanvas.cxx:1044
 TRootCanvas.cxx:1045
 TRootCanvas.cxx:1046
 TRootCanvas.cxx:1047
 TRootCanvas.cxx:1048
 TRootCanvas.cxx:1049
 TRootCanvas.cxx:1050
 TRootCanvas.cxx:1051
 TRootCanvas.cxx:1052
 TRootCanvas.cxx:1053
 TRootCanvas.cxx:1054
 TRootCanvas.cxx:1055
 TRootCanvas.cxx:1056
 TRootCanvas.cxx:1057
 TRootCanvas.cxx:1058
 TRootCanvas.cxx:1059
 TRootCanvas.cxx:1060
 TRootCanvas.cxx:1061
 TRootCanvas.cxx:1062
 TRootCanvas.cxx:1063
 TRootCanvas.cxx:1064
 TRootCanvas.cxx:1065
 TRootCanvas.cxx:1066
 TRootCanvas.cxx:1067
 TRootCanvas.cxx:1068
 TRootCanvas.cxx:1069
 TRootCanvas.cxx:1070
 TRootCanvas.cxx:1071
 TRootCanvas.cxx:1072
 TRootCanvas.cxx:1073
 TRootCanvas.cxx:1074
 TRootCanvas.cxx:1075
 TRootCanvas.cxx:1076
 TRootCanvas.cxx:1077
 TRootCanvas.cxx:1078
 TRootCanvas.cxx:1079
 TRootCanvas.cxx:1080
 TRootCanvas.cxx:1081
 TRootCanvas.cxx:1082
 TRootCanvas.cxx:1083
 TRootCanvas.cxx:1084
 TRootCanvas.cxx:1085
 TRootCanvas.cxx:1086
 TRootCanvas.cxx:1087
 TRootCanvas.cxx:1088
 TRootCanvas.cxx:1089
 TRootCanvas.cxx:1090
 TRootCanvas.cxx:1091
 TRootCanvas.cxx:1092
 TRootCanvas.cxx:1093
 TRootCanvas.cxx:1094
 TRootCanvas.cxx:1095
 TRootCanvas.cxx:1096
 TRootCanvas.cxx:1097
 TRootCanvas.cxx:1098
 TRootCanvas.cxx:1099
 TRootCanvas.cxx:1100
 TRootCanvas.cxx:1101
 TRootCanvas.cxx:1102
 TRootCanvas.cxx:1103
 TRootCanvas.cxx:1104
 TRootCanvas.cxx:1105
 TRootCanvas.cxx:1106
 TRootCanvas.cxx:1107
 TRootCanvas.cxx:1108
 TRootCanvas.cxx:1109
 TRootCanvas.cxx:1110
 TRootCanvas.cxx:1111
 TRootCanvas.cxx:1112
 TRootCanvas.cxx:1113
 TRootCanvas.cxx:1114
 TRootCanvas.cxx:1115
 TRootCanvas.cxx:1116
 TRootCanvas.cxx:1117
 TRootCanvas.cxx:1118
 TRootCanvas.cxx:1119
 TRootCanvas.cxx:1120
 TRootCanvas.cxx:1121
 TRootCanvas.cxx:1122
 TRootCanvas.cxx:1123
 TRootCanvas.cxx:1124
 TRootCanvas.cxx:1125
 TRootCanvas.cxx:1126
 TRootCanvas.cxx:1127
 TRootCanvas.cxx:1128
 TRootCanvas.cxx:1129
 TRootCanvas.cxx:1130
 TRootCanvas.cxx:1131
 TRootCanvas.cxx:1132
 TRootCanvas.cxx:1133
 TRootCanvas.cxx:1134
 TRootCanvas.cxx:1135
 TRootCanvas.cxx:1136
 TRootCanvas.cxx:1137
 TRootCanvas.cxx:1138
 TRootCanvas.cxx:1139
 TRootCanvas.cxx:1140
 TRootCanvas.cxx:1141
 TRootCanvas.cxx:1142
 TRootCanvas.cxx:1143
 TRootCanvas.cxx:1144
 TRootCanvas.cxx:1145
 TRootCanvas.cxx:1146
 TRootCanvas.cxx:1147
 TRootCanvas.cxx:1148
 TRootCanvas.cxx:1149
 TRootCanvas.cxx:1150
 TRootCanvas.cxx:1151
 TRootCanvas.cxx:1152
 TRootCanvas.cxx:1153
 TRootCanvas.cxx:1154
 TRootCanvas.cxx:1155
 TRootCanvas.cxx:1156
 TRootCanvas.cxx:1157
 TRootCanvas.cxx:1158
 TRootCanvas.cxx:1159
 TRootCanvas.cxx:1160
 TRootCanvas.cxx:1161
 TRootCanvas.cxx:1162
 TRootCanvas.cxx:1163
 TRootCanvas.cxx:1164
 TRootCanvas.cxx:1165
 TRootCanvas.cxx:1166
 TRootCanvas.cxx:1167
 TRootCanvas.cxx:1168
 TRootCanvas.cxx:1169
 TRootCanvas.cxx:1170
 TRootCanvas.cxx:1171
 TRootCanvas.cxx:1172
 TRootCanvas.cxx:1173
 TRootCanvas.cxx:1174
 TRootCanvas.cxx:1175
 TRootCanvas.cxx:1176
 TRootCanvas.cxx:1177
 TRootCanvas.cxx:1178
 TRootCanvas.cxx:1179
 TRootCanvas.cxx:1180
 TRootCanvas.cxx:1181
 TRootCanvas.cxx:1182
 TRootCanvas.cxx:1183
 TRootCanvas.cxx:1184
 TRootCanvas.cxx:1185
 TRootCanvas.cxx:1186
 TRootCanvas.cxx:1187
 TRootCanvas.cxx:1188
 TRootCanvas.cxx:1189
 TRootCanvas.cxx:1190
 TRootCanvas.cxx:1191
 TRootCanvas.cxx:1192
 TRootCanvas.cxx:1193
 TRootCanvas.cxx:1194
 TRootCanvas.cxx:1195
 TRootCanvas.cxx:1196
 TRootCanvas.cxx:1197
 TRootCanvas.cxx:1198
 TRootCanvas.cxx:1199
 TRootCanvas.cxx:1200
 TRootCanvas.cxx:1201
 TRootCanvas.cxx:1202
 TRootCanvas.cxx:1203
 TRootCanvas.cxx:1204
 TRootCanvas.cxx:1205
 TRootCanvas.cxx:1206
 TRootCanvas.cxx:1207
 TRootCanvas.cxx:1208
 TRootCanvas.cxx:1209
 TRootCanvas.cxx:1210
 TRootCanvas.cxx:1211
 TRootCanvas.cxx:1212
 TRootCanvas.cxx:1213
 TRootCanvas.cxx:1214
 TRootCanvas.cxx:1215
 TRootCanvas.cxx:1216
 TRootCanvas.cxx:1217
 TRootCanvas.cxx:1218
 TRootCanvas.cxx:1219
 TRootCanvas.cxx:1220
 TRootCanvas.cxx:1221
 TRootCanvas.cxx:1222
 TRootCanvas.cxx:1223
 TRootCanvas.cxx:1224
 TRootCanvas.cxx:1225
 TRootCanvas.cxx:1226
 TRootCanvas.cxx:1227
 TRootCanvas.cxx:1228
 TRootCanvas.cxx:1229
 TRootCanvas.cxx:1230
 TRootCanvas.cxx:1231
 TRootCanvas.cxx:1232
 TRootCanvas.cxx:1233
 TRootCanvas.cxx:1234
 TRootCanvas.cxx:1235
 TRootCanvas.cxx:1236
 TRootCanvas.cxx:1237
 TRootCanvas.cxx:1238
 TRootCanvas.cxx:1239
 TRootCanvas.cxx:1240
 TRootCanvas.cxx:1241
 TRootCanvas.cxx:1242
 TRootCanvas.cxx:1243
 TRootCanvas.cxx:1244
 TRootCanvas.cxx:1245
 TRootCanvas.cxx:1246
 TRootCanvas.cxx:1247
 TRootCanvas.cxx:1248
 TRootCanvas.cxx:1249
 TRootCanvas.cxx:1250
 TRootCanvas.cxx:1251
 TRootCanvas.cxx:1252
 TRootCanvas.cxx:1253
 TRootCanvas.cxx:1254
 TRootCanvas.cxx:1255
 TRootCanvas.cxx:1256
 TRootCanvas.cxx:1257
 TRootCanvas.cxx:1258
 TRootCanvas.cxx:1259
 TRootCanvas.cxx:1260
 TRootCanvas.cxx:1261
 TRootCanvas.cxx:1262
 TRootCanvas.cxx:1263
 TRootCanvas.cxx:1264
 TRootCanvas.cxx:1265
 TRootCanvas.cxx:1266
 TRootCanvas.cxx:1267
 TRootCanvas.cxx:1268
 TRootCanvas.cxx:1269
 TRootCanvas.cxx:1270
 TRootCanvas.cxx:1271
 TRootCanvas.cxx:1272
 TRootCanvas.cxx:1273
 TRootCanvas.cxx:1274
 TRootCanvas.cxx:1275
 TRootCanvas.cxx:1276
 TRootCanvas.cxx:1277
 TRootCanvas.cxx:1278
 TRootCanvas.cxx:1279
 TRootCanvas.cxx:1280
 TRootCanvas.cxx:1281
 TRootCanvas.cxx:1282
 TRootCanvas.cxx:1283
 TRootCanvas.cxx:1284
 TRootCanvas.cxx:1285
 TRootCanvas.cxx:1286
 TRootCanvas.cxx:1287
 TRootCanvas.cxx:1288
 TRootCanvas.cxx:1289
 TRootCanvas.cxx:1290
 TRootCanvas.cxx:1291
 TRootCanvas.cxx:1292
 TRootCanvas.cxx:1293
 TRootCanvas.cxx:1294
 TRootCanvas.cxx:1295
 TRootCanvas.cxx:1296
 TRootCanvas.cxx:1297
 TRootCanvas.cxx:1298
 TRootCanvas.cxx:1299
 TRootCanvas.cxx:1300
 TRootCanvas.cxx:1301
 TRootCanvas.cxx:1302
 TRootCanvas.cxx:1303
 TRootCanvas.cxx:1304
 TRootCanvas.cxx:1305
 TRootCanvas.cxx:1306
 TRootCanvas.cxx:1307
 TRootCanvas.cxx:1308
 TRootCanvas.cxx:1309
 TRootCanvas.cxx:1310
 TRootCanvas.cxx:1311
 TRootCanvas.cxx:1312
 TRootCanvas.cxx:1313
 TRootCanvas.cxx:1314
 TRootCanvas.cxx:1315
 TRootCanvas.cxx:1316
 TRootCanvas.cxx:1317
 TRootCanvas.cxx:1318
 TRootCanvas.cxx:1319
 TRootCanvas.cxx:1320
 TRootCanvas.cxx:1321
 TRootCanvas.cxx:1322
 TRootCanvas.cxx:1323
 TRootCanvas.cxx:1324
 TRootCanvas.cxx:1325
 TRootCanvas.cxx:1326
 TRootCanvas.cxx:1327
 TRootCanvas.cxx:1328
 TRootCanvas.cxx:1329
 TRootCanvas.cxx:1330
 TRootCanvas.cxx:1331
 TRootCanvas.cxx:1332
 TRootCanvas.cxx:1333
 TRootCanvas.cxx:1334
 TRootCanvas.cxx:1335
 TRootCanvas.cxx:1336
 TRootCanvas.cxx:1337
 TRootCanvas.cxx:1338
 TRootCanvas.cxx:1339
 TRootCanvas.cxx:1340
 TRootCanvas.cxx:1341
 TRootCanvas.cxx:1342
 TRootCanvas.cxx:1343
 TRootCanvas.cxx:1344
 TRootCanvas.cxx:1345
 TRootCanvas.cxx:1346
 TRootCanvas.cxx:1347
 TRootCanvas.cxx:1348
 TRootCanvas.cxx:1349
 TRootCanvas.cxx:1350
 TRootCanvas.cxx:1351
 TRootCanvas.cxx:1352
 TRootCanvas.cxx:1353
 TRootCanvas.cxx:1354
 TRootCanvas.cxx:1355
 TRootCanvas.cxx:1356
 TRootCanvas.cxx:1357
 TRootCanvas.cxx:1358
 TRootCanvas.cxx:1359
 TRootCanvas.cxx:1360
 TRootCanvas.cxx:1361
 TRootCanvas.cxx:1362
 TRootCanvas.cxx:1363
 TRootCanvas.cxx:1364
 TRootCanvas.cxx:1365
 TRootCanvas.cxx:1366
 TRootCanvas.cxx:1367
 TRootCanvas.cxx:1368
 TRootCanvas.cxx:1369
 TRootCanvas.cxx:1370
 TRootCanvas.cxx:1371
 TRootCanvas.cxx:1372
 TRootCanvas.cxx:1373
 TRootCanvas.cxx:1374
 TRootCanvas.cxx:1375
 TRootCanvas.cxx:1376
 TRootCanvas.cxx:1377
 TRootCanvas.cxx:1378
 TRootCanvas.cxx:1379
 TRootCanvas.cxx:1380
 TRootCanvas.cxx:1381
 TRootCanvas.cxx:1382
 TRootCanvas.cxx:1383
 TRootCanvas.cxx:1384
 TRootCanvas.cxx:1385
 TRootCanvas.cxx:1386
 TRootCanvas.cxx:1387
 TRootCanvas.cxx:1388
 TRootCanvas.cxx:1389
 TRootCanvas.cxx:1390
 TRootCanvas.cxx:1391
 TRootCanvas.cxx:1392
 TRootCanvas.cxx:1393
 TRootCanvas.cxx:1394
 TRootCanvas.cxx:1395
 TRootCanvas.cxx:1396
 TRootCanvas.cxx:1397
 TRootCanvas.cxx:1398
 TRootCanvas.cxx:1399
 TRootCanvas.cxx:1400
 TRootCanvas.cxx:1401
 TRootCanvas.cxx:1402
 TRootCanvas.cxx:1403
 TRootCanvas.cxx:1404
 TRootCanvas.cxx:1405
 TRootCanvas.cxx:1406
 TRootCanvas.cxx:1407
 TRootCanvas.cxx:1408
 TRootCanvas.cxx:1409
 TRootCanvas.cxx:1410
 TRootCanvas.cxx:1411
 TRootCanvas.cxx:1412
 TRootCanvas.cxx:1413
 TRootCanvas.cxx:1414
 TRootCanvas.cxx:1415
 TRootCanvas.cxx:1416
 TRootCanvas.cxx:1417
 TRootCanvas.cxx:1418
 TRootCanvas.cxx:1419
 TRootCanvas.cxx:1420
 TRootCanvas.cxx:1421
 TRootCanvas.cxx:1422
 TRootCanvas.cxx:1423
 TRootCanvas.cxx:1424
 TRootCanvas.cxx:1425
 TRootCanvas.cxx:1426
 TRootCanvas.cxx:1427
 TRootCanvas.cxx:1428
 TRootCanvas.cxx:1429
 TRootCanvas.cxx:1430
 TRootCanvas.cxx:1431
 TRootCanvas.cxx:1432
 TRootCanvas.cxx:1433
 TRootCanvas.cxx:1434
 TRootCanvas.cxx:1435
 TRootCanvas.cxx:1436
 TRootCanvas.cxx:1437
 TRootCanvas.cxx:1438
 TRootCanvas.cxx:1439
 TRootCanvas.cxx:1440
 TRootCanvas.cxx:1441
 TRootCanvas.cxx:1442
 TRootCanvas.cxx:1443
 TRootCanvas.cxx:1444
 TRootCanvas.cxx:1445
 TRootCanvas.cxx:1446
 TRootCanvas.cxx:1447
 TRootCanvas.cxx:1448
 TRootCanvas.cxx:1449
 TRootCanvas.cxx:1450
 TRootCanvas.cxx:1451
 TRootCanvas.cxx:1452
 TRootCanvas.cxx:1453
 TRootCanvas.cxx:1454
 TRootCanvas.cxx:1455
 TRootCanvas.cxx:1456
 TRootCanvas.cxx:1457
 TRootCanvas.cxx:1458
 TRootCanvas.cxx:1459
 TRootCanvas.cxx:1460
 TRootCanvas.cxx:1461
 TRootCanvas.cxx:1462
 TRootCanvas.cxx:1463
 TRootCanvas.cxx:1464
 TRootCanvas.cxx:1465
 TRootCanvas.cxx:1466
 TRootCanvas.cxx:1467
 TRootCanvas.cxx:1468
 TRootCanvas.cxx:1469
 TRootCanvas.cxx:1470
 TRootCanvas.cxx:1471
 TRootCanvas.cxx:1472
 TRootCanvas.cxx:1473
 TRootCanvas.cxx:1474
 TRootCanvas.cxx:1475
 TRootCanvas.cxx:1476
 TRootCanvas.cxx:1477
 TRootCanvas.cxx:1478
 TRootCanvas.cxx:1479
 TRootCanvas.cxx:1480
 TRootCanvas.cxx:1481
 TRootCanvas.cxx:1482
 TRootCanvas.cxx:1483
 TRootCanvas.cxx:1484
 TRootCanvas.cxx:1485
 TRootCanvas.cxx:1486
 TRootCanvas.cxx:1487
 TRootCanvas.cxx:1488
 TRootCanvas.cxx:1489
 TRootCanvas.cxx:1490
 TRootCanvas.cxx:1491
 TRootCanvas.cxx:1492
 TRootCanvas.cxx:1493
 TRootCanvas.cxx:1494
 TRootCanvas.cxx:1495
 TRootCanvas.cxx:1496
 TRootCanvas.cxx:1497
 TRootCanvas.cxx:1498
 TRootCanvas.cxx:1499
 TRootCanvas.cxx:1500
 TRootCanvas.cxx:1501
 TRootCanvas.cxx:1502
 TRootCanvas.cxx:1503
 TRootCanvas.cxx:1504
 TRootCanvas.cxx:1505
 TRootCanvas.cxx:1506
 TRootCanvas.cxx:1507
 TRootCanvas.cxx:1508
 TRootCanvas.cxx:1509
 TRootCanvas.cxx:1510
 TRootCanvas.cxx:1511
 TRootCanvas.cxx:1512
 TRootCanvas.cxx:1513
 TRootCanvas.cxx:1514
 TRootCanvas.cxx:1515
 TRootCanvas.cxx:1516
 TRootCanvas.cxx:1517
 TRootCanvas.cxx:1518
 TRootCanvas.cxx:1519
 TRootCanvas.cxx:1520
 TRootCanvas.cxx:1521
 TRootCanvas.cxx:1522
 TRootCanvas.cxx:1523
 TRootCanvas.cxx:1524
 TRootCanvas.cxx:1525
 TRootCanvas.cxx:1526
 TRootCanvas.cxx:1527
 TRootCanvas.cxx:1528
 TRootCanvas.cxx:1529
 TRootCanvas.cxx:1530
 TRootCanvas.cxx:1531
 TRootCanvas.cxx:1532
 TRootCanvas.cxx:1533
 TRootCanvas.cxx:1534
 TRootCanvas.cxx:1535
 TRootCanvas.cxx:1536
 TRootCanvas.cxx:1537
 TRootCanvas.cxx:1538
 TRootCanvas.cxx:1539
 TRootCanvas.cxx:1540
 TRootCanvas.cxx:1541
 TRootCanvas.cxx:1542
 TRootCanvas.cxx:1543
 TRootCanvas.cxx:1544
 TRootCanvas.cxx:1545
 TRootCanvas.cxx:1546
 TRootCanvas.cxx:1547
 TRootCanvas.cxx:1548
 TRootCanvas.cxx:1549
 TRootCanvas.cxx:1550
 TRootCanvas.cxx:1551
 TRootCanvas.cxx:1552
 TRootCanvas.cxx:1553
 TRootCanvas.cxx:1554
 TRootCanvas.cxx:1555
 TRootCanvas.cxx:1556
 TRootCanvas.cxx:1557
 TRootCanvas.cxx:1558
 TRootCanvas.cxx:1559
 TRootCanvas.cxx:1560
 TRootCanvas.cxx:1561
 TRootCanvas.cxx:1562
 TRootCanvas.cxx:1563
 TRootCanvas.cxx:1564
 TRootCanvas.cxx:1565
 TRootCanvas.cxx:1566
 TRootCanvas.cxx:1567
 TRootCanvas.cxx:1568
 TRootCanvas.cxx:1569
 TRootCanvas.cxx:1570
 TRootCanvas.cxx:1571
 TRootCanvas.cxx:1572
 TRootCanvas.cxx:1573
 TRootCanvas.cxx:1574
 TRootCanvas.cxx:1575
 TRootCanvas.cxx:1576
 TRootCanvas.cxx:1577
 TRootCanvas.cxx:1578
 TRootCanvas.cxx:1579
 TRootCanvas.cxx:1580
 TRootCanvas.cxx:1581
 TRootCanvas.cxx:1582
 TRootCanvas.cxx:1583
 TRootCanvas.cxx:1584
 TRootCanvas.cxx:1585
 TRootCanvas.cxx:1586
 TRootCanvas.cxx:1587
 TRootCanvas.cxx:1588
 TRootCanvas.cxx:1589
 TRootCanvas.cxx:1590
 TRootCanvas.cxx:1591
 TRootCanvas.cxx:1592
 TRootCanvas.cxx:1593
 TRootCanvas.cxx:1594
 TRootCanvas.cxx:1595
 TRootCanvas.cxx:1596
 TRootCanvas.cxx:1597
 TRootCanvas.cxx:1598
 TRootCanvas.cxx:1599
 TRootCanvas.cxx:1600
 TRootCanvas.cxx:1601
 TRootCanvas.cxx:1602
 TRootCanvas.cxx:1603
 TRootCanvas.cxx:1604
 TRootCanvas.cxx:1605
 TRootCanvas.cxx:1606
 TRootCanvas.cxx:1607
 TRootCanvas.cxx:1608
 TRootCanvas.cxx:1609
 TRootCanvas.cxx:1610
 TRootCanvas.cxx:1611
 TRootCanvas.cxx:1612
 TRootCanvas.cxx:1613
 TRootCanvas.cxx:1614
 TRootCanvas.cxx:1615
 TRootCanvas.cxx:1616
 TRootCanvas.cxx:1617
 TRootCanvas.cxx:1618
 TRootCanvas.cxx:1619
 TRootCanvas.cxx:1620
 TRootCanvas.cxx:1621
 TRootCanvas.cxx:1622
 TRootCanvas.cxx:1623
 TRootCanvas.cxx:1624
 TRootCanvas.cxx:1625
 TRootCanvas.cxx:1626
 TRootCanvas.cxx:1627
 TRootCanvas.cxx:1628
 TRootCanvas.cxx:1629
 TRootCanvas.cxx:1630
 TRootCanvas.cxx:1631
 TRootCanvas.cxx:1632
 TRootCanvas.cxx:1633
 TRootCanvas.cxx:1634
 TRootCanvas.cxx:1635
 TRootCanvas.cxx:1636
 TRootCanvas.cxx:1637
 TRootCanvas.cxx:1638
 TRootCanvas.cxx:1639
 TRootCanvas.cxx:1640
 TRootCanvas.cxx:1641
 TRootCanvas.cxx:1642
 TRootCanvas.cxx:1643
 TRootCanvas.cxx:1644
 TRootCanvas.cxx:1645
 TRootCanvas.cxx:1646
 TRootCanvas.cxx:1647
 TRootCanvas.cxx:1648
 TRootCanvas.cxx:1649
 TRootCanvas.cxx:1650
 TRootCanvas.cxx:1651
 TRootCanvas.cxx:1652
 TRootCanvas.cxx:1653
 TRootCanvas.cxx:1654
 TRootCanvas.cxx:1655
 TRootCanvas.cxx:1656
 TRootCanvas.cxx:1657
 TRootCanvas.cxx:1658
 TRootCanvas.cxx:1659
 TRootCanvas.cxx:1660
 TRootCanvas.cxx:1661
 TRootCanvas.cxx:1662
 TRootCanvas.cxx:1663
 TRootCanvas.cxx:1664
 TRootCanvas.cxx:1665
 TRootCanvas.cxx:1666
 TRootCanvas.cxx:1667
 TRootCanvas.cxx:1668
 TRootCanvas.cxx:1669
 TRootCanvas.cxx:1670
 TRootCanvas.cxx:1671
 TRootCanvas.cxx:1672
 TRootCanvas.cxx:1673
 TRootCanvas.cxx:1674
 TRootCanvas.cxx:1675
 TRootCanvas.cxx:1676
 TRootCanvas.cxx:1677
 TRootCanvas.cxx:1678
 TRootCanvas.cxx:1679
 TRootCanvas.cxx:1680
 TRootCanvas.cxx:1681
 TRootCanvas.cxx:1682
 TRootCanvas.cxx:1683
 TRootCanvas.cxx:1684
 TRootCanvas.cxx:1685
 TRootCanvas.cxx:1686
 TRootCanvas.cxx:1687
 TRootCanvas.cxx:1688
 TRootCanvas.cxx:1689
 TRootCanvas.cxx:1690
 TRootCanvas.cxx:1691
 TRootCanvas.cxx:1692
 TRootCanvas.cxx:1693
 TRootCanvas.cxx:1694
 TRootCanvas.cxx:1695
 TRootCanvas.cxx:1696
 TRootCanvas.cxx:1697
 TRootCanvas.cxx:1698
 TRootCanvas.cxx:1699
 TRootCanvas.cxx:1700
 TRootCanvas.cxx:1701
 TRootCanvas.cxx:1702
 TRootCanvas.cxx:1703
 TRootCanvas.cxx:1704
 TRootCanvas.cxx:1705
 TRootCanvas.cxx:1706
 TRootCanvas.cxx:1707
 TRootCanvas.cxx:1708
 TRootCanvas.cxx:1709
 TRootCanvas.cxx:1710
 TRootCanvas.cxx:1711
 TRootCanvas.cxx:1712
 TRootCanvas.cxx:1713
 TRootCanvas.cxx:1714
 TRootCanvas.cxx:1715
 TRootCanvas.cxx:1716
 TRootCanvas.cxx:1717
 TRootCanvas.cxx:1718
 TRootCanvas.cxx:1719
 TRootCanvas.cxx:1720
 TRootCanvas.cxx:1721
 TRootCanvas.cxx:1722
 TRootCanvas.cxx:1723
 TRootCanvas.cxx:1724
 TRootCanvas.cxx:1725
 TRootCanvas.cxx:1726
 TRootCanvas.cxx:1727
 TRootCanvas.cxx:1728
 TRootCanvas.cxx:1729
 TRootCanvas.cxx:1730
 TRootCanvas.cxx:1731
 TRootCanvas.cxx:1732
 TRootCanvas.cxx:1733
 TRootCanvas.cxx:1734
 TRootCanvas.cxx:1735
 TRootCanvas.cxx:1736
 TRootCanvas.cxx:1737
 TRootCanvas.cxx:1738
 TRootCanvas.cxx:1739
 TRootCanvas.cxx:1740
 TRootCanvas.cxx:1741
 TRootCanvas.cxx:1742
 TRootCanvas.cxx:1743
 TRootCanvas.cxx:1744
 TRootCanvas.cxx:1745
 TRootCanvas.cxx:1746
 TRootCanvas.cxx:1747
 TRootCanvas.cxx:1748
 TRootCanvas.cxx:1749
 TRootCanvas.cxx:1750
 TRootCanvas.cxx:1751
 TRootCanvas.cxx:1752
 TRootCanvas.cxx:1753
 TRootCanvas.cxx:1754
 TRootCanvas.cxx:1755
 TRootCanvas.cxx:1756
 TRootCanvas.cxx:1757
 TRootCanvas.cxx:1758
 TRootCanvas.cxx:1759
 TRootCanvas.cxx:1760
 TRootCanvas.cxx:1761
 TRootCanvas.cxx:1762
 TRootCanvas.cxx:1763
 TRootCanvas.cxx:1764
 TRootCanvas.cxx:1765
 TRootCanvas.cxx:1766
 TRootCanvas.cxx:1767
 TRootCanvas.cxx:1768
 TRootCanvas.cxx:1769
 TRootCanvas.cxx:1770
 TRootCanvas.cxx:1771
 TRootCanvas.cxx:1772
 TRootCanvas.cxx:1773
 TRootCanvas.cxx:1774
 TRootCanvas.cxx:1775
 TRootCanvas.cxx:1776
 TRootCanvas.cxx:1777
 TRootCanvas.cxx:1778
 TRootCanvas.cxx:1779
 TRootCanvas.cxx:1780
 TRootCanvas.cxx:1781
 TRootCanvas.cxx:1782
 TRootCanvas.cxx:1783
 TRootCanvas.cxx:1784
 TRootCanvas.cxx:1785
 TRootCanvas.cxx:1786
 TRootCanvas.cxx:1787
 TRootCanvas.cxx:1788
 TRootCanvas.cxx:1789
 TRootCanvas.cxx:1790
 TRootCanvas.cxx:1791
 TRootCanvas.cxx:1792
 TRootCanvas.cxx:1793
 TRootCanvas.cxx:1794
 TRootCanvas.cxx:1795
 TRootCanvas.cxx:1796
 TRootCanvas.cxx:1797
 TRootCanvas.cxx:1798
 TRootCanvas.cxx:1799
 TRootCanvas.cxx:1800
 TRootCanvas.cxx:1801
 TRootCanvas.cxx:1802
 TRootCanvas.cxx:1803
 TRootCanvas.cxx:1804
 TRootCanvas.cxx:1805
 TRootCanvas.cxx:1806
 TRootCanvas.cxx:1807
 TRootCanvas.cxx:1808
 TRootCanvas.cxx:1809
 TRootCanvas.cxx:1810
 TRootCanvas.cxx:1811
 TRootCanvas.cxx:1812
 TRootCanvas.cxx:1813
 TRootCanvas.cxx:1814
 TRootCanvas.cxx:1815
 TRootCanvas.cxx:1816
 TRootCanvas.cxx:1817
 TRootCanvas.cxx:1818
 TRootCanvas.cxx:1819
 TRootCanvas.cxx:1820
 TRootCanvas.cxx:1821
 TRootCanvas.cxx:1822
 TRootCanvas.cxx:1823
 TRootCanvas.cxx:1824
 TRootCanvas.cxx:1825
 TRootCanvas.cxx:1826
 TRootCanvas.cxx:1827
 TRootCanvas.cxx:1828
 TRootCanvas.cxx:1829
 TRootCanvas.cxx:1830
 TRootCanvas.cxx:1831
 TRootCanvas.cxx:1832
 TRootCanvas.cxx:1833
 TRootCanvas.cxx:1834
 TRootCanvas.cxx:1835
 TRootCanvas.cxx:1836
 TRootCanvas.cxx:1837
 TRootCanvas.cxx:1838
 TRootCanvas.cxx:1839
 TRootCanvas.cxx:1840
 TRootCanvas.cxx:1841
 TRootCanvas.cxx:1842
 TRootCanvas.cxx:1843
 TRootCanvas.cxx:1844
 TRootCanvas.cxx:1845
 TRootCanvas.cxx:1846
 TRootCanvas.cxx:1847
 TRootCanvas.cxx:1848
 TRootCanvas.cxx:1849
 TRootCanvas.cxx:1850
 TRootCanvas.cxx:1851
 TRootCanvas.cxx:1852
 TRootCanvas.cxx:1853
 TRootCanvas.cxx:1854
 TRootCanvas.cxx:1855
 TRootCanvas.cxx:1856
 TRootCanvas.cxx:1857
 TRootCanvas.cxx:1858
 TRootCanvas.cxx:1859
 TRootCanvas.cxx:1860
 TRootCanvas.cxx:1861
 TRootCanvas.cxx:1862
 TRootCanvas.cxx:1863
 TRootCanvas.cxx:1864
 TRootCanvas.cxx:1865
 TRootCanvas.cxx:1866
 TRootCanvas.cxx:1867
 TRootCanvas.cxx:1868
 TRootCanvas.cxx:1869
 TRootCanvas.cxx:1870
 TRootCanvas.cxx:1871
 TRootCanvas.cxx:1872
 TRootCanvas.cxx:1873
 TRootCanvas.cxx:1874
 TRootCanvas.cxx:1875
 TRootCanvas.cxx:1876
 TRootCanvas.cxx:1877
 TRootCanvas.cxx:1878
 TRootCanvas.cxx:1879
 TRootCanvas.cxx:1880
 TRootCanvas.cxx:1881
 TRootCanvas.cxx:1882
 TRootCanvas.cxx:1883
 TRootCanvas.cxx:1884
 TRootCanvas.cxx:1885
 TRootCanvas.cxx:1886
 TRootCanvas.cxx:1887
 TRootCanvas.cxx:1888
 TRootCanvas.cxx:1889
 TRootCanvas.cxx:1890
 TRootCanvas.cxx:1891
 TRootCanvas.cxx:1892
 TRootCanvas.cxx:1893
 TRootCanvas.cxx:1894
 TRootCanvas.cxx:1895
 TRootCanvas.cxx:1896
 TRootCanvas.cxx:1897
 TRootCanvas.cxx:1898
 TRootCanvas.cxx:1899
 TRootCanvas.cxx:1900