// @(#)root/gui:$Id$
// Author: Fons Rademakers   11/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.             *
 *************************************************************************/
/**************************************************************************

    This source is based on Xclass95, a Win95-looking GUI toolkit.
    Copyright (C) 1996, 1997 David Barth, Ricky Ralston, Hector Peraza.

    Xclass95 is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
    License as published by the Free Software Foundation; either
    version 2 of the License, or (at your option) any later version.

**************************************************************************/

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGCanvas and TGViewPort and TGContainer                              //
//                                                                      //
// A TGCanvas is a frame containing two scrollbars (a horizontal and    //
// a vertical) and a viewport. The viewport acts as the window through  //
// which we look at the contents of the container frame.                //
//                                                                      //
// A TGContainer frame manages a content area. It can display and       //
// control a hierarchy of multi-column items, and provides the ability  //
// to add new items at any time. By default it doesn't map subwindows   //
// which are items of the container. In this case subwindow must        //
// provide DrawCopy method, see for example TGLVEntry class.            //
// It is also possible to use option which allow to map subwindows.     //
// This option has much slower drawing speed in case of more than 1000  //
// items placed in container. To activate this option the fMapSubwindows//
// data member must be set to kTRUE (for example TTVLVContainer class)  //
//                                                                      //
//   The TGContainer class can handle the keys:                         //
//                                                                      //
//    o  F7, Ctnrl-F - activate search dialog                           //
//    o  F3, Ctnrl-G - continue search                                  //
//    o  End - go to the last item in container                         //
//    o  Home - go to the first item in container                       //
//    o  PageUp,PageDown,arrow keys - navigate inside container         //
//    o  Return/Enter - equivalent to double click of the mouse button  //
//    o  Contrl-A - select/activate all items.                          //
//    o  Space - invert selection.                                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGCanvas.h"
#include "TGListView.h"
#include "TGScrollBar.h"
#include "TTimer.h"
#include "KeySymbols.h"
#include "TSystem.h"
#include "TGTextEditDialogs.h"
#include "TGMsgBox.h"
#include "TGResourcePool.h"
#include "TList.h"
#include "TClass.h"
#include "TGListView.h"
#include "TGMimeTypes.h"
#include "TKey.h"
#include "TKeyMapFile.h"
#include "TGDNDManager.h"
#include "Riostream.h"
#include "RConfigure.h"
#include <stdlib.h>


TGGC *TGContainer::fgLineGC = 0;

const Int_t kAutoScrollFudge = 10;
const Int_t kAcceleration[kAutoScrollFudge+1] = {1,1,1,2,3,4,6,7,8,16,32};
const Int_t kKeyboardTime = 700;

ClassImp(TGCanvas)
ClassImp(TGViewPort)
ClassImp(TGContainer)


//______________________________________________________________________________
class TGContainerKeyboardTimer : public TTimer {

private:
   TGContainer   *fContainer;
public:
   TGContainerKeyboardTimer(TGContainer *t) : TTimer(kKeyboardTime) { fContainer = t; }
   Bool_t Notify();
};

//______________________________________________________________________________
Bool_t TGContainerKeyboardTimer::Notify()
{
   // single shot timer

   fContainer->SearchPattern();
   Reset();
   if (gSystem) gSystem->RemoveTimer(this);
   return kFALSE;
}

//______________________________________________________________________________
class TGContainerScrollTimer : public TTimer {

private:
   TGContainer   *fContainer;
public:
   TGContainerScrollTimer(TGContainer *t) : TTimer(50) { fContainer = t; }
   Bool_t Notify();
};

//______________________________________________________________________________
Bool_t TGContainerScrollTimer::Notify()
{
   // on-timeout

   fContainer->OnAutoScroll();
   Reset();
   return kFALSE;
}


//______________________________________________________________________________
TGViewPort::TGViewPort(const TGWindow *p, UInt_t w, UInt_t h,
                       UInt_t options, ULong_t back) :
    TGCompositeFrame(p, w, h, options, back)
{
   // Create a viewport object.

   fContainer = 0;
   fX0 = fY0  = 0;

   AddInput(kStructureNotifyMask);
   SetWindowName();
   fEditDisabled = kEditDisable | kEditDisableGrab;
}

//______________________________________________________________________________
void TGViewPort::SetContainer(TGFrame *f)
{
   // Add container frame to the viewport. We must make sure that the added
   // container is at least a TGCompositeFrame (TGCanvas::AddFrame depends
   // on it).

   if (!f) {
      RemoveFrame(fContainer);
      fContainer = 0;
      return;
   }

   if (!fContainer) {
      fContainer = f;
      AddFrame(f, 0);
      fContainer->SetEditDisabled(fContainer->GetEditDisabled() | kEditDisableGrab);

      if (fContainer->InheritsFrom(TGContainer::Class())) {
         ((TGContainer*)fContainer)->fViewPort = this;
         if (fParent->InheritsFrom(TGCanvas::Class())) {
            ((TGContainer*)fContainer)->fCanvas = (TGCanvas*)fParent;
         }
      }
   }
}

//______________________________________________________________________________
void TGViewPort::SetHPos(Int_t xpos)
{
   // Moves content of container frame in horizontal direction.

   Int_t diff;

   if (!fContainer) return;

   if (!fContainer->InheritsFrom(TGContainer::Class())) {
      fContainer->Move(fX0 = xpos, fY0);
      return;
   } else {
      if (((TGContainer*)fContainer)->fMapSubwindows) {
         fContainer->Move(fX0 = xpos, fY0);
         return;
      }
   }

   if (-xpos < 0) return;
   else diff = xpos - fX0;

   if (!diff) return;

   fX0 = xpos;

#if defined(R__HAS_COCOA)
   //In the current version of cocoa back-end, it's very expensive
   //to read window's pixels, skip "optimization".
   ((TGContainer*)fContainer)->DrawRegion(0, 0, fWidth, fHeight);
#else
   UInt_t adiff = TMath::Abs(diff);

   if (adiff < fWidth) {
      if (diff < 0) {
         gVirtualX->CopyArea(fContainer->GetId(), fContainer->GetId(), GetWhiteGC()(),
                              adiff, 0, fWidth - adiff, fHeight, 0, 0);
         adiff += 20;   // draw larger region
         ((TGContainer*)fContainer)->DrawRegion(fWidth - adiff, 0, adiff, fHeight);
      } else {
         gVirtualX->CopyArea(fContainer->GetId(), fContainer->GetId(), GetWhiteGC()(),
                              0, 0, fWidth - adiff, fHeight, adiff, 0);
         adiff += 20;   // draw larger region
         ((TGContainer*)fContainer)->DrawRegion(0, 0, adiff, fHeight);
      }
   } else {
      ((TGContainer*)fContainer)->DrawRegion(0, 0, fWidth, fHeight);
   }
#endif
}

//______________________________________________________________________________
void TGViewPort::SetVPos(Int_t ypos)
{
   // Moves content of container frame in vertical direction.

   Int_t diff;

   if (!fContainer) return;

   // for backward comatibility
   if (!fContainer->InheritsFrom(TGContainer::Class())) {
      fContainer->Move(fX0, fY0 = ypos);
      return;
   } else {
      if (((TGContainer*)fContainer)->fMapSubwindows) {
         fContainer->Move(fX0, fY0 = ypos);
         return;
      }
   }

   if (-ypos < 0) return;
   else diff = ypos - fY0;

   if (!diff) return;

   fY0 = ypos;

#if defined(R__HAS_COCOA)
   //In the current version of cocoa back-end, it's very expensive
   //to read window's pixels, skip "optimization".
   ((TGContainer*)fContainer)->DrawRegion(0, 0, fWidth, fHeight);
#else
   UInt_t adiff = TMath::Abs(diff);

   if (adiff < fHeight) {
      if (diff < 0) {
         gVirtualX->CopyArea(fContainer->GetId(), fContainer->GetId(), GetWhiteGC()(),
                              0, adiff, fWidth, fHeight - adiff, 0, 0);
         adiff += 20;   // draw larger region
         ((TGContainer*)fContainer)->DrawRegion(0, fHeight - adiff, fWidth, adiff);
      } else {
         gVirtualX->CopyArea(fContainer->GetId(), fContainer->GetId(), GetWhiteGC()(),
                              0, 0, fWidth, fHeight - adiff, 0, adiff);
         adiff += 20;   // draw larger region
         ((TGContainer*)fContainer)->DrawRegion(0, 0, fWidth, adiff);
      }
   } else {
      ((TGContainer*)fContainer)->DrawRegion(0, 0, fWidth, fHeight);
   }
#endif
}

//______________________________________________________________________________
void TGViewPort::SetPos(Int_t xpos, Int_t ypos)
{
   // Goto new position.

   if (!fContainer) return;

   SetHPos(fX0 = xpos);
   SetVPos(fY0 = ypos);
}

//______________________________________________________________________________
Bool_t TGViewPort::HandleConfigureNotify(Event_t *event)
{
   // Handle resize events.

   if (!fContainer->InheritsFrom(TGContainer::Class())) {
      TGFrame::HandleConfigureNotify(event);
      return kTRUE;
   }

   TGContainer *cont = (TGContainer*)fContainer;

   // protection
   if ((event->fWidth > 32768) || (event->fHeight  > 32768)) {
      return kFALSE;
   }

   cont->DrawRegion(event->fX, event->fY, event->fWidth, event->fHeight);

   return kTRUE;
}

//______________________________________________________________________________
TGContainer::TGContainer(const TGWindow *p, UInt_t w, UInt_t h,
                             UInt_t options, ULong_t back) :
   TGCompositeFrame(p, w, h, options, back)
{
   // Create a canvas container. This is the (large) frame that contains
   // all the list items. It will be shown through a TGViewPort (which is
   // created by the TGCanvas).

   fXp = fYp = fX0 = fY0 = fXf = fYf = fXDND = fYDND = 0;
   fViewPort = 0;
   fBdown = kFALSE;
   fMsgWindow  = p;
   fDragging   = kFALSE;
   fTotal = fSelected = 0;
   fMapSubwindows = kFALSE;
   fOnMouseOver = kFALSE;
   fLastActiveEl = 0;
   fLastDir = kTRUE;
   fLastCase = kTRUE;
   fLastSubstring = kFALSE;
   fLastName = "";
   fKeyTimer = new TGContainerKeyboardTimer(this);
   fScrollTimer = new TGContainerScrollTimer(this);
   fKeyTimerActive = kFALSE;
   fScrolling = kFALSE;
   fCanvas = 0;
   fExposedRegion.Empty();

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

   AddInput(kKeyPressMask | kPointerMotionMask);
   SetWindowName();

   SetWindowAttributes_t wattr;
   wattr.fMask = kWAWinGravity | kWABitGravity;
   wattr.fBitGravity = 1; // NorthWestGravity
   wattr.fWinGravity = 1;
   gVirtualX->ChangeWindowAttributes(fId, &wattr);

   fEditDisabled = kEditDisableGrab | kEditDisableBtnEnable;
}

//______________________________________________________________________________
TGContainer::TGContainer(TGCanvas *p, UInt_t options, ULong_t back) :
   TGCompositeFrame(p->GetViewPort(), p->GetWidth(), p->GetHeight(), options, back)
{
   // Create a canvas container. This is the (large) frame that contains
   // all the list items. It will be shown through a TGViewPort (which is
   // created by the TGCanvas).

   fXp = fYp = fX0 = fY0 = fXf = fYf = fXDND = fYDND = 0;
   fViewPort = 0;
   fBdown = kFALSE;
   fMsgWindow  = p->GetViewPort();
   fCanvas = p;
   fCanvas->GetViewPort()->SetContainer(this);
   p->GetViewPort()->SetBackgroundColor(back);

   fDragging = kFALSE;
   fTotal = fSelected = 0;
   fMapSubwindows = kFALSE;
   fOnMouseOver = kFALSE;
   fLastActiveEl = 0;
   fLastDir = kTRUE;
   fLastCase = kTRUE;
   fLastSubstring = kFALSE;
   fLastName = "";
   fKeyTimer = new TGContainerKeyboardTimer(this);
   fScrollTimer = new TGContainerScrollTimer(this);
   fKeyTimerActive = kFALSE;
   fScrolling = kFALSE;
   fExposedRegion.Empty();

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

   AddInput(kKeyPressMask | kPointerMotionMask);
   SetWindowName();

   SetWindowAttributes_t wattr;
   wattr.fMask = kWAWinGravity | kWABitGravity;
   wattr.fBitGravity = 1; // NorthWestGravity
   wattr.fWinGravity = 1;
   gVirtualX->ChangeWindowAttributes(fId, &wattr);

   fEditDisabled = kEditDisableGrab | kEditDisableBtnEnable;
}

//______________________________________________________________________________
TGContainer::~TGContainer()
{
   // Delete canvas container.

   if (TGSearchDialog::SearchDialog()) {
      TQObject::Disconnect(TGSearchDialog::SearchDialog(), 0, this);
   }

   delete fScrollTimer;
   fScrollTimer = 0;

   delete fKeyTimer;
   fKeyTimer = 0;
}

//______________________________________________________________________________
void TGContainer::Layout()
{
   // Layout container entries.

   TGCompositeFrame::Layout();
   TGLayoutManager *lm = GetLayoutManager();

   // clear content if positions of subframes changed after layout
   if (lm && lm->IsModified()) ClearViewPort();
}

//______________________________________________________________________________
void TGContainer::CurrentChanged(Int_t x, Int_t y)
{
   // Emit signal when current position changed.

   Long_t args[2];

   args[0] = x;
   args[1] = y;

   Emit("CurrentChanged(Int_t,Int_t)",args);
}

//______________________________________________________________________________
void TGContainer::CurrentChanged(TGFrame* f)
{
   // Emit signal when current selected frame changed.

   Emit("CurrentChanged(TGFrame*)", (Long_t)f);
}

//______________________________________________________________________________
void TGContainer::KeyPressed(TGFrame *frame, UInt_t keysym, UInt_t mask)
{
   // Signal emitted when keyboard key pressed
   //
   // frame - activated frame
   // keysym - defined in "KeySymbols.h"
   // mask - modifier key mask, defined in "GuiTypes.h"
   //
   // const Mask_t kKeyShiftMask   = BIT(0);
   // const Mask_t kKeyLockMask    = BIT(1);
   // const Mask_t kKeyControlMask = BIT(2);
   // const Mask_t kKeyMod1Mask    = BIT(3);   // typically the Alt key
   // const Mask_t kButton1Mask    = BIT(8);
   // const Mask_t kButton2Mask    = BIT(9);
   // const Mask_t kButton3Mask    = BIT(10);
   // const Mask_t kButton4Mask    = BIT(11);
   // const Mask_t kButton5Mask    = BIT(12);
   // const Mask_t kAnyModifier    = BIT(15);

   Long_t args[3];
   args[0] = (Long_t)frame;
   args[1] = (Long_t)keysym;
   args[2] = (Long_t)mask;
   Emit("KeyPressed(TGFrame*,UInt_t,UInt_t)", args);
   SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_KEY), keysym, mask);
}

//______________________________________________________________________________
void TGContainer::ReturnPressed(TGFrame* f)
{
   // Signal emitted when Return/Enter key pressed.
   // It's equivalent to "double click" of mouse button.

   Emit("ReturnPressed(TGFrame*)", (Long_t)f);
}

//______________________________________________________________________________
void TGContainer::SpacePressed(TGFrame* f)
{
   // Signal emitted when space key pressed.
   // Pressing space key inverts selection.

   Emit("SpacePressed(TGFrame*)", (Long_t)f);
}

//______________________________________________________________________________
void TGContainer::OnMouseOver(TGFrame* f)
{
   // Signal emitted when pointer is over entry.

   if (!fOnMouseOver) Emit("OnMouseOver(TGFrame*)", (Long_t)f);
   fOnMouseOver = kTRUE;
}

//______________________________________________________________________________
void TGContainer::Clicked(TGFrame *entry, Int_t btn)
{
   // Emit Clicked() signal.

   Long_t args[2];

   args[0] = (Long_t)entry;
   args[1] = btn;

   Emit("Clicked(TGFrame*,Int_t)", args);
}

//______________________________________________________________________________
void TGContainer::Clicked(TGFrame *entry, Int_t btn, Int_t x, Int_t y)
{
   // Emit Clicked() signal.

   Long_t args[4];

   args[0] = (Long_t)entry;
   args[1] = btn;
   args[2] = x;
   args[3] = y;

   Emit("Clicked(TGFrame*,Int_t,Int_t,Int_t)", args);
}

//______________________________________________________________________________
void TGContainer::DoubleClicked(TGFrame *entry, Int_t btn)
{
   // Emit DoubleClicked() signal.

   Long_t args[2];

   args[0] = (Long_t)entry;
   args[1] = btn;

   Emit("DoubleClicked(TGFrame*,Int_t)", args);
}

//______________________________________________________________________________
void TGContainer::DoubleClicked(TGFrame *entry, Int_t btn, Int_t x, Int_t y)
{
   // Emit DoubleClicked() signal.

   Long_t args[4];

   args[0] = (Long_t)entry;
   args[1] = btn;
   args[2] = x;
   args[3] = y;

   Emit("DoubleClicked(TGFrame*,Int_t,Int_t,Int_t)", args);
}

//______________________________________________________________________________
void TGContainer::SelectAll()
{
   // Select all items in the container.
   // SelectAll() signal emitted.

   TIter next(fList);
   TGFrameElement *el;
   TGFrame *fr;
   TGPosition pos = GetPagePosition();

   while ((el = (TGFrameElement *) next())) {
      fr = el->fFrame;
      if (!fr->IsActive()) {
         ActivateItem(el);
      }
   }
   fSelected = fTotal;
   SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED),
                  fTotal, fSelected);

   Emit("SelectAll()");
}

//______________________________________________________________________________
void TGContainer::UnSelectAll()
{
   // Unselect all items in the container.

   TIter next(fList);
   TGFrameElement *el;
   TGPosition pos = GetPagePosition();
   TGFrame *fr;

   while ((el = (TGFrameElement *) next())) {
      fr = el->fFrame;
      if (fr->IsActive()) {
         DeActivateItem(el);
      }
   }
   fLastActiveEl = 0;
   fSelected = 0;

   SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED),
                  fTotal, fSelected);

   Emit("UnSelectAll()");
}

//______________________________________________________________________________
void TGContainer::InvertSelection()
{
   // Invert the selection, all selected items become unselected and
   // vice versa.

   int selected = 0;

   TIter next(fList);
   TGFrameElement *el;

   while ((el = (TGFrameElement *) next())) {
      if (!el->fFrame->IsActive()) {
         ActivateItem(el);
         ++selected;
      } else {
         DeActivateItem(el);
      }
   }
   ClearViewPort();  // full redraw
   fSelected = selected;

   SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED),
                  fTotal, fSelected);

   Emit("InvertSelection()");
}

//______________________________________________________________________________
void TGContainer::RemoveAll()
{
   // Remove all items from the container.

   TGFrameElement *el;
   TIter next(fList);

   while ((el = (TGFrameElement *) next())) {
      el->fFrame->DestroyWindow();
      delete el->fFrame;
      fList->Remove(el);
      delete el;
   }
   fLastActiveEl = 0;
   fSelected = fTotal = 0;
   ClearViewPort();  // full redraw
}

//______________________________________________________________________________
void TGContainer::RemoveItem(TGFrame *item)
{
   // Remove item from container.

   TGFrameElement *el;
   TIter next(fList);
   while ((el = (TGFrameElement *) next())) {
      if (item == el->fFrame) {
         if (fLastActiveEl && item == fLastActiveEl->fFrame) fLastActiveEl = 0;
         item->DestroyWindow();
         delete item;
         fList->Remove(el);
         delete el;
         break;
      }
   }
   ClearViewPort();  // fill redraw
}

//______________________________________________________________________________
const TGFrame *TGContainer::GetNextSelected(void **current)
{
   // Return the next selected item. If the "current" pointer is 0, the first
   // selected item will be returned.

   TGFrame *f;
   TObjLink *lnk = (TObjLink *) *current;

   lnk = (lnk == 0) ? fList->FirstLink() : lnk->Next();
   while (lnk) {
      f = (TGFrame *) ((TGFrameElement *) lnk->GetObject())->fFrame;
      if (f->IsActive()) {
         *current = (void *) lnk;
         return f;
      }
      lnk = lnk->Next();
   }
   return 0;
}

//______________________________________________________________________________
void TGContainer::ActivateItem(TGFrameElement *el)
{
   // Activate item.

   TGFrame *fr = el->fFrame;
   fr->Activate(kTRUE);

   if (fLastActiveEl != el) {
      fLastActiveEl = el;
      CurrentChanged(fLastActiveEl->fFrame->GetX(), fLastActiveEl->fFrame->GetY());
      CurrentChanged(fLastActiveEl->fFrame);
      fSelected++;
   }

   if (!fSelected) fSelected = 1;

   SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED), fTotal, fSelected);

   TGPosition pos = GetPagePosition();
   DrawRegion(fr->GetX() - pos.fX, fr->GetY() - pos.fY, fr->GetWidth(), fr->GetHeight());
}

//______________________________________________________________________________
void TGContainer::DeActivateItem(TGFrameElement *el)
{
   // DeActivate item.

   TGFrame *fr = el->fFrame;
   fr->Activate(kFALSE);
   SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED), fTotal, fSelected);

   TGPosition pos = GetPagePosition();
   DrawRegion(fr->GetX() - pos.fX, fr->GetY() - pos.fY, fr->GetWidth(), fr->GetHeight());
}

//______________________________________________________________________________
TGPosition TGContainer::GetPagePosition() const
{
   // Returns page position.

   TGPosition ret;
   if (!fViewPort) return ret;

   ret.fX = -fViewPort->GetHPos();
   ret.fY = -fViewPort->GetVPos();

   return ret;
}

//______________________________________________________________________________
TGDimension TGContainer::GetPageDimension() const
{
   // Returns page dimension.

   TGDimension ret;
   if (!fViewPort) return ret;

   ret.fWidth = fViewPort->GetWidth();
   ret.fHeight = fViewPort->GetHeight();
   return ret;
}

//______________________________________________________________________________
void TGContainer::SetPagePosition(const TGPosition& pos)
{
   // Set page position.

   if (!fViewPort) return;
   fViewPort->SetPos(pos.fX, pos.fY);
}

//______________________________________________________________________________
void TGContainer::SetPagePosition(Int_t x, Int_t y)
{
   // Set page position.

   if (!fViewPort) return;
   fViewPort->SetPos(x, y);
}

//______________________________________________________________________________
void TGContainer::SetPageDimension(const TGDimension& dim)
{
   // Set page dimension.

   if (!fViewPort) return;
   fViewPort->Resize(dim);
}

//______________________________________________________________________________
void TGContainer::SetPageDimension(UInt_t w, UInt_t h)
{
   // Set page dimension.

   if (!fViewPort) return;
   fViewPort->Resize(w, h);
}

//______________________________________________________________________________
void TGContainer::DoRedraw()
{
   // Redraw content of container in the viewport region.
#ifdef R__HAS_COCOA
   DrawRegion(0, 0, GetWidth(), GetHeight());
#else
   if (!fExposedRegion.IsEmpty()) {
      DrawRegion(fExposedRegion.fX, fExposedRegion.fY,
                 fExposedRegion.fW, fExposedRegion.fH);

      fExposedRegion.Empty();
   }
#endif
}

//______________________________________________________________________________
void TGContainer::DrawRegion(Int_t x, Int_t y, UInt_t w, UInt_t h)
{
   // Draw a region of container in viewport.
   // x, y, w, h are position and dimension of area to be
   // redrawn in viewport coordinates.

   static GContext_t gcBg = 0;
   Pixmap_t pixmap = 0;

   if (!fViewPort) return;
   // sanity checks
   if ((x > (Int_t)fViewPort->GetWidth()) || (y > (Int_t)fViewPort->GetHeight())) {
      return;
   }
   x = x < 0 ? 0 : x;
   y = y < 0 ? 0 : y;

   w = x + w > fViewPort->GetWidth() ? fViewPort->GetWidth() - x : w;
   h = y + h > fViewPort->GetHeight() ? fViewPort->GetHeight() - y :  h;

   if (((Int_t)w < 1) || ((Int_t)h < 1)) {
      return;
   }

   if (!fMapSubwindows) {
      pixmap = gVirtualX->CreatePixmap(fId, w, h);

      if (!gcBg) {
         GCValues_t gcValues;
         gcValues.fForeground = fBackground;
         gcValues.fBackground = fBackground;
         gcValues.fGraphicsExposures = kTRUE;
         gcValues.fMask = kGCForeground | kGCBackground | kGCGraphicsExposures;
         gcBg = gVirtualX->CreateGC(fId, &gcValues);
      }

      gVirtualX->SetForeground(gcBg, fBackground);
      gVirtualX->FillRectangle(pixmap, gcBg, 0, 0, w, h);
   }

   TGPosition pos = GetPagePosition();

   // translate coordinates in viewport into coordinates in container
   Int_t xx = pos.fX + x;
   Int_t yy = pos.fY + y;

   TIter next(fList);
   TGFrameElement *el;

   while ((el = (TGFrameElement *) next())) {
      if ((Int_t(el->fFrame->GetY()) > yy - (Int_t)el->fFrame->GetHeight()) &&
          (Int_t(el->fFrame->GetX()) > xx - (Int_t)el->fFrame->GetWidth()) &&
          (Int_t(el->fFrame->GetY()) < yy + Int_t(h + el->fFrame->GetHeight())) &&
          (Int_t(el->fFrame->GetX()) < xx + Int_t(w + el->fFrame->GetWidth()))) {

         // draw either in container window or in double-buffer
         if (!fMapSubwindows) {
            Int_t fx = el->fFrame->GetX() - xx;
            Int_t fy = el->fFrame->GetY() - yy;
            el->fFrame->DrawCopy(pixmap, fx, fy);
         } else {
            fClient->NeedRedraw(el->fFrame);
         }
      }
   }

   if (fMapSubwindows) return;

   gVirtualX->CopyArea(pixmap, fId, gcBg, 0, 0, w, h, x, y);
   gVirtualX->DeletePixmap(pixmap);
   gVirtualX->Update(kFALSE);
}

//______________________________________________________________________________
void TGContainer::ClearViewPort()
{
   // Clear view port and redraw full content

   if (!fViewPort) return;
   fExposedRegion.fW = fViewPort->GetWidth();
   fExposedRegion.fH = fViewPort->GetHeight();
   fExposedRegion.fX = fExposedRegion.fY = 0;
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
Bool_t TGContainer::HandleExpose(Event_t *event)
{
   // Handle expose events. Do not use double buffer.

   if (fMapSubwindows) return TGCompositeFrame::HandleExpose(event);

   if (event->fWindow == GetId()) {
      TGPosition pos(event->fX, event->fY);
      TGDimension dim(event->fWidth, event->fHeight);
      TGRectangle rect(pos, dim);

      if (fExposedRegion.IsEmpty()) {
         fExposedRegion = rect;
      } else {
         fExposedRegion.Merge(rect);
      }

      fClient->NeedRedraw(this);
   } else {
      TGCompositeFrame::HandleExpose(event);
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGContainer::HandleButton(Event_t *event)
{
   // Handle mouse button event in container.

   Int_t total, selected, page = 0;

   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();
   Int_t newpos;
   page = dim.fHeight/4;

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

   Int_t xx = pos.fX + event->fX; // translate coordinates
   Int_t yy = pos.fY + event->fY;

   if (event->fType == kButtonPress) {
      gVirtualX->SetInputFocus(fId);

      fXp = pos.fX + event->fX;
      fYp = pos.fY + event->fY;

      fXDND = event->fX;
      fYDND = event->fY;
      fBdown = kTRUE;

      UnSelectAll();
      total = selected = 0;

      TGFrameElement *el;
      TIter next(fList);
      Bool_t select_frame = kFALSE;

      while ((el = (TGFrameElement *) next())) {
         select_frame = kFALSE;

         if (!fMapSubwindows) {
            if ((Int_t(el->fFrame->GetY()) + (Int_t)el->fFrame->GetHeight() > yy ) &&
               (Int_t(el->fFrame->GetX()) + (Int_t)el->fFrame->GetWidth() > xx ) &&
               (Int_t(el->fFrame->GetY()) < yy) &&
               (Int_t(el->fFrame->GetX()) < xx))  {
               select_frame = kTRUE;
            }
         } else {
            if (el->fFrame->GetId() == (Window_t)event->fUser[0]) {
               select_frame = kTRUE;
            }
         }

         if (select_frame) {
            selected++;
            ActivateItem(el);
            Clicked(el->fFrame, event->fCode);
            Clicked(el->fFrame, event->fCode, event->fXRoot, event->fYRoot);
         }
         total++;
      }

      if (fTotal != total || fSelected != selected) {
         fTotal = total;
         fSelected = selected;
         SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED),
                     fTotal, fSelected);
      }

      if ( selected == 0 ) {
         fDragging = kTRUE;
         fX0 = fXf = fXp;
         fY0 = fYf = fYp;
         gVirtualX->DrawRectangle(fId, GetLineGC()(), fX0-pos.fX, fY0-pos.fY,
                                  fXf-fX0, fYf-fY0);
      }
   }

   if (event->fType == kButtonRelease) {
      gVirtualX->SetInputFocus(fId);

      fBdown = kFALSE;
      if (fDragging) {
         fDragging = kFALSE;
         fScrolling = kFALSE;

         if (gSystem) gSystem->RemoveTimer(fScrollTimer);
         gVirtualX->DrawRectangle(fId, GetLineGC()(), fX0-pos.fX, fY0-pos.fY,
                                  fXf-fX0, fYf-fY0);
         ClearViewPort();

      } else {
         SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_ITEMCLICK),
                     event->fCode, (event->fYRoot << 16) | event->fXRoot);
      }
   }
   DoRedraw();
   return kTRUE;
}

//______________________________________________________________________________
const TGPicture *TGContainer::GetObjPicture(TGFrame *f)
{
   // Retrieve icons associated with class "name". Association is made
   // via the user's ~/.root.mimes file or via $ROOTSYS/etc/root.mimes.

   TObject *obj = 0;
   TClass *cl;
   const TGPicture *pic=0;
   const char *iconname = 0;

   if (f->InheritsFrom("TGLVEntry")) {
      obj = (TObject *)((TGLVEntry *)f)->GetUserData();
      if (obj) {
         if (obj->IsA() == TKey::Class()) {
            cl = TClass::GetClass(((TKey *)obj)->GetClassName());
         } else if (obj->IsA() == TKeyMapFile::Class()) {
            cl = TClass::GetClass(((TKeyMapFile *)obj)->GetTitle());
         } else {
            cl = obj->IsA();
         }
         const char *name = obj->GetIconName();
         if (((name == 0) || (!name[0])) && (cl != 0))
            name = cl->GetName();
         iconname = ((name != 0) && (strlen(name) > 0)) ? name : obj->GetName();

         if (obj->IsA()->InheritsFrom("TGeoVolume")) {
            iconname = obj->GetIconName() ? obj->GetIconName() : obj->IsA()->GetName();
         }
         pic = fClient->GetMimeTypeList()->GetIcon(iconname, kFALSE);
      }
   }
   if (pic == 0) {
      if (obj && obj->IsFolder()) {
         pic = fClient->GetPicture("folder_s.xpm");
      } else {
         pic = fClient->GetPicture("doc_s.xpm");
      }
   }
   return pic;
}

//______________________________________________________________________________
void TGContainer::SetDragPixmap(const TGPicture *p)
{
   // Set drag window pixmaps and hotpoint.

   Pixmap_t pic, mask;
   TGPicture *selpic = new TGSelectedPicture(gClient, p);
   pic  = selpic->GetPicture();
   mask = selpic->GetMask();

   if (gDNDManager) {
      gDNDManager->SetDragPixmap(pic, mask, p->GetWidth()/2, 2+p->GetHeight()/2);
   } else {
      gVirtualX->DeletePixmap(pic);
      gVirtualX->DeletePixmap(mask);
   }
}

//______________________________________________________________________________
Bool_t TGContainer::HandleDoubleClick(Event_t *event)
{
   // Handle double click mouse event.

   TGFrameElement *el;
   TIter next(fList);

   TGPosition pos = GetPagePosition();

   Int_t xx = pos.fX + event->fX; // translate coordinates
   Int_t yy = pos.fY + event->fY;

   Bool_t select_frame = kFALSE;

   while ((el = (TGFrameElement *) next())) {
      select_frame = kFALSE;

      if (!fMapSubwindows) {
         if ((Int_t(el->fFrame->GetY()) + (Int_t)el->fFrame->GetHeight() > yy) &&
            (Int_t(el->fFrame->GetX()) + (Int_t)el->fFrame->GetWidth() > xx) &&
            (Int_t(el->fFrame->GetY()) < yy) &&
            (Int_t(el->fFrame->GetX()) < xx))  {
            select_frame = kTRUE;
         }
      } else {
         if (el->fFrame->GetId() == (Window_t)event->fUser[0]) {
            select_frame = kTRUE;
         }
      }

      if (select_frame) {
         SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_ITEMDBLCLICK),
                     event->fCode, (event->fYRoot << 16) | event->fXRoot);

         DoubleClicked(el->fFrame, event->fCode);
         DoubleClicked(el->fFrame, event->fCode, event->fXRoot, event->fYRoot);
         return kTRUE;
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGContainer::HandleMotion(Event_t *event)
{
   // Handle mouse motion events.

   int xf0, yf0, xff, yff, total, selected;

   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();
   Int_t x = pos.fX + event->fX;
   Int_t y = pos.fY + event->fY;
   TGFrameElement *el = 0;
   TGFrame *f = 0;
   fOnMouseOver = kFALSE;

   Bool_t wasScrolling = fScrolling;

   if (gDNDManager->IsDragging()) {
      gDNDManager->Drag(event->fXRoot, event->fYRoot,
                        TGDNDManager::GetDNDActionCopy(), event->fTime);
   }
   else if (fDragging) {

      gVirtualX->DrawRectangle(fId, GetLineGC()(), fX0-pos.fX, fY0-pos.fY,
                               fXf-fX0, fYf-fY0);
      fX0 =  TMath::Min(fXp,x);
      fY0 =  TMath::Min(fYp,y);
      fXf =  TMath::Max(fXp,x);
      fYf =  TMath::Max(fYp,y);

      total = selected = 0;

      if (event->fX > Int_t(dim.fWidth) - kAutoScrollFudge) {
         //fCanvas->SetHsbPosition(x - dim.fWidth);
         fScrolling = kTRUE;
      } else if (event->fX < kAutoScrollFudge) {
         //fCanvas->SetHsbPosition(x);
         fScrolling = kTRUE;
      } else if (event->fY > Int_t(dim.fHeight) - kAutoScrollFudge) {
         //fCanvas->SetVsbPosition(y - dim.fHeight);
         fScrolling = kTRUE;
      } else if (event->fY < kAutoScrollFudge) {
         //fCanvas->SetVsbPosition(y);
         fScrolling = kTRUE;
      }
      else {
         fScrolling = kFALSE;
      }

      TIter next(fList);

      while ((el = (TGFrameElement *) next())) {
         f = el->fFrame;
         ++total;
         xf0 = f->GetX() + (f->GetWidth() >> 3);
         yf0 = f->GetY() + (f->GetHeight() >> 3);
         xff = xf0 + f->GetWidth() - (f->GetWidth() >> 2);
         yff = yf0 + f->GetHeight() - (f->GetHeight() >> 2);

         if (((xf0 > fX0 && xf0 < fXf) ||
              (xff > fX0 && xff < fXf)) &&
             ((yf0 > fY0 && yf0 < fYf) ||
              (yff > fY0 && yff < fYf))) {
            if (!el->fFrame->IsActive())
               ActivateItem(el);
            gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kHand));
            OnMouseOver(f);
            ++selected;
         } else {
            if (el->fFrame->IsActive())
               DeActivateItem(el);
         }
      }

      if (fTotal != total || fSelected != selected) {
         fTotal = total;
         fSelected = selected;
         SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED),
                     fTotal, fSelected);
      }
      gVirtualX->DrawRectangle(fId, GetLineGC()(), fX0-pos.fX, fY0-pos.fY,
                               fXf-fX0, fYf-fY0);
   }
   else {
      TGFrame *over_frame = 0;

      TIter next(fList);

      while ((el = (TGFrameElement *) next())) {
         if (!fMapSubwindows) {
            if ((Int_t(el->fFrame->GetY()) + (Int_t)el->fFrame->GetHeight() > y) &&
               (Int_t(el->fFrame->GetX()) + (Int_t)el->fFrame->GetWidth() > x) &&
               (Int_t(el->fFrame->GetY()) < y) &&
               (Int_t(el->fFrame->GetX()) < x))  {
               over_frame = el->fFrame;
               break;
            }
         } else {
            if (el->fFrame->GetId() == (Window_t)event->fUser[0]) {
               over_frame = el->fFrame;
               break;
            }
         }
      }
      if (over_frame) {
         if (!gDNDManager->IsDragging()) {
            if (fBdown && ((abs(event->fX - fXDND) > 2) || (abs(event->fY - fYDND) > 2))) {
               if (gDNDManager && over_frame->IsDNDSource()) {
                  const TGPicture *drag_pic = GetObjPicture(over_frame);
                  if (drag_pic) SetDragPixmap(drag_pic);
                  gDNDManager->StartDrag(over_frame, event->fXRoot, event->fYRoot);
               }
            }
         }
         if (gDNDManager->IsDragging()) {
            gDNDManager->Drag(event->fXRoot, event->fYRoot,
                              TGDNDManager::GetDNDActionCopy(), event->fTime);
         } else {
            OnMouseOver(over_frame);
            gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kHand));
         }
      } else {
         gVirtualX->SetCursor(fId, gVirtualX->CreateCursor(kPointer));
      }
   }

   if (!wasScrolling && fScrolling) {
      if (gSystem) {
         fScrollTimer->Reset();
         gSystem->AddTimer(fScrollTimer);
      }
   }

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGContainer::HandleKey(Event_t *event)
{
   // The key press event handler converts a key press to some line editor
   // action.

   char   input[10];
   Int_t  n;
   UInt_t keysym;

   if (event->fType == kGKeyPress) {
      gVirtualX->LookupString(event, input, sizeof(input), keysym);
      n = strlen(input);

      KeyPressed(fLastActiveEl?fLastActiveEl->fFrame:0, keysym, event->fState);

      switch ((EKeySym)keysym) {
         case kKey_Enter:
         case kKey_Return:
            // treat 'Enter' and 'Return' as a double click
            SendMessage(GetMessageWindow(), MK_MSG(kC_CONTAINER, kCT_ITEMDBLCLICK),
                              kButton1, (event->fYRoot << 16) | event->fXRoot);
            if (fLastActiveEl) ReturnPressed(fLastActiveEl->fFrame);
            break;
         case kKey_Shift:
         case kKey_Control:
         case kKey_Meta:
         case kKey_Alt:
         case kKey_CapsLock:
         case kKey_NumLock:
         case kKey_ScrollLock:
            return kTRUE;
         case kKey_Space:
            if (fLastActiveEl) {
               fLastActiveEl->fFrame->Activate(!fLastActiveEl->fFrame->IsActive());
               SpacePressed(fLastActiveEl->fFrame);
            }
            break;
         default:
         break;
      }

      if (event->fState & kKeyControlMask) {   // Cntrl key modifier pressed
         switch((EKeySym)keysym & ~0x20) {   // treat upper and lower the same
            case kKey_A:
               SelectAll();
               break;
            case kKey_B:
               LineLeft();
               break;
            case kKey_C:
               return kTRUE;
            case kKey_D:
               break;
            case kKey_E:
               End();
               break;
            case kKey_F:
               Search();
               break;
            case kKey_G:
               RepeatSearch();
               break;
            case kKey_H:
               LineLeft();
               break;
            case kKey_K:
               End();
               break;
            case kKey_U:
               Home();
               break;
            case kKey_V:
            case kKey_Y:
               return kTRUE;
            case kKey_X:
               return kTRUE;
            default:
               return kTRUE;
         }
      }
      if (n && keysym >= 32 && keysym < 127 &&     // printable keys
         !(event->fState & kKeyControlMask) &&
          (EKeySym)keysym != kKey_Delete &&
          (EKeySym)keysym != kKey_Backspace) {

         if (fKeyTimerActive) {
            fKeyInput += input;
         } else {
            fKeyInput = input;
            fKeyTimerActive = kTRUE;
            fKeyTimer->Reset();
            if (gSystem) gSystem->AddTimer(fKeyTimer);
         }
      } else {

         switch ((EKeySym)keysym) {
            case kKey_F3:
               RepeatSearch();
               break;
            case kKey_F5:
               Layout();
               break;
            case kKey_F7:
               Search();
               break;
            case kKey_Left:
               LineLeft(event->fState & kKeyShiftMask);
               break;
            case kKey_Right:
               LineRight(event->fState & kKeyShiftMask);
               break;
            case kKey_Up:
               LineUp(event->fState & kKeyShiftMask);
               break;
            case kKey_Down:
               LineDown(event->fState & kKeyShiftMask);
               break;
            case kKey_PageUp:
               PageUp(event->fState & kKeyShiftMask);
               break;
            case kKey_PageDown:
               PageDown(event->fState & kKeyShiftMask);
               break;
            case kKey_Home:
               Home(event->fState & kKeyShiftMask);
               break;
            case kKey_End:
               End(event->fState & kKeyShiftMask);
               break;
            default:
               break;
         }
      }
   }
   DoRedraw();
   return kTRUE;
}

//______________________________________________________________________________
TGFrame *TGContainer::FindFrameByName(const char *name)
{
   // Find frame by name.

   if (!IsMapped()) return 0;

   Bool_t direction = kTRUE;
   Bool_t caseSensitive = kFALSE;
   Bool_t subString = kFALSE;

   if (gTQSender && (gTQSender == TGSearchDialog::SearchDialog())) {
      caseSensitive = TGSearchDialog::SearchDialog()->GetType()->fCaseSensitive;
      direction = TGSearchDialog::SearchDialog()->GetType()->fDirection;
   }
   TString sname(name);
   if (sname.Contains("*")) {
      subString = kTRUE;
      sname.ReplaceAll("*", "");
   }

   TGFrameElement *fe = (TGFrameElement*)FindItem(sname.Data(), direction,
                                                  caseSensitive, subString);
   if (!fe) {  // find again
      if (fLastActiveEl) DeActivateItem(fLastActiveEl);
      fLastActiveEl = 0;
      fe = (TGFrameElement*)FindItem(fLastName, fLastDir, fLastCase, fLastSubstring);

      if (!fe) {
         if (gTQSender && (gTQSender == TGSearchDialog::SearchDialog())) {
            TString msg = "Couldn't find \"" + fLastName + '\"';
            gVirtualX->Bell(20);
            new TGMsgBox(fClient->GetDefaultRoot(), fCanvas, "Container", msg.Data(),
                          kMBIconExclamation, kMBOk, 0);
         }
         return 0;
      } else {
         if (fLastActiveEl) DeActivateItem(fLastActiveEl);
         ActivateItem(fe);
         AdjustPosition();
         return fe->fFrame;
      }
   } else {
      if (fLastActiveEl) DeActivateItem(fLastActiveEl);
      ActivateItem(fe);
      AdjustPosition();
      return fe->fFrame;
   }
   return 0;
}

//______________________________________________________________________________
void TGContainer::Search(Bool_t close)
{
   // Invokes search dialog. Looks for item with the entered name.

   static TGSearchType *srch = 0;
   Int_t ret = 0;

   if (!srch) srch = new TGSearchType;
   srch->fClose = close;
   srch->fBuffer = 0;

   if (!close) {
      if (!TGSearchDialog::SearchDialog()) {
         TGSearchDialog::SearchDialog() = new TGSearchDialog(fClient->GetDefaultRoot(),
                                                             fCanvas, 400, 150, srch, &ret);
      }
      TGSearchDialog::SearchDialog()->Connect("TextEntered(char *)", "TGContainer", this,
                                              "FindFrameByName(char *)");
      TGSearchDialog::SearchDialog()->MapRaised();
   } else {
      new TGSearchDialog(fClient->GetDefaultRoot(), fCanvas, 400, 150, srch, &ret);
      if (ret) {
         FindFrameByName(srch->fBuffer);
      }
   }
}

//______________________________________________________________________________
void TGContainer::OnAutoScroll()
{
   // Autoscroll while close to & beyond  The Wall

   TGFrameElement *el = 0;
   TGFrame *f = 0;
   int xf0, yf0, xff, yff, total, selected;

   TGDimension dim = GetPageDimension();
   TGPosition pos = GetPagePosition();

   Window_t  dum1, dum2;
   Event_t   ev;
   ev.fType    = kButtonPress;
   Int_t x,y;

   // Autoscroll while close to the wall
   Int_t dx = 0;
   Int_t dy = 0;

   // Where's the cursor?
   gVirtualX->QueryPointer(fId,dum1,dum2,ev.fXRoot,ev.fYRoot,x,y,ev.fState);

   // Figure scroll amount x
   if (x < kAutoScrollFudge)
      dx = kAutoScrollFudge - x;
   else if ((Int_t)dim.fWidth-kAutoScrollFudge <= x)
      dx = dim.fWidth - kAutoScrollFudge - x;

   // Figure scroll amount y
   if (y < kAutoScrollFudge)
      dy = kAutoScrollFudge - y;
   else if ((Int_t)dim.fHeight - kAutoScrollFudge <= y)
      dy = dim.fHeight - kAutoScrollFudge - y;

   if (dx || dy) {
      if (dx) dx /= 5;
      if (dy) dy /= 5;
      Int_t adx = TMath::Abs(dx);
      Int_t ady = TMath::Abs(dy);
      if (adx > kAutoScrollFudge) adx = kAutoScrollFudge;
      if (ady > kAutoScrollFudge) ady = kAutoScrollFudge;

      dx *= kAcceleration[adx];
      dy *= kAcceleration[ady];

      Int_t nx = pos.fX-dx;
      Int_t ny = pos.fY-dy;

      fCanvas->SetHsbPosition(nx);
      fCanvas->SetVsbPosition(ny);

      // position inside container
      x += pos.fX;
      y += pos.fY;

      fX0 =  TMath::Min(fXp, x);
      fY0 =  TMath::Min(fYp, y);
      fXf =  TMath::Max(fXp, x);
      fYf =  TMath::Max(fYp ,y);

      total = selected = 0;

      TIter next(fList);

      while ((el = (TGFrameElement *) next())) {
         f = el->fFrame;
         ++total;
         xf0 = f->GetX() + (f->GetWidth() >> 3);
         yf0 = f->GetY() + (f->GetHeight() >> 3);
         xff = xf0 + f->GetWidth() - (f->GetWidth() >> 2);
         yff = yf0 + f->GetHeight() - (f->GetHeight() >> 2);

         if (((xf0 > fX0 && xf0 < fXf) ||
            (xff > fX0 && xff < fXf)) &&
            ((yf0 > fY0 && yf0 < fYf) ||
            (yff > fY0 && yff < fYf))) {
            if (!el->fFrame->IsActive())
               ActivateItem(el);
            ++selected;
         } else {
            if (el->fFrame->IsActive())
               DeActivateItem(el);
         }
      }
      gVirtualX->DrawRectangle(fId, GetLineGC()(), fX0-pos.fX, fY0-pos.fY,
                               fXf-fX0, fYf-fY0);

      if (fTotal != total || fSelected != selected) {
         fTotal = total;
         fSelected = selected;
         SendMessage(fMsgWindow, MK_MSG(kC_CONTAINER, kCT_SELCHANGED),
                     fTotal, fSelected);
      }
      ClearViewPort();
      DoRedraw();
      gVirtualX->DrawRectangle(fId, GetLineGC()(), fX0-pos.fX, fY0-pos.fY,
                               fXf-fX0, fYf-fY0);
   }
}

//______________________________________________________________________________
void TGContainer::SearchPattern()
{
   // Search for entry which name begins with pattern.

   TGFrameElement *fe = 0;
   TIter next(fList);
   TString str;

   while ((fe=( TGFrameElement*)next())) {
      str = fe->fFrame->GetTitle();

      if (str.BeginsWith(fKeyInput,TString::kIgnoreCase)) {
         if (fLastActiveEl && (fLastActiveEl!=fe) ) {
            fLastActiveEl->fFrame->Activate(kFALSE);
         }
         ActivateItem(fe);
         AdjustPosition();
         break;
      }
   }

   fKeyInput = "";   //clear
   fKeyTimerActive = kFALSE;
}

//______________________________________________________________________________
void TGContainer::RepeatSearch()
{
   // Repeats search.

   TGFrameElement *fe = 0;

   if (fLastName == "")
      return Search();

   fe = (TGFrameElement*)FindItem(fLastName, fLastDir, fLastCase, fLastSubstring);

   if (!fe) {
      if (fLastActiveEl) DeActivateItem(fLastActiveEl);
      fLastActiveEl = 0;
      fe = (TGFrameElement*)FindItem(fLastName, fLastDir, fLastCase, fLastSubstring);

      if (!fe) {
         TString msg = "Couldn't find \"" + fLastName + '\"';
         gVirtualX->Bell(50);
         new TGMsgBox(fClient->GetDefaultRoot(), fCanvas, "Container", msg.Data(),
                        kMBIconExclamation, kMBOk, 0);
      } else {
         if (fLastActiveEl) DeActivateItem(fLastActiveEl);
         ActivateItem(fe);
         AdjustPosition();
      }
   } else {
      if (fLastActiveEl) DeActivateItem(fLastActiveEl);
      ActivateItem(fe);
      AdjustPosition();
   }
}

//______________________________________________________________________________
TGFrameElement *TGContainer::FindFrame(Int_t x, Int_t y, Bool_t exclude)
{
   // Find frame located int container at position x,y.

   TIter next(fList);
   TGFrameElement *el;
   TGFrameElement *ret = 0;
   Int_t dx = 0;
   Int_t dy = 0;
   Int_t d = 0;
   Int_t dd;

   el = (TGFrameElement *) next();
   if (!el) return 0;

   dx = TMath::Abs(el->fFrame->GetX()-x);
   dy = TMath::Abs(el->fFrame->GetY()-y);
   d = dx + dy;

   while ((el = (TGFrameElement *) next())) {
      if (exclude && (el==fLastActiveEl) ) continue;
      dx = TMath::Abs(el->fFrame->GetX()-x);
      dy = TMath::Abs(el->fFrame->GetY()-y);
      dd = dx+dy;

      if (dd<d) {
         d = dd;
         ret = el;
      }
   }
   return ret;
}

//______________________________________________________________________________
void *TGContainer::FindItem(const TString& name, Bool_t direction,
                            Bool_t caseSensitive, Bool_t subString)
{

   // Find a frame which assosiated object has a name containing a "name"
   // string.

   if (name.IsNull()) return 0;
   int idx = kNPOS;

   TGFrameElement *el = 0;
   TString str;
   TString::ECaseCompare cmp = caseSensitive ? TString::kExact : TString::kIgnoreCase;

   fLastDir = direction;
   fLastCase = caseSensitive;
   fLastName = name;
   fLastSubstring = subString;

   if (fLastActiveEl) {
      el = fLastActiveEl;

      if (direction) {
         el = (TGFrameElement *)fList->After(el);
      } else {
         el = (TGFrameElement *)fList->Before(el);
      }
   } else {
      if (direction) el = (TGFrameElement *)fList->First();
      else el  = (TGFrameElement *)fList->Last();
   }

   while (el) {
      str = el->fFrame->GetTitle();
      idx = str.Index(name, 0, cmp);

      if (idx != kNPOS) {
         if (subString) {
            return el;
         } else {
            if (str.Length() == name.Length()) return el;
         }
      }

      if (direction) {
         el = (TGFrameElement *)fList->After(el);
      } else {
         el = (TGFrameElement *)fList->Before(el);
      }
   }
   return 0;
}

//______________________________________________________________________________
TGHScrollBar *TGContainer::GetHScrollbar() const
{
   // returns pointer to hor. scroll bar

   return fCanvas ? fCanvas->GetHScrollbar() : 0;
}

//______________________________________________________________________________
TGVScrollBar *TGContainer::GetVScrollbar() const
{
   // returns pointer to vert. scroll bar

   return fCanvas ? fCanvas->GetVScrollbar() : 0;
}

//______________________________________________________________________________
void TGContainer::SetVsbPosition(Int_t newPos)
{
   // Set position of vertical scrollbar.

   if (!fViewPort) return;
   TGVScrollBar *vb = GetVScrollbar();

   if (vb && vb->IsMapped()) {
      vb->SetRange((Int_t)GetHeight(), (Int_t)fViewPort->GetHeight());
      vb->SetPosition(newPos);
   } else {
      fViewPort->SetVPos(0);
   }
}

//______________________________________________________________________________
void TGContainer::SetHsbPosition(Int_t newPos)
{
   // set new hor. position

   if (!fViewPort) return;
   TGHScrollBar *hb = GetHScrollbar();

   if (hb && hb->IsMapped()) {
      hb->SetRange((Int_t)GetWidth(), (Int_t)fViewPort->GetWidth());
      hb->SetPosition(newPos);
   } else {
      fViewPort->SetHPos(0);
   }
}

//______________________________________________________________________________
void TGContainer::AdjustPosition()
{
   // Move content to position of highlighted/activated frame.

   if (!fViewPort) return;
   if (!fLastActiveEl) return;
   TGFrame *f = fLastActiveEl->fFrame;

   Int_t vh = 0;
   Int_t v = 0;

   TGHScrollBar *hb = GetHScrollbar();
   TGVScrollBar *vb = GetVScrollbar();
   Int_t pos = GetPagePosition().fY;
   Int_t pg;


   if (vb && vb->IsMapped()) {
      pg = (vb->GetPageSize()*GetHeight())/fViewPort->GetHeight();
      vh =  pos + (Int_t)fViewPort->GetHeight();

      if (f->GetY() < pos) {
         v = TMath::Max(0, f->GetY() - (Int_t)fViewPort->GetHeight()/2);
         v = (v*pg)/GetHeight();

         SetVsbPosition(v);
      } else if (f->GetY() + (Int_t)f->GetHeight() > vh) {
         v = TMath::Min((Int_t)GetHeight() - (Int_t)fViewPort->GetHeight(),
                        f->GetY() + (Int_t)f->GetHeight() - (Int_t)fViewPort->GetHeight()/2);
         v = (v*pg)/GetHeight();
         SetVsbPosition(v);
      }
   }

   Int_t hw = 0;
   Int_t h = 0;

   if (hb && hb->IsMapped() && (!vb || (vb && !vb->IsMapped()))) {
      pg = (hb->GetPageSize()*GetWidth())/fViewPort->GetWidth();
      pos =GetPagePosition().fX;
      hw = pos + (Int_t)fViewPort->GetWidth();

      if (f->GetX() < pos) {
         h = TMath::Max(0, f->GetX() - (Int_t)fViewPort->GetWidth()/2);
         h = (h*pg)/GetWidth();

         SetHsbPosition(h);
      } else if (f->GetX() + (Int_t)f->GetWidth() > hw) {
         h = TMath::Min((Int_t)GetWidth() - (Int_t)fViewPort->GetWidth(),
                        f->GetX() + (Int_t)f->GetWidth() - (Int_t)fViewPort->GetWidth()/2);
         h = (h*pg)/GetWidth();

         SetHsbPosition(h);
      }
   }
}

//______________________________________________________________________________
void TGContainer::LineLeft(Bool_t select)
{
   // Move current position one column left.

   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();

   TGFrameElement *fe = (TGFrameElement*)fList->First();
   if (!fe) return; // empty list

   TGFrameElement *old = fLastActiveEl;

   if (old) DeActivateItem(old);   //
   else fLastActiveEl = fe;

   TGFrameElement *la = fLastActiveEl;
   Int_t dx = la->fLayout->GetPadLeft() + la->fLayout->GetPadRight();
   Int_t dy = la->fLayout->GetPadTop() + la->fLayout->GetPadBottom();
   Int_t y = la->fFrame->GetY();
   Int_t x = la->fFrame->GetX() - dx;

   Int_t hw = pos.fX + dim.fWidth;

   TGHScrollBar *hb = GetHScrollbar();
   if (x<=0 && (hb && !hb->IsMapped())) { // move to previous line
      x = hw;
      y = y - la->fFrame->GetDefaultHeight() - dy;
   }

   fe = FindFrame(x, y);
   if (!fe) fe = (TGFrameElement*)fList->First();

   if (!select) fSelected=1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
void TGContainer::LineRight(Bool_t select)
{
   // Move current position one column right.

   TGPosition pos = GetPagePosition();
   TGDimension dim = GetPageDimension();

   TGFrameElement *fe = (TGFrameElement*)fList->Last();
   if (!fe) return;

   TGFrameElement *old = fLastActiveEl;

   if (old) DeActivateItem(old);
   else fLastActiveEl = (TGFrameElement*)fList->First();

   Int_t dx = fLastActiveEl->fLayout->GetPadLeft() + fLastActiveEl->fLayout->GetPadRight();
   Int_t dy = fLastActiveEl->fLayout->GetPadTop() + fLastActiveEl->fLayout->GetPadBottom();
   Int_t y = fLastActiveEl->fFrame->GetY();
   Int_t x = fLastActiveEl->fFrame->GetX() + fLastActiveEl->fFrame->GetDefaultWidth() + dx;

   Int_t hw = pos.fX + dim.fWidth - dx;

   TGHScrollBar *hb =  GetHScrollbar();
   if (x >= hw && (hb && !hb->IsMapped())) { // move one line down
      x = 0;
      y = y + fLastActiveEl->fFrame->GetDefaultHeight() + dy;
   }

   fe = FindFrame(x, y);
   if (!fe) fe = (TGFrameElement*)fList->Last();
   if (!select) fSelected = 1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
void TGContainer::LineUp(Bool_t select)
{
   // Make current position first line in window by scrolling up.

   TGFrameElement *fe = (TGFrameElement*)fList->First();
   if (!fe) return;

   TGFrameElement *old = fLastActiveEl;

   if (old) {
      DeActivateItem(old);
   } else {
      fLastActiveEl = (TGFrameElement*)fList->First();
   }

   Int_t dy = fLastActiveEl->fLayout->GetPadTop() + fLastActiveEl->fLayout->GetPadBottom();
   Int_t y = fLastActiveEl->fFrame->GetY() - dy;
   Int_t x = fLastActiveEl->fFrame->GetX();

   fe = FindFrame(x, y);
   if (!fe) fe = (TGFrameElement*)fList->First();
   if (fe->fFrame->GetY() > fLastActiveEl->fFrame->GetY()) fe = fLastActiveEl;
   if (!select) fSelected = 1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
void TGContainer::LineDown(Bool_t select)
{
   // Move one line down.

   TGFrameElement *fe = (TGFrameElement*)fList->Last();
   if (!fe) return;

   TGFrameElement* old = fLastActiveEl;

   if (old) DeActivateItem(old);
   else fLastActiveEl = (TGFrameElement*)fList->First();

   Int_t dy = fLastActiveEl->fLayout->GetPadTop() + fLastActiveEl->fLayout->GetPadBottom();
   Int_t y = fLastActiveEl->fFrame->GetY() +
             fLastActiveEl->fFrame->GetHeight() + dy;
   Int_t x = fLastActiveEl->fFrame->GetX();

   fe = FindFrame(x, y);
   if (!fe) fe = (TGFrameElement*)fList->Last();
   if (fe->fFrame->GetY() < fLastActiveEl->fFrame->GetY()) fe = fLastActiveEl;
   if (!select) fSelected = 1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
void TGContainer::PageUp(Bool_t select)
{
   // Move  position one page up.

   TGDimension dim = GetPageDimension();

   TGFrameElement *fe = (TGFrameElement*)fList->First();
   if (!fe) return;

   TGFrameElement* old = fLastActiveEl;

   if (old) DeActivateItem(old);
   else fLastActiveEl = (TGFrameElement*)fList->First();

   Int_t y = fLastActiveEl->fFrame->GetY();
   Int_t x = fLastActiveEl->fFrame->GetX();

   TGVScrollBar *vb =  GetVScrollbar();
   TGHScrollBar *hb =  GetHScrollbar();

   if (vb && vb->IsMapped()) {
      y -= dim.fHeight;
   } else {
      if (hb && hb->IsMapped()) {
         x -= dim.fWidth;
      } else {
         Home();
         return;
      }
   }

   fe = FindFrame(x, y);

   if (!fe || fe->fFrame->GetY()>fLastActiveEl->fFrame->GetY()) {
      fe = (TGFrameElement*)fList->First();
   }

   if (!select) fSelected = 1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
void TGContainer::PageDown(Bool_t select)
{
   // Move position one page down.

   TGDimension dim = GetPageDimension();

   TList *li = GetList();
   TGFrameElement *fe = (TGFrameElement*)fList->Last();
   if (!fe) return;

   TGFrameElement *old = fLastActiveEl;

   if (old) DeActivateItem(old);
   else fLastActiveEl = (TGFrameElement*)fList->First();

   Int_t y = fLastActiveEl->fFrame->GetY();
   Int_t x = fLastActiveEl->fFrame->GetX();

   TGVScrollBar *vb = GetVScrollbar();
   TGHScrollBar *hb = GetHScrollbar();

   if (vb && vb->IsMapped()) {
      y += dim.fHeight;
   } else {
      if (hb && hb->IsMapped()) {
         x += dim.fWidth;
      } else {
         End();
         return;
      }
   }

   fe = FindFrame(x, y);
   if (!fe || fe->fFrame->GetY()<fLastActiveEl->fFrame->GetY() ) {
      fe = (TGFrameElement*)li->Last();
   }

   if (!select) fSelected = 1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
void TGContainer::Home(Bool_t select)
{
   // Move to upper-left corner of container.

   TGFrameElement *fe = (TGFrameElement*)fList->First();
   if (!fe) return;

   TGFrameElement *old = fLastActiveEl;
   if (old) DeActivateItem(old);

   if (!select) fSelected = 1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
void TGContainer::End(Bool_t select)
{
   // Move to the bottom-right corner of container.

   TGFrameElement *fe = (TGFrameElement*)fList->Last();
   if (!fe) return;

   TGFrameElement *old = fLastActiveEl;
   if (old) DeActivateItem(old);

   if (!select) fSelected = 1;

   ActivateItem(fe);
   AdjustPosition();
}

//______________________________________________________________________________
const TGGC &TGContainer::GetLineGC()
{
   // Get graphics context for line drawing.

   if (!fgLineGC) {
      GCValues_t gval;
      gval.fMask = kGCForeground | kGCBackground | kGCFunction | kGCFillStyle |
                   kGCLineWidth  | kGCLineStyle  | kGCSubwindowMode |
                   kGCGraphicsExposures;
      gval.fForeground = fgWhitePixel ^ fgBlackPixel;
      gval.fBackground = fgWhitePixel;
      gval.fFunction   = kGXxor;
      gval.fLineWidth  = 0;
      gval.fLineStyle  = kLineOnOffDash;
      gval.fFillStyle  = kFillSolid;
      gval.fSubwindowMode = kIncludeInferiors;
      gval.fGraphicsExposures = kFALSE;
      fgLineGC = gClient->GetGC(&gval, kTRUE);
      fgLineGC->SetDashOffset(0);
      fgLineGC->SetDashList("\x1\x1", 2);
   }
   return *fgLineGC;
}

//______________________________________________________________________________
TGCanvas::TGCanvas(const TGWindow *p, UInt_t w, UInt_t h,
                   UInt_t options, ULong_t back) :
    TGFrame(p, w, h, options, back)
{
   // Create a canvas object.

   fVport      = new TGViewPort(this, w-4, h-4, kChildFrame | kOwnBackground,
                                fgWhitePixel);
   fHScrollbar = new TGHScrollBar(this, w-4, kDefaultScrollBarWidth);
   fVScrollbar = new TGVScrollBar(this, kDefaultScrollBarWidth, h-4);

   fScrolling  = kCanvasScrollBoth;

   fHScrollbar->Associate(this);
   fVScrollbar->Associate(this);

   fVport->Move(fBorderWidth, fBorderWidth);

   SetWindowName();

   fVScrollbar->SetEditDisabled(kEditDisable | kEditDisableGrab | kEditDisableBtnEnable);
   fHScrollbar->SetEditDisabled(kEditDisable | kEditDisableGrab | kEditDisableBtnEnable);
}

//______________________________________________________________________________
TGCanvas::~TGCanvas()
{
   // Delete canvas.

   delete fHScrollbar;
   delete fVScrollbar;
   delete fVport;
}

//______________________________________________________________________________
void TGCanvas::MapSubwindows()
{
   // Map all canvas sub windows.

   if (fHScrollbar) fHScrollbar->MapSubwindows();
   if (fVScrollbar) fVScrollbar->MapSubwindows();

   if (fVport) {
      TGFrame *container = fVport->GetContainer();
      if (!container) {
         Error("MapSubwindows", "no canvas container set yet");
         return;
      }
      container->MapSubwindows();
      fVport->MapSubwindows();
      fVport->MapWindow();
   }
   Layout();
}

//______________________________________________________________________________
void TGCanvas::AddFrame(TGFrame *f, TGLayoutHints *l)
{
   // Adding a frame to a canvas is actually adding the frame to the
   // viewport container. The viewport container must be at least a
   // TGCompositeFrame for this method to succeed.

   TGFrame *container = fVport->GetContainer();
   if (!container) {
      Error("AddFrame", "no canvas container set yet");
      return;
   }
   if (container->InheritsFrom(TGCompositeFrame::Class()))
      ((TGCompositeFrame*)container)->AddFrame(f, l);
   else
      Error("AddFrame", "canvas container must inherit from TGCompositeFrame");
}

//______________________________________________________________________________
void TGCanvas::DrawBorder()
{
   // Draw canvas border.

   switch (fOptions & (kSunkenFrame | kRaisedFrame | kDoubleBorder)) {
      case kSunkenFrame | kDoubleBorder:
         gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, fWidth-2, 0);
         gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, 0, fHeight-2);
         gVirtualX->DrawLine(fId, GetBlackGC()(), 1, 1, fWidth-3, 1);
         gVirtualX->DrawLine(fId, GetBlackGC()(), 1, 1, 1, fHeight-3);
         if (gClient->GetStyle() > 1) break;
         gVirtualX->DrawLine(fId, GetHilightGC()(), 0, fHeight-1, fWidth-1, fHeight-1);
         gVirtualX->DrawLine(fId, GetHilightGC()(), fWidth-1, fHeight-1, fWidth-1, 0);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  1, fHeight-2, fWidth-2, fHeight-2);
         gVirtualX->DrawLine(fId, GetBckgndGC()(),  fWidth-2, 1, fWidth-2, fHeight-2);
         break;

      default:
         TGFrame::DrawBorder();
         break;
   }
}

//______________________________________________________________________________
void TGCanvas::Layout()
{
   // Create layout for canvas. Depending on the size of the container
   // we need to add the scrollbars.

   Bool_t   need_vsb, need_hsb;
   UInt_t   cw, ch, tcw, tch;

   need_vsb = need_hsb = kFALSE;

   TGFrame *container = fVport->GetContainer();
   if (!container) {
      Error("Layout", "no canvas container set yet");
      return;
   }

   Bool_t fixedw = container->IsLayoutBroken() || (container->GetOptions() & kFixedWidth) ?
                   kTRUE : kFALSE;
   Bool_t fixedh = container->IsLayoutBroken() || (container->GetOptions() & kFixedHeight) ?
                   kTRUE : kFALSE;

   // test whether we need scrollbars
   cw = fWidth  - UInt_t(fBorderWidth << 1);
   ch = fHeight - UInt_t(fBorderWidth << 1);

   if (!fixedw) container->SetWidth(cw);
   if (!fixedh) container->SetHeight(ch);

   if (container->GetDefaultWidth() > cw) {
      if ((fScrolling & kCanvasScrollHorizontal) && fHScrollbar) {
         need_hsb = kTRUE;
         ch -= fHScrollbar->GetDefaultHeight();
         if ((Int_t) ch < 0) {
            //Warning("Layout", "height would become too small, setting to 10");
            ch = 10;
         }
         if (!fixedh) container->SetHeight(ch);
      }
   }

   if (container->GetDefaultHeight() > ch) {
      if ((fScrolling & kCanvasScrollVertical) && fVScrollbar) {
         need_vsb = kTRUE;
         cw -= fVScrollbar->GetDefaultWidth();
         if ((Int_t) cw < 0) {
            //Warning("Layout", "width would become too small, setting to 10");
            cw = 10;
         }
         if (!fixedw) container->SetWidth(cw);
      }
   }

   // re-check again (putting the vertical scrollbar could have changed things)

   if (container->GetDefaultWidth() > cw) {
      if (!need_hsb) {
         if ((fScrolling & kCanvasScrollHorizontal) && fHScrollbar) {
            need_hsb = kTRUE;
            ch -= fHScrollbar->GetDefaultHeight();
            if ((Int_t) ch < 0) {
               //Warning("Layout", "height would become too small, setting to 10");
               ch = 10;
            }
            if (!fixedh) container->SetHeight(ch);
         }
      }
   }

   fVport->MoveResize(fBorderWidth, fBorderWidth, cw, ch);

   tcw = TMath::Max(container->GetDefaultWidth(), cw);
   tch = TMath::Max(container->GetDefaultHeight(), ch);
   UInt_t curw = container->GetDefaultWidth();

   container->SetWidth(0); // force a resize in TGFrame::Resize

   if (fixedw && fixedh) {
      container->Resize(curw, container->GetDefaultHeight());
   } else if (fixedw) {
      container->Resize(curw, tch);
   } else if (fixedh) {
      container->Resize(tcw, container->GetDefaultHeight());
   } else {
      container->Resize(tcw, tch);
   }

   if (fHScrollbar) {
      if (need_hsb) {
         fHScrollbar->MoveResize(fBorderWidth, ch+fBorderWidth, cw, fHScrollbar->GetDefaultHeight());
         fHScrollbar->SetRange((Int_t)container->GetWidth(), (Int_t)fVport->GetWidth());
         fHScrollbar->MapWindow();
      } else {
         fHScrollbar->UnmapWindow();
         fHScrollbar->SetPosition(0);
         if (container->IsLayoutBroken()) {
            container->Resize(fVport->GetWidth(), container->GetHeight());
         }
      }
   }

   if (fVScrollbar) {
      if (need_vsb) {
         fVScrollbar->MoveResize(cw+fBorderWidth, fBorderWidth, fVScrollbar->GetDefaultWidth(), ch);
         fVScrollbar->SetRange((Int_t)container->GetHeight(), (Int_t)fVport->GetHeight());
         fVScrollbar->MapWindow();
      } else {
         fVScrollbar->UnmapWindow();
         fVScrollbar->SetPosition(0);
         if (container->IsLayoutBroken()) {
            container->Resize(container->GetWidth(), fVport->GetHeight());
         }
      }
   }
}

//______________________________________________________________________________
Bool_t TGCanvas::ProcessMessage(Long_t msg, Long_t parm1, Long_t)
{
   // Handle message generated by the canvas scrollbars.

   switch (GET_MSG(msg)) {
      case kC_HSCROLL:
         switch (GET_SUBMSG(msg)) {
            case kSB_SLIDERTRACK:
            case kSB_SLIDERPOS:
               fVport->SetHPos((Int_t)-parm1);
               break;
         }
         break;

      case kC_VSCROLL:
         switch (GET_SUBMSG(msg)) {
            case kSB_SLIDERTRACK:
            case kSB_SLIDERPOS:
               fVport->SetVPos((Int_t)-parm1);
               break;
         }
         break;

      default:
         break;
   }
   return kTRUE;
}

//______________________________________________________________________________
Int_t TGCanvas::GetHsbPosition() const
{
   // Get position of horizontal scrollbar.

   if (fHScrollbar && fHScrollbar->IsMapped())
      return fHScrollbar->GetPosition();
   return 0;
}

//______________________________________________________________________________
Int_t TGCanvas::GetVsbPosition() const
{
   // Get position of vertical scrollbar.

   if (fVScrollbar && fVScrollbar->IsMapped())
      return fVScrollbar->GetPosition();
   return 0;
}

//______________________________________________________________________________
void TGCanvas::SetHsbPosition(Int_t newPos)
{
   // Set position of horizontal scrollbar.

   if (fHScrollbar && fHScrollbar->IsMapped()) {
      TGFrame *container = fVport->GetContainer();
      fHScrollbar->SetRange((Int_t)container->GetWidth(), (Int_t)fVport->GetWidth());
      fHScrollbar->SetPosition(newPos);
   } else {
      fVport->SetHPos(0);
   }
}

//______________________________________________________________________________
void TGCanvas::SetVsbPosition(Int_t newPos)
{
   // Set position of vertical scrollbar.

   if (fVScrollbar && fVScrollbar->IsMapped()) {
      TGFrame *container = fVport->GetContainer();
      fVScrollbar->SetRange((Int_t)container->GetHeight(), (Int_t)fVport->GetHeight());
      fVScrollbar->SetPosition(newPos);
   } else {
      fVport->SetVPos(0);
   }
}

//______________________________________________________________________________
void TGCanvas::SetScrolling(Int_t scrolling)
{
   // Set scrolling policy. Use values defined by the enum: kCanvasNoScroll,
   // kCanvasScrollHorizontal, kCanvasScrollVertical, kCanvasScrollBoth.

   if (scrolling != fScrolling) {
      fScrolling = scrolling;
      Layout();
   }
}

//______________________________________________________________________________
void TGCanvas::ClearViewPort()
{
   // Clear view port and redraw content.

   TGFrame *cont = GetContainer();
   if (!cont) return;

   gVirtualX->ClearArea(cont->GetId(), 0, 0, fVport->GetWidth(), fVport->GetHeight());
   fClient->NeedRedraw(cont);
}

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

   if (fBackground != GetDefaultFrameBackground()) SaveUserColor(out, option);

   out << std::endl << "   // canvas widget" << std::endl;

   out << "   TGCanvas *";
   out << GetName() << " = new TGCanvas("<< fParent->GetName()
       << "," << GetWidth() << "," << GetHeight();

   if (fBackground == GetDefaultFrameBackground()) {
      if (GetOptions() == (kSunkenFrame | kDoubleBorder)) {
         out << ");" << std::endl;
      } else {
         out << "," << GetOptionString() << ");" << std::endl;
      }
   } else {
      out << "," << GetOptionString() << ",ucolor);" << std::endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   TGViewPort *vp = GetViewPort();
   out << std::endl << "   // canvas viewport" << std::endl;
   out << "   TGViewPort *" << vp->GetName() << " = " << GetName()
       << "->GetViewPort();" << std::endl;

   TGContainer *cont = (TGContainer*)GetContainer();
   cont->SavePrimitive(out, option);

   out << "   " << vp->GetName() << "->AddFrame(" << cont->GetName()
       << ");" << std::endl;

   out << "   " << cont->GetName() << "->SetLayoutManager(";
   cont->GetLayoutManager()->SavePrimitive(out, option);
   out << ");"<< std::endl;

   out << "   " << cont->GetName() << "->MapSubwindows();" << std::endl;

   out << "   " << GetName() << "->SetContainer(" << cont->GetName()
       << ");" << std::endl;

   out << "   " << GetName() << "->MapSubwindows();" << std::endl;

   if (fHScrollbar && fHScrollbar->IsMapped())
      out << "   " << GetName() << "->SetHsbPosition(" << GetHsbPosition()
          << ");" << std::endl;


   if (fVScrollbar && fVScrollbar->IsMapped())
      out << "   " << GetName() << "->SetVsbPosition(" << GetVsbPosition()
          << ");" << std::endl;

}

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

   if (fBackground != GetDefaultFrameBackground()) SaveUserColor(out, option);

   out << std::endl << "   // canvas container" << std::endl;

   if ((fParent->GetParent())->InheritsFrom(TGCanvas::Class())) {
      out << GetName() << " = new TGContainer(" << GetCanvas()->GetName();
   } else {
      out << GetName() << " = new TGContainer(" << fParent->GetName();
      out << "," << GetWidth() << "," << GetHeight();
   }

   if (fBackground == GetDefaultFrameBackground()) {
      if (GetOptions() == (kSunkenFrame | kDoubleBorder)) {
         out <<");" << std::endl;
      } else {
         out << "," << GetOptionString() <<");" << std::endl;
      }
   } else {
      out << "," << GetOptionString() << ",ucolor);" << std::endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
}
 TGCanvas.cxx:1
 TGCanvas.cxx:2
 TGCanvas.cxx:3
 TGCanvas.cxx:4
 TGCanvas.cxx:5
 TGCanvas.cxx:6
 TGCanvas.cxx:7
 TGCanvas.cxx:8
 TGCanvas.cxx:9
 TGCanvas.cxx:10
 TGCanvas.cxx:11
 TGCanvas.cxx:12
 TGCanvas.cxx:13
 TGCanvas.cxx:14
 TGCanvas.cxx:15
 TGCanvas.cxx:16
 TGCanvas.cxx:17
 TGCanvas.cxx:18
 TGCanvas.cxx:19
 TGCanvas.cxx:20
 TGCanvas.cxx:21
 TGCanvas.cxx:22
 TGCanvas.cxx:23
 TGCanvas.cxx:24
 TGCanvas.cxx:25
 TGCanvas.cxx:26
 TGCanvas.cxx:27
 TGCanvas.cxx:28
 TGCanvas.cxx:29
 TGCanvas.cxx:30
 TGCanvas.cxx:31
 TGCanvas.cxx:32
 TGCanvas.cxx:33
 TGCanvas.cxx:34
 TGCanvas.cxx:35
 TGCanvas.cxx:36
 TGCanvas.cxx:37
 TGCanvas.cxx:38
 TGCanvas.cxx:39
 TGCanvas.cxx:40
 TGCanvas.cxx:41
 TGCanvas.cxx:42
 TGCanvas.cxx:43
 TGCanvas.cxx:44
 TGCanvas.cxx:45
 TGCanvas.cxx:46
 TGCanvas.cxx:47
 TGCanvas.cxx:48
 TGCanvas.cxx:49
 TGCanvas.cxx:50
 TGCanvas.cxx:51
 TGCanvas.cxx:52
 TGCanvas.cxx:53
 TGCanvas.cxx:54
 TGCanvas.cxx:55
 TGCanvas.cxx:56
 TGCanvas.cxx:57
 TGCanvas.cxx:58
 TGCanvas.cxx:59
 TGCanvas.cxx:60
 TGCanvas.cxx:61
 TGCanvas.cxx:62
 TGCanvas.cxx:63
 TGCanvas.cxx:64
 TGCanvas.cxx:65
 TGCanvas.cxx:66
 TGCanvas.cxx:67
 TGCanvas.cxx:68
 TGCanvas.cxx:69
 TGCanvas.cxx:70
 TGCanvas.cxx:71
 TGCanvas.cxx:72
 TGCanvas.cxx:73
 TGCanvas.cxx:74
 TGCanvas.cxx:75
 TGCanvas.cxx:76
 TGCanvas.cxx:77
 TGCanvas.cxx:78
 TGCanvas.cxx:79
 TGCanvas.cxx:80
 TGCanvas.cxx:81
 TGCanvas.cxx:82
 TGCanvas.cxx:83
 TGCanvas.cxx:84
 TGCanvas.cxx:85
 TGCanvas.cxx:86
 TGCanvas.cxx:87
 TGCanvas.cxx:88
 TGCanvas.cxx:89
 TGCanvas.cxx:90
 TGCanvas.cxx:91
 TGCanvas.cxx:92
 TGCanvas.cxx:93
 TGCanvas.cxx:94
 TGCanvas.cxx:95
 TGCanvas.cxx:96
 TGCanvas.cxx:97
 TGCanvas.cxx:98
 TGCanvas.cxx:99
 TGCanvas.cxx:100
 TGCanvas.cxx:101
 TGCanvas.cxx:102
 TGCanvas.cxx:103
 TGCanvas.cxx:104
 TGCanvas.cxx:105
 TGCanvas.cxx:106
 TGCanvas.cxx:107
 TGCanvas.cxx:108
 TGCanvas.cxx:109
 TGCanvas.cxx:110
 TGCanvas.cxx:111
 TGCanvas.cxx:112
 TGCanvas.cxx:113
 TGCanvas.cxx:114
 TGCanvas.cxx:115
 TGCanvas.cxx:116
 TGCanvas.cxx:117
 TGCanvas.cxx:118
 TGCanvas.cxx:119
 TGCanvas.cxx:120
 TGCanvas.cxx:121
 TGCanvas.cxx:122
 TGCanvas.cxx:123
 TGCanvas.cxx:124
 TGCanvas.cxx:125
 TGCanvas.cxx:126
 TGCanvas.cxx:127
 TGCanvas.cxx:128
 TGCanvas.cxx:129
 TGCanvas.cxx:130
 TGCanvas.cxx:131
 TGCanvas.cxx:132
 TGCanvas.cxx:133
 TGCanvas.cxx:134
 TGCanvas.cxx:135
 TGCanvas.cxx:136
 TGCanvas.cxx:137
 TGCanvas.cxx:138
 TGCanvas.cxx:139
 TGCanvas.cxx:140
 TGCanvas.cxx:141
 TGCanvas.cxx:142
 TGCanvas.cxx:143
 TGCanvas.cxx:144
 TGCanvas.cxx:145
 TGCanvas.cxx:146
 TGCanvas.cxx:147
 TGCanvas.cxx:148
 TGCanvas.cxx:149
 TGCanvas.cxx:150
 TGCanvas.cxx:151
 TGCanvas.cxx:152
 TGCanvas.cxx:153
 TGCanvas.cxx:154
 TGCanvas.cxx:155
 TGCanvas.cxx:156
 TGCanvas.cxx:157
 TGCanvas.cxx:158
 TGCanvas.cxx:159
 TGCanvas.cxx:160
 TGCanvas.cxx:161
 TGCanvas.cxx:162
 TGCanvas.cxx:163
 TGCanvas.cxx:164
 TGCanvas.cxx:165
 TGCanvas.cxx:166
 TGCanvas.cxx:167
 TGCanvas.cxx:168
 TGCanvas.cxx:169
 TGCanvas.cxx:170
 TGCanvas.cxx:171
 TGCanvas.cxx:172
 TGCanvas.cxx:173
 TGCanvas.cxx:174
 TGCanvas.cxx:175
 TGCanvas.cxx:176
 TGCanvas.cxx:177
 TGCanvas.cxx:178
 TGCanvas.cxx:179
 TGCanvas.cxx:180
 TGCanvas.cxx:181
 TGCanvas.cxx:182
 TGCanvas.cxx:183
 TGCanvas.cxx:184
 TGCanvas.cxx:185
 TGCanvas.cxx:186
 TGCanvas.cxx:187
 TGCanvas.cxx:188
 TGCanvas.cxx:189
 TGCanvas.cxx:190
 TGCanvas.cxx:191
 TGCanvas.cxx:192
 TGCanvas.cxx:193
 TGCanvas.cxx:194
 TGCanvas.cxx:195
 TGCanvas.cxx:196
 TGCanvas.cxx:197
 TGCanvas.cxx:198
 TGCanvas.cxx:199
 TGCanvas.cxx:200
 TGCanvas.cxx:201
 TGCanvas.cxx:202
 TGCanvas.cxx:203
 TGCanvas.cxx:204
 TGCanvas.cxx:205
 TGCanvas.cxx:206
 TGCanvas.cxx:207
 TGCanvas.cxx:208
 TGCanvas.cxx:209
 TGCanvas.cxx:210
 TGCanvas.cxx:211
 TGCanvas.cxx:212
 TGCanvas.cxx:213
 TGCanvas.cxx:214
 TGCanvas.cxx:215
 TGCanvas.cxx:216
 TGCanvas.cxx:217
 TGCanvas.cxx:218
 TGCanvas.cxx:219
 TGCanvas.cxx:220
 TGCanvas.cxx:221
 TGCanvas.cxx:222
 TGCanvas.cxx:223
 TGCanvas.cxx:224
 TGCanvas.cxx:225
 TGCanvas.cxx:226
 TGCanvas.cxx:227
 TGCanvas.cxx:228
 TGCanvas.cxx:229
 TGCanvas.cxx:230
 TGCanvas.cxx:231
 TGCanvas.cxx:232
 TGCanvas.cxx:233
 TGCanvas.cxx:234
 TGCanvas.cxx:235
 TGCanvas.cxx:236
 TGCanvas.cxx:237
 TGCanvas.cxx:238
 TGCanvas.cxx:239
 TGCanvas.cxx:240
 TGCanvas.cxx:241
 TGCanvas.cxx:242
 TGCanvas.cxx:243
 TGCanvas.cxx:244
 TGCanvas.cxx:245
 TGCanvas.cxx:246
 TGCanvas.cxx:247
 TGCanvas.cxx:248
 TGCanvas.cxx:249
 TGCanvas.cxx:250
 TGCanvas.cxx:251
 TGCanvas.cxx:252
 TGCanvas.cxx:253
 TGCanvas.cxx:254
 TGCanvas.cxx:255
 TGCanvas.cxx:256
 TGCanvas.cxx:257
 TGCanvas.cxx:258
 TGCanvas.cxx:259
 TGCanvas.cxx:260
 TGCanvas.cxx:261
 TGCanvas.cxx:262
 TGCanvas.cxx:263
 TGCanvas.cxx:264
 TGCanvas.cxx:265
 TGCanvas.cxx:266
 TGCanvas.cxx:267
 TGCanvas.cxx:268
 TGCanvas.cxx:269
 TGCanvas.cxx:270
 TGCanvas.cxx:271
 TGCanvas.cxx:272
 TGCanvas.cxx:273
 TGCanvas.cxx:274
 TGCanvas.cxx:275
 TGCanvas.cxx:276
 TGCanvas.cxx:277
 TGCanvas.cxx:278
 TGCanvas.cxx:279
 TGCanvas.cxx:280
 TGCanvas.cxx:281
 TGCanvas.cxx:282
 TGCanvas.cxx:283
 TGCanvas.cxx:284
 TGCanvas.cxx:285
 TGCanvas.cxx:286
 TGCanvas.cxx:287
 TGCanvas.cxx:288
 TGCanvas.cxx:289
 TGCanvas.cxx:290
 TGCanvas.cxx:291
 TGCanvas.cxx:292
 TGCanvas.cxx:293
 TGCanvas.cxx:294
 TGCanvas.cxx:295
 TGCanvas.cxx:296
 TGCanvas.cxx:297
 TGCanvas.cxx:298
 TGCanvas.cxx:299
 TGCanvas.cxx:300
 TGCanvas.cxx:301
 TGCanvas.cxx:302
 TGCanvas.cxx:303
 TGCanvas.cxx:304
 TGCanvas.cxx:305
 TGCanvas.cxx:306
 TGCanvas.cxx:307
 TGCanvas.cxx:308
 TGCanvas.cxx:309
 TGCanvas.cxx:310
 TGCanvas.cxx:311
 TGCanvas.cxx:312
 TGCanvas.cxx:313
 TGCanvas.cxx:314
 TGCanvas.cxx:315
 TGCanvas.cxx:316
 TGCanvas.cxx:317
 TGCanvas.cxx:318
 TGCanvas.cxx:319
 TGCanvas.cxx:320
 TGCanvas.cxx:321
 TGCanvas.cxx:322
 TGCanvas.cxx:323
 TGCanvas.cxx:324
 TGCanvas.cxx:325
 TGCanvas.cxx:326
 TGCanvas.cxx:327
 TGCanvas.cxx:328
 TGCanvas.cxx:329
 TGCanvas.cxx:330
 TGCanvas.cxx:331
 TGCanvas.cxx:332
 TGCanvas.cxx:333
 TGCanvas.cxx:334
 TGCanvas.cxx:335
 TGCanvas.cxx:336
 TGCanvas.cxx:337
 TGCanvas.cxx:338
 TGCanvas.cxx:339
 TGCanvas.cxx:340
 TGCanvas.cxx:341
 TGCanvas.cxx:342
 TGCanvas.cxx:343
 TGCanvas.cxx:344
 TGCanvas.cxx:345
 TGCanvas.cxx:346
 TGCanvas.cxx:347
 TGCanvas.cxx:348
 TGCanvas.cxx:349
 TGCanvas.cxx:350
 TGCanvas.cxx:351
 TGCanvas.cxx:352
 TGCanvas.cxx:353
 TGCanvas.cxx:354
 TGCanvas.cxx:355
 TGCanvas.cxx:356
 TGCanvas.cxx:357
 TGCanvas.cxx:358
 TGCanvas.cxx:359
 TGCanvas.cxx:360
 TGCanvas.cxx:361
 TGCanvas.cxx:362
 TGCanvas.cxx:363
 TGCanvas.cxx:364
 TGCanvas.cxx:365
 TGCanvas.cxx:366
 TGCanvas.cxx:367
 TGCanvas.cxx:368
 TGCanvas.cxx:369
 TGCanvas.cxx:370
 TGCanvas.cxx:371
 TGCanvas.cxx:372
 TGCanvas.cxx:373
 TGCanvas.cxx:374
 TGCanvas.cxx:375
 TGCanvas.cxx:376
 TGCanvas.cxx:377
 TGCanvas.cxx:378
 TGCanvas.cxx:379
 TGCanvas.cxx:380
 TGCanvas.cxx:381
 TGCanvas.cxx:382
 TGCanvas.cxx:383
 TGCanvas.cxx:384
 TGCanvas.cxx:385
 TGCanvas.cxx:386
 TGCanvas.cxx:387
 TGCanvas.cxx:388
 TGCanvas.cxx:389
 TGCanvas.cxx:390
 TGCanvas.cxx:391
 TGCanvas.cxx:392
 TGCanvas.cxx:393
 TGCanvas.cxx:394
 TGCanvas.cxx:395
 TGCanvas.cxx:396
 TGCanvas.cxx:397
 TGCanvas.cxx:398
 TGCanvas.cxx:399
 TGCanvas.cxx:400
 TGCanvas.cxx:401
 TGCanvas.cxx:402
 TGCanvas.cxx:403
 TGCanvas.cxx:404
 TGCanvas.cxx:405
 TGCanvas.cxx:406
 TGCanvas.cxx:407
 TGCanvas.cxx:408
 TGCanvas.cxx:409
 TGCanvas.cxx:410
 TGCanvas.cxx:411
 TGCanvas.cxx:412
 TGCanvas.cxx:413
 TGCanvas.cxx:414
 TGCanvas.cxx:415
 TGCanvas.cxx:416
 TGCanvas.cxx:417
 TGCanvas.cxx:418
 TGCanvas.cxx:419
 TGCanvas.cxx:420
 TGCanvas.cxx:421
 TGCanvas.cxx:422
 TGCanvas.cxx:423
 TGCanvas.cxx:424
 TGCanvas.cxx:425
 TGCanvas.cxx:426
 TGCanvas.cxx:427
 TGCanvas.cxx:428
 TGCanvas.cxx:429
 TGCanvas.cxx:430
 TGCanvas.cxx:431
 TGCanvas.cxx:432
 TGCanvas.cxx:433
 TGCanvas.cxx:434
 TGCanvas.cxx:435
 TGCanvas.cxx:436
 TGCanvas.cxx:437
 TGCanvas.cxx:438
 TGCanvas.cxx:439
 TGCanvas.cxx:440
 TGCanvas.cxx:441
 TGCanvas.cxx:442
 TGCanvas.cxx:443
 TGCanvas.cxx:444
 TGCanvas.cxx:445
 TGCanvas.cxx:446
 TGCanvas.cxx:447
 TGCanvas.cxx:448
 TGCanvas.cxx:449
 TGCanvas.cxx:450
 TGCanvas.cxx:451
 TGCanvas.cxx:452
 TGCanvas.cxx:453
 TGCanvas.cxx:454
 TGCanvas.cxx:455
 TGCanvas.cxx:456
 TGCanvas.cxx:457
 TGCanvas.cxx:458
 TGCanvas.cxx:459
 TGCanvas.cxx:460
 TGCanvas.cxx:461
 TGCanvas.cxx:462
 TGCanvas.cxx:463
 TGCanvas.cxx:464
 TGCanvas.cxx:465
 TGCanvas.cxx:466
 TGCanvas.cxx:467
 TGCanvas.cxx:468
 TGCanvas.cxx:469
 TGCanvas.cxx:470
 TGCanvas.cxx:471
 TGCanvas.cxx:472
 TGCanvas.cxx:473
 TGCanvas.cxx:474
 TGCanvas.cxx:475
 TGCanvas.cxx:476
 TGCanvas.cxx:477
 TGCanvas.cxx:478
 TGCanvas.cxx:479
 TGCanvas.cxx:480
 TGCanvas.cxx:481
 TGCanvas.cxx:482
 TGCanvas.cxx:483
 TGCanvas.cxx:484
 TGCanvas.cxx:485
 TGCanvas.cxx:486
 TGCanvas.cxx:487
 TGCanvas.cxx:488
 TGCanvas.cxx:489
 TGCanvas.cxx:490
 TGCanvas.cxx:491
 TGCanvas.cxx:492
 TGCanvas.cxx:493
 TGCanvas.cxx:494
 TGCanvas.cxx:495
 TGCanvas.cxx:496
 TGCanvas.cxx:497
 TGCanvas.cxx:498
 TGCanvas.cxx:499
 TGCanvas.cxx:500
 TGCanvas.cxx:501
 TGCanvas.cxx:502
 TGCanvas.cxx:503
 TGCanvas.cxx:504
 TGCanvas.cxx:505
 TGCanvas.cxx:506
 TGCanvas.cxx:507
 TGCanvas.cxx:508
 TGCanvas.cxx:509
 TGCanvas.cxx:510
 TGCanvas.cxx:511
 TGCanvas.cxx:512
 TGCanvas.cxx:513
 TGCanvas.cxx:514
 TGCanvas.cxx:515
 TGCanvas.cxx:516
 TGCanvas.cxx:517
 TGCanvas.cxx:518
 TGCanvas.cxx:519
 TGCanvas.cxx:520
 TGCanvas.cxx:521
 TGCanvas.cxx:522
 TGCanvas.cxx:523
 TGCanvas.cxx:524
 TGCanvas.cxx:525
 TGCanvas.cxx:526
 TGCanvas.cxx:527
 TGCanvas.cxx:528
 TGCanvas.cxx:529
 TGCanvas.cxx:530
 TGCanvas.cxx:531
 TGCanvas.cxx:532
 TGCanvas.cxx:533
 TGCanvas.cxx:534
 TGCanvas.cxx:535
 TGCanvas.cxx:536
 TGCanvas.cxx:537
 TGCanvas.cxx:538
 TGCanvas.cxx:539
 TGCanvas.cxx:540
 TGCanvas.cxx:541
 TGCanvas.cxx:542
 TGCanvas.cxx:543
 TGCanvas.cxx:544
 TGCanvas.cxx:545
 TGCanvas.cxx:546
 TGCanvas.cxx:547
 TGCanvas.cxx:548
 TGCanvas.cxx:549
 TGCanvas.cxx:550
 TGCanvas.cxx:551
 TGCanvas.cxx:552
 TGCanvas.cxx:553
 TGCanvas.cxx:554
 TGCanvas.cxx:555
 TGCanvas.cxx:556
 TGCanvas.cxx:557
 TGCanvas.cxx:558
 TGCanvas.cxx:559
 TGCanvas.cxx:560
 TGCanvas.cxx:561
 TGCanvas.cxx:562
 TGCanvas.cxx:563
 TGCanvas.cxx:564
 TGCanvas.cxx:565
 TGCanvas.cxx:566
 TGCanvas.cxx:567
 TGCanvas.cxx:568
 TGCanvas.cxx:569
 TGCanvas.cxx:570
 TGCanvas.cxx:571
 TGCanvas.cxx:572
 TGCanvas.cxx:573
 TGCanvas.cxx:574
 TGCanvas.cxx:575
 TGCanvas.cxx:576
 TGCanvas.cxx:577
 TGCanvas.cxx:578
 TGCanvas.cxx:579
 TGCanvas.cxx:580
 TGCanvas.cxx:581
 TGCanvas.cxx:582
 TGCanvas.cxx:583
 TGCanvas.cxx:584
 TGCanvas.cxx:585
 TGCanvas.cxx:586
 TGCanvas.cxx:587
 TGCanvas.cxx:588
 TGCanvas.cxx:589
 TGCanvas.cxx:590
 TGCanvas.cxx:591
 TGCanvas.cxx:592
 TGCanvas.cxx:593
 TGCanvas.cxx:594
 TGCanvas.cxx:595
 TGCanvas.cxx:596
 TGCanvas.cxx:597
 TGCanvas.cxx:598
 TGCanvas.cxx:599
 TGCanvas.cxx:600
 TGCanvas.cxx:601
 TGCanvas.cxx:602
 TGCanvas.cxx:603
 TGCanvas.cxx:604
 TGCanvas.cxx:605
 TGCanvas.cxx:606
 TGCanvas.cxx:607
 TGCanvas.cxx:608
 TGCanvas.cxx:609
 TGCanvas.cxx:610
 TGCanvas.cxx:611
 TGCanvas.cxx:612
 TGCanvas.cxx:613
 TGCanvas.cxx:614
 TGCanvas.cxx:615
 TGCanvas.cxx:616
 TGCanvas.cxx:617
 TGCanvas.cxx:618
 TGCanvas.cxx:619
 TGCanvas.cxx:620
 TGCanvas.cxx:621
 TGCanvas.cxx:622
 TGCanvas.cxx:623
 TGCanvas.cxx:624
 TGCanvas.cxx:625
 TGCanvas.cxx:626
 TGCanvas.cxx:627
 TGCanvas.cxx:628
 TGCanvas.cxx:629
 TGCanvas.cxx:630
 TGCanvas.cxx:631
 TGCanvas.cxx:632
 TGCanvas.cxx:633
 TGCanvas.cxx:634
 TGCanvas.cxx:635
 TGCanvas.cxx:636
 TGCanvas.cxx:637
 TGCanvas.cxx:638
 TGCanvas.cxx:639
 TGCanvas.cxx:640
 TGCanvas.cxx:641
 TGCanvas.cxx:642
 TGCanvas.cxx:643
 TGCanvas.cxx:644
 TGCanvas.cxx:645
 TGCanvas.cxx:646
 TGCanvas.cxx:647
 TGCanvas.cxx:648
 TGCanvas.cxx:649
 TGCanvas.cxx:650
 TGCanvas.cxx:651
 TGCanvas.cxx:652
 TGCanvas.cxx:653
 TGCanvas.cxx:654
 TGCanvas.cxx:655
 TGCanvas.cxx:656
 TGCanvas.cxx:657
 TGCanvas.cxx:658
 TGCanvas.cxx:659
 TGCanvas.cxx:660
 TGCanvas.cxx:661
 TGCanvas.cxx:662
 TGCanvas.cxx:663
 TGCanvas.cxx:664
 TGCanvas.cxx:665
 TGCanvas.cxx:666
 TGCanvas.cxx:667
 TGCanvas.cxx:668
 TGCanvas.cxx:669
 TGCanvas.cxx:670
 TGCanvas.cxx:671
 TGCanvas.cxx:672
 TGCanvas.cxx:673
 TGCanvas.cxx:674
 TGCanvas.cxx:675
 TGCanvas.cxx:676
 TGCanvas.cxx:677
 TGCanvas.cxx:678
 TGCanvas.cxx:679
 TGCanvas.cxx:680
 TGCanvas.cxx:681
 TGCanvas.cxx:682
 TGCanvas.cxx:683
 TGCanvas.cxx:684
 TGCanvas.cxx:685
 TGCanvas.cxx:686
 TGCanvas.cxx:687
 TGCanvas.cxx:688
 TGCanvas.cxx:689
 TGCanvas.cxx:690
 TGCanvas.cxx:691
 TGCanvas.cxx:692
 TGCanvas.cxx:693
 TGCanvas.cxx:694
 TGCanvas.cxx:695
 TGCanvas.cxx:696
 TGCanvas.cxx:697
 TGCanvas.cxx:698
 TGCanvas.cxx:699
 TGCanvas.cxx:700
 TGCanvas.cxx:701
 TGCanvas.cxx:702
 TGCanvas.cxx:703
 TGCanvas.cxx:704
 TGCanvas.cxx:705
 TGCanvas.cxx:706
 TGCanvas.cxx:707
 TGCanvas.cxx:708
 TGCanvas.cxx:709
 TGCanvas.cxx:710
 TGCanvas.cxx:711
 TGCanvas.cxx:712
 TGCanvas.cxx:713
 TGCanvas.cxx:714
 TGCanvas.cxx:715
 TGCanvas.cxx:716
 TGCanvas.cxx:717
 TGCanvas.cxx:718
 TGCanvas.cxx:719
 TGCanvas.cxx:720
 TGCanvas.cxx:721
 TGCanvas.cxx:722
 TGCanvas.cxx:723
 TGCanvas.cxx:724
 TGCanvas.cxx:725
 TGCanvas.cxx:726
 TGCanvas.cxx:727
 TGCanvas.cxx:728
 TGCanvas.cxx:729
 TGCanvas.cxx:730
 TGCanvas.cxx:731
 TGCanvas.cxx:732
 TGCanvas.cxx:733
 TGCanvas.cxx:734
 TGCanvas.cxx:735
 TGCanvas.cxx:736
 TGCanvas.cxx:737
 TGCanvas.cxx:738
 TGCanvas.cxx:739
 TGCanvas.cxx:740
 TGCanvas.cxx:741
 TGCanvas.cxx:742
 TGCanvas.cxx:743
 TGCanvas.cxx:744
 TGCanvas.cxx:745
 TGCanvas.cxx:746
 TGCanvas.cxx:747
 TGCanvas.cxx:748
 TGCanvas.cxx:749
 TGCanvas.cxx:750
 TGCanvas.cxx:751
 TGCanvas.cxx:752
 TGCanvas.cxx:753
 TGCanvas.cxx:754
 TGCanvas.cxx:755
 TGCanvas.cxx:756
 TGCanvas.cxx:757
 TGCanvas.cxx:758
 TGCanvas.cxx:759
 TGCanvas.cxx:760
 TGCanvas.cxx:761
 TGCanvas.cxx:762
 TGCanvas.cxx:763
 TGCanvas.cxx:764
 TGCanvas.cxx:765
 TGCanvas.cxx:766
 TGCanvas.cxx:767
 TGCanvas.cxx:768
 TGCanvas.cxx:769
 TGCanvas.cxx:770
 TGCanvas.cxx:771
 TGCanvas.cxx:772
 TGCanvas.cxx:773
 TGCanvas.cxx:774
 TGCanvas.cxx:775
 TGCanvas.cxx:776
 TGCanvas.cxx:777
 TGCanvas.cxx:778
 TGCanvas.cxx:779
 TGCanvas.cxx:780
 TGCanvas.cxx:781
 TGCanvas.cxx:782
 TGCanvas.cxx:783
 TGCanvas.cxx:784
 TGCanvas.cxx:785
 TGCanvas.cxx:786
 TGCanvas.cxx:787
 TGCanvas.cxx:788
 TGCanvas.cxx:789
 TGCanvas.cxx:790
 TGCanvas.cxx:791
 TGCanvas.cxx:792
 TGCanvas.cxx:793
 TGCanvas.cxx:794
 TGCanvas.cxx:795
 TGCanvas.cxx:796
 TGCanvas.cxx:797
 TGCanvas.cxx:798
 TGCanvas.cxx:799
 TGCanvas.cxx:800
 TGCanvas.cxx:801
 TGCanvas.cxx:802
 TGCanvas.cxx:803
 TGCanvas.cxx:804
 TGCanvas.cxx:805
 TGCanvas.cxx:806
 TGCanvas.cxx:807
 TGCanvas.cxx:808
 TGCanvas.cxx:809
 TGCanvas.cxx:810
 TGCanvas.cxx:811
 TGCanvas.cxx:812
 TGCanvas.cxx:813
 TGCanvas.cxx:814
 TGCanvas.cxx:815
 TGCanvas.cxx:816
 TGCanvas.cxx:817
 TGCanvas.cxx:818
 TGCanvas.cxx:819
 TGCanvas.cxx:820
 TGCanvas.cxx:821
 TGCanvas.cxx:822
 TGCanvas.cxx:823
 TGCanvas.cxx:824
 TGCanvas.cxx:825
 TGCanvas.cxx:826
 TGCanvas.cxx:827
 TGCanvas.cxx:828
 TGCanvas.cxx:829
 TGCanvas.cxx:830
 TGCanvas.cxx:831
 TGCanvas.cxx:832
 TGCanvas.cxx:833
 TGCanvas.cxx:834
 TGCanvas.cxx:835
 TGCanvas.cxx:836
 TGCanvas.cxx:837
 TGCanvas.cxx:838
 TGCanvas.cxx:839
 TGCanvas.cxx:840
 TGCanvas.cxx:841
 TGCanvas.cxx:842
 TGCanvas.cxx:843
 TGCanvas.cxx:844
 TGCanvas.cxx:845
 TGCanvas.cxx:846
 TGCanvas.cxx:847
 TGCanvas.cxx:848
 TGCanvas.cxx:849
 TGCanvas.cxx:850
 TGCanvas.cxx:851
 TGCanvas.cxx:852
 TGCanvas.cxx:853
 TGCanvas.cxx:854
 TGCanvas.cxx:855
 TGCanvas.cxx:856
 TGCanvas.cxx:857
 TGCanvas.cxx:858
 TGCanvas.cxx:859
 TGCanvas.cxx:860
 TGCanvas.cxx:861
 TGCanvas.cxx:862
 TGCanvas.cxx:863
 TGCanvas.cxx:864
 TGCanvas.cxx:865
 TGCanvas.cxx:866
 TGCanvas.cxx:867
 TGCanvas.cxx:868
 TGCanvas.cxx:869
 TGCanvas.cxx:870
 TGCanvas.cxx:871
 TGCanvas.cxx:872
 TGCanvas.cxx:873
 TGCanvas.cxx:874
 TGCanvas.cxx:875
 TGCanvas.cxx:876
 TGCanvas.cxx:877
 TGCanvas.cxx:878
 TGCanvas.cxx:879
 TGCanvas.cxx:880
 TGCanvas.cxx:881
 TGCanvas.cxx:882
 TGCanvas.cxx:883
 TGCanvas.cxx:884
 TGCanvas.cxx:885
 TGCanvas.cxx:886
 TGCanvas.cxx:887
 TGCanvas.cxx:888
 TGCanvas.cxx:889
 TGCanvas.cxx:890
 TGCanvas.cxx:891
 TGCanvas.cxx:892
 TGCanvas.cxx:893
 TGCanvas.cxx:894
 TGCanvas.cxx:895
 TGCanvas.cxx:896
 TGCanvas.cxx:897
 TGCanvas.cxx:898
 TGCanvas.cxx:899
 TGCanvas.cxx:900
 TGCanvas.cxx:901
 TGCanvas.cxx:902
 TGCanvas.cxx:903
 TGCanvas.cxx:904
 TGCanvas.cxx:905
 TGCanvas.cxx:906
 TGCanvas.cxx:907
 TGCanvas.cxx:908
 TGCanvas.cxx:909
 TGCanvas.cxx:910
 TGCanvas.cxx:911
 TGCanvas.cxx:912
 TGCanvas.cxx:913
 TGCanvas.cxx:914
 TGCanvas.cxx:915
 TGCanvas.cxx:916
 TGCanvas.cxx:917
 TGCanvas.cxx:918
 TGCanvas.cxx:919
 TGCanvas.cxx:920
 TGCanvas.cxx:921
 TGCanvas.cxx:922
 TGCanvas.cxx:923
 TGCanvas.cxx:924
 TGCanvas.cxx:925
 TGCanvas.cxx:926
 TGCanvas.cxx:927
 TGCanvas.cxx:928
 TGCanvas.cxx:929
 TGCanvas.cxx:930
 TGCanvas.cxx:931
 TGCanvas.cxx:932
 TGCanvas.cxx:933
 TGCanvas.cxx:934
 TGCanvas.cxx:935
 TGCanvas.cxx:936
 TGCanvas.cxx:937
 TGCanvas.cxx:938
 TGCanvas.cxx:939
 TGCanvas.cxx:940
 TGCanvas.cxx:941
 TGCanvas.cxx:942
 TGCanvas.cxx:943
 TGCanvas.cxx:944
 TGCanvas.cxx:945
 TGCanvas.cxx:946
 TGCanvas.cxx:947
 TGCanvas.cxx:948
 TGCanvas.cxx:949
 TGCanvas.cxx:950
 TGCanvas.cxx:951
 TGCanvas.cxx:952
 TGCanvas.cxx:953
 TGCanvas.cxx:954
 TGCanvas.cxx:955
 TGCanvas.cxx:956
 TGCanvas.cxx:957
 TGCanvas.cxx:958
 TGCanvas.cxx:959
 TGCanvas.cxx:960
 TGCanvas.cxx:961
 TGCanvas.cxx:962
 TGCanvas.cxx:963
 TGCanvas.cxx:964
 TGCanvas.cxx:965
 TGCanvas.cxx:966
 TGCanvas.cxx:967
 TGCanvas.cxx:968
 TGCanvas.cxx:969
 TGCanvas.cxx:970
 TGCanvas.cxx:971
 TGCanvas.cxx:972
 TGCanvas.cxx:973
 TGCanvas.cxx:974
 TGCanvas.cxx:975
 TGCanvas.cxx:976
 TGCanvas.cxx:977
 TGCanvas.cxx:978
 TGCanvas.cxx:979
 TGCanvas.cxx:980
 TGCanvas.cxx:981
 TGCanvas.cxx:982
 TGCanvas.cxx:983
 TGCanvas.cxx:984
 TGCanvas.cxx:985
 TGCanvas.cxx:986
 TGCanvas.cxx:987
 TGCanvas.cxx:988
 TGCanvas.cxx:989
 TGCanvas.cxx:990
 TGCanvas.cxx:991
 TGCanvas.cxx:992
 TGCanvas.cxx:993
 TGCanvas.cxx:994
 TGCanvas.cxx:995
 TGCanvas.cxx:996
 TGCanvas.cxx:997
 TGCanvas.cxx:998
 TGCanvas.cxx:999
 TGCanvas.cxx:1000
 TGCanvas.cxx:1001
 TGCanvas.cxx:1002
 TGCanvas.cxx:1003
 TGCanvas.cxx:1004
 TGCanvas.cxx:1005
 TGCanvas.cxx:1006
 TGCanvas.cxx:1007
 TGCanvas.cxx:1008
 TGCanvas.cxx:1009
 TGCanvas.cxx:1010
 TGCanvas.cxx:1011
 TGCanvas.cxx:1012
 TGCanvas.cxx:1013
 TGCanvas.cxx:1014
 TGCanvas.cxx:1015
 TGCanvas.cxx:1016
 TGCanvas.cxx:1017
 TGCanvas.cxx:1018
 TGCanvas.cxx:1019
 TGCanvas.cxx:1020
 TGCanvas.cxx:1021
 TGCanvas.cxx:1022
 TGCanvas.cxx:1023
 TGCanvas.cxx:1024
 TGCanvas.cxx:1025
 TGCanvas.cxx:1026
 TGCanvas.cxx:1027
 TGCanvas.cxx:1028
 TGCanvas.cxx:1029
 TGCanvas.cxx:1030
 TGCanvas.cxx:1031
 TGCanvas.cxx:1032
 TGCanvas.cxx:1033
 TGCanvas.cxx:1034
 TGCanvas.cxx:1035
 TGCanvas.cxx:1036
 TGCanvas.cxx:1037
 TGCanvas.cxx:1038
 TGCanvas.cxx:1039
 TGCanvas.cxx:1040
 TGCanvas.cxx:1041
 TGCanvas.cxx:1042
 TGCanvas.cxx:1043
 TGCanvas.cxx:1044
 TGCanvas.cxx:1045
 TGCanvas.cxx:1046
 TGCanvas.cxx:1047
 TGCanvas.cxx:1048
 TGCanvas.cxx:1049
 TGCanvas.cxx:1050
 TGCanvas.cxx:1051
 TGCanvas.cxx:1052
 TGCanvas.cxx:1053
 TGCanvas.cxx:1054
 TGCanvas.cxx:1055
 TGCanvas.cxx:1056
 TGCanvas.cxx:1057
 TGCanvas.cxx:1058
 TGCanvas.cxx:1059
 TGCanvas.cxx:1060
 TGCanvas.cxx:1061
 TGCanvas.cxx:1062
 TGCanvas.cxx:1063
 TGCanvas.cxx:1064
 TGCanvas.cxx:1065
 TGCanvas.cxx:1066
 TGCanvas.cxx:1067
 TGCanvas.cxx:1068
 TGCanvas.cxx:1069
 TGCanvas.cxx:1070
 TGCanvas.cxx:1071
 TGCanvas.cxx:1072
 TGCanvas.cxx:1073
 TGCanvas.cxx:1074
 TGCanvas.cxx:1075
 TGCanvas.cxx:1076
 TGCanvas.cxx:1077
 TGCanvas.cxx:1078
 TGCanvas.cxx:1079
 TGCanvas.cxx:1080
 TGCanvas.cxx:1081
 TGCanvas.cxx:1082
 TGCanvas.cxx:1083
 TGCanvas.cxx:1084
 TGCanvas.cxx:1085
 TGCanvas.cxx:1086
 TGCanvas.cxx:1087
 TGCanvas.cxx:1088
 TGCanvas.cxx:1089
 TGCanvas.cxx:1090
 TGCanvas.cxx:1091
 TGCanvas.cxx:1092
 TGCanvas.cxx:1093
 TGCanvas.cxx:1094
 TGCanvas.cxx:1095
 TGCanvas.cxx:1096
 TGCanvas.cxx:1097
 TGCanvas.cxx:1098
 TGCanvas.cxx:1099
 TGCanvas.cxx:1100
 TGCanvas.cxx:1101
 TGCanvas.cxx:1102
 TGCanvas.cxx:1103
 TGCanvas.cxx:1104
 TGCanvas.cxx:1105
 TGCanvas.cxx:1106
 TGCanvas.cxx:1107
 TGCanvas.cxx:1108
 TGCanvas.cxx:1109
 TGCanvas.cxx:1110
 TGCanvas.cxx:1111
 TGCanvas.cxx:1112
 TGCanvas.cxx:1113
 TGCanvas.cxx:1114
 TGCanvas.cxx:1115
 TGCanvas.cxx:1116
 TGCanvas.cxx:1117
 TGCanvas.cxx:1118
 TGCanvas.cxx:1119
 TGCanvas.cxx:1120
 TGCanvas.cxx:1121
 TGCanvas.cxx:1122
 TGCanvas.cxx:1123
 TGCanvas.cxx:1124
 TGCanvas.cxx:1125
 TGCanvas.cxx:1126
 TGCanvas.cxx:1127
 TGCanvas.cxx:1128
 TGCanvas.cxx:1129
 TGCanvas.cxx:1130
 TGCanvas.cxx:1131
 TGCanvas.cxx:1132
 TGCanvas.cxx:1133
 TGCanvas.cxx:1134
 TGCanvas.cxx:1135
 TGCanvas.cxx:1136
 TGCanvas.cxx:1137
 TGCanvas.cxx:1138
 TGCanvas.cxx:1139
 TGCanvas.cxx:1140
 TGCanvas.cxx:1141
 TGCanvas.cxx:1142
 TGCanvas.cxx:1143
 TGCanvas.cxx:1144
 TGCanvas.cxx:1145
 TGCanvas.cxx:1146
 TGCanvas.cxx:1147
 TGCanvas.cxx:1148
 TGCanvas.cxx:1149
 TGCanvas.cxx:1150
 TGCanvas.cxx:1151
 TGCanvas.cxx:1152
 TGCanvas.cxx:1153
 TGCanvas.cxx:1154
 TGCanvas.cxx:1155
 TGCanvas.cxx:1156
 TGCanvas.cxx:1157
 TGCanvas.cxx:1158
 TGCanvas.cxx:1159
 TGCanvas.cxx:1160
 TGCanvas.cxx:1161
 TGCanvas.cxx:1162
 TGCanvas.cxx:1163
 TGCanvas.cxx:1164
 TGCanvas.cxx:1165
 TGCanvas.cxx:1166
 TGCanvas.cxx:1167
 TGCanvas.cxx:1168
 TGCanvas.cxx:1169
 TGCanvas.cxx:1170
 TGCanvas.cxx:1171
 TGCanvas.cxx:1172
 TGCanvas.cxx:1173
 TGCanvas.cxx:1174
 TGCanvas.cxx:1175
 TGCanvas.cxx:1176
 TGCanvas.cxx:1177
 TGCanvas.cxx:1178
 TGCanvas.cxx:1179
 TGCanvas.cxx:1180
 TGCanvas.cxx:1181
 TGCanvas.cxx:1182
 TGCanvas.cxx:1183
 TGCanvas.cxx:1184
 TGCanvas.cxx:1185
 TGCanvas.cxx:1186
 TGCanvas.cxx:1187
 TGCanvas.cxx:1188
 TGCanvas.cxx:1189
 TGCanvas.cxx:1190
 TGCanvas.cxx:1191
 TGCanvas.cxx:1192
 TGCanvas.cxx:1193
 TGCanvas.cxx:1194
 TGCanvas.cxx:1195
 TGCanvas.cxx:1196
 TGCanvas.cxx:1197
 TGCanvas.cxx:1198
 TGCanvas.cxx:1199
 TGCanvas.cxx:1200
 TGCanvas.cxx:1201
 TGCanvas.cxx:1202
 TGCanvas.cxx:1203
 TGCanvas.cxx:1204
 TGCanvas.cxx:1205
 TGCanvas.cxx:1206
 TGCanvas.cxx:1207
 TGCanvas.cxx:1208
 TGCanvas.cxx:1209
 TGCanvas.cxx:1210
 TGCanvas.cxx:1211
 TGCanvas.cxx:1212
 TGCanvas.cxx:1213
 TGCanvas.cxx:1214
 TGCanvas.cxx:1215
 TGCanvas.cxx:1216
 TGCanvas.cxx:1217
 TGCanvas.cxx:1218
 TGCanvas.cxx:1219
 TGCanvas.cxx:1220
 TGCanvas.cxx:1221
 TGCanvas.cxx:1222
 TGCanvas.cxx:1223
 TGCanvas.cxx:1224
 TGCanvas.cxx:1225
 TGCanvas.cxx:1226
 TGCanvas.cxx:1227
 TGCanvas.cxx:1228
 TGCanvas.cxx:1229
 TGCanvas.cxx:1230
 TGCanvas.cxx:1231
 TGCanvas.cxx:1232
 TGCanvas.cxx:1233
 TGCanvas.cxx:1234
 TGCanvas.cxx:1235
 TGCanvas.cxx:1236
 TGCanvas.cxx:1237
 TGCanvas.cxx:1238
 TGCanvas.cxx:1239
 TGCanvas.cxx:1240
 TGCanvas.cxx:1241
 TGCanvas.cxx:1242
 TGCanvas.cxx:1243
 TGCanvas.cxx:1244
 TGCanvas.cxx:1245
 TGCanvas.cxx:1246
 TGCanvas.cxx:1247
 TGCanvas.cxx:1248
 TGCanvas.cxx:1249
 TGCanvas.cxx:1250
 TGCanvas.cxx:1251
 TGCanvas.cxx:1252
 TGCanvas.cxx:1253
 TGCanvas.cxx:1254
 TGCanvas.cxx:1255
 TGCanvas.cxx:1256
 TGCanvas.cxx:1257
 TGCanvas.cxx:1258
 TGCanvas.cxx:1259
 TGCanvas.cxx:1260
 TGCanvas.cxx:1261
 TGCanvas.cxx:1262
 TGCanvas.cxx:1263
 TGCanvas.cxx:1264
 TGCanvas.cxx:1265
 TGCanvas.cxx:1266
 TGCanvas.cxx:1267
 TGCanvas.cxx:1268
 TGCanvas.cxx:1269
 TGCanvas.cxx:1270
 TGCanvas.cxx:1271
 TGCanvas.cxx:1272
 TGCanvas.cxx:1273
 TGCanvas.cxx:1274
 TGCanvas.cxx:1275
 TGCanvas.cxx:1276
 TGCanvas.cxx:1277
 TGCanvas.cxx:1278
 TGCanvas.cxx:1279
 TGCanvas.cxx:1280
 TGCanvas.cxx:1281
 TGCanvas.cxx:1282
 TGCanvas.cxx:1283
 TGCanvas.cxx:1284
 TGCanvas.cxx:1285
 TGCanvas.cxx:1286
 TGCanvas.cxx:1287
 TGCanvas.cxx:1288
 TGCanvas.cxx:1289
 TGCanvas.cxx:1290
 TGCanvas.cxx:1291
 TGCanvas.cxx:1292
 TGCanvas.cxx:1293
 TGCanvas.cxx:1294
 TGCanvas.cxx:1295
 TGCanvas.cxx:1296
 TGCanvas.cxx:1297
 TGCanvas.cxx:1298
 TGCanvas.cxx:1299
 TGCanvas.cxx:1300
 TGCanvas.cxx:1301
 TGCanvas.cxx:1302
 TGCanvas.cxx:1303
 TGCanvas.cxx:1304
 TGCanvas.cxx:1305
 TGCanvas.cxx:1306
 TGCanvas.cxx:1307
 TGCanvas.cxx:1308
 TGCanvas.cxx:1309
 TGCanvas.cxx:1310
 TGCanvas.cxx:1311
 TGCanvas.cxx:1312
 TGCanvas.cxx:1313
 TGCanvas.cxx:1314
 TGCanvas.cxx:1315
 TGCanvas.cxx:1316
 TGCanvas.cxx:1317
 TGCanvas.cxx:1318
 TGCanvas.cxx:1319
 TGCanvas.cxx:1320
 TGCanvas.cxx:1321
 TGCanvas.cxx:1322
 TGCanvas.cxx:1323
 TGCanvas.cxx:1324
 TGCanvas.cxx:1325
 TGCanvas.cxx:1326
 TGCanvas.cxx:1327
 TGCanvas.cxx:1328
 TGCanvas.cxx:1329
 TGCanvas.cxx:1330
 TGCanvas.cxx:1331
 TGCanvas.cxx:1332
 TGCanvas.cxx:1333
 TGCanvas.cxx:1334
 TGCanvas.cxx:1335
 TGCanvas.cxx:1336
 TGCanvas.cxx:1337
 TGCanvas.cxx:1338
 TGCanvas.cxx:1339
 TGCanvas.cxx:1340
 TGCanvas.cxx:1341
 TGCanvas.cxx:1342
 TGCanvas.cxx:1343
 TGCanvas.cxx:1344
 TGCanvas.cxx:1345
 TGCanvas.cxx:1346
 TGCanvas.cxx:1347
 TGCanvas.cxx:1348
 TGCanvas.cxx:1349
 TGCanvas.cxx:1350
 TGCanvas.cxx:1351
 TGCanvas.cxx:1352
 TGCanvas.cxx:1353
 TGCanvas.cxx:1354
 TGCanvas.cxx:1355
 TGCanvas.cxx:1356
 TGCanvas.cxx:1357
 TGCanvas.cxx:1358
 TGCanvas.cxx:1359
 TGCanvas.cxx:1360
 TGCanvas.cxx:1361
 TGCanvas.cxx:1362
 TGCanvas.cxx:1363
 TGCanvas.cxx:1364
 TGCanvas.cxx:1365
 TGCanvas.cxx:1366
 TGCanvas.cxx:1367
 TGCanvas.cxx:1368
 TGCanvas.cxx:1369
 TGCanvas.cxx:1370
 TGCanvas.cxx:1371
 TGCanvas.cxx:1372
 TGCanvas.cxx:1373
 TGCanvas.cxx:1374
 TGCanvas.cxx:1375
 TGCanvas.cxx:1376
 TGCanvas.cxx:1377
 TGCanvas.cxx:1378
 TGCanvas.cxx:1379
 TGCanvas.cxx:1380
 TGCanvas.cxx:1381
 TGCanvas.cxx:1382
 TGCanvas.cxx:1383
 TGCanvas.cxx:1384
 TGCanvas.cxx:1385
 TGCanvas.cxx:1386
 TGCanvas.cxx:1387
 TGCanvas.cxx:1388
 TGCanvas.cxx:1389
 TGCanvas.cxx:1390
 TGCanvas.cxx:1391
 TGCanvas.cxx:1392
 TGCanvas.cxx:1393
 TGCanvas.cxx:1394
 TGCanvas.cxx:1395
 TGCanvas.cxx:1396
 TGCanvas.cxx:1397
 TGCanvas.cxx:1398
 TGCanvas.cxx:1399
 TGCanvas.cxx:1400
 TGCanvas.cxx:1401
 TGCanvas.cxx:1402
 TGCanvas.cxx:1403
 TGCanvas.cxx:1404
 TGCanvas.cxx:1405
 TGCanvas.cxx:1406
 TGCanvas.cxx:1407
 TGCanvas.cxx:1408
 TGCanvas.cxx:1409
 TGCanvas.cxx:1410
 TGCanvas.cxx:1411
 TGCanvas.cxx:1412
 TGCanvas.cxx:1413
 TGCanvas.cxx:1414
 TGCanvas.cxx:1415
 TGCanvas.cxx:1416
 TGCanvas.cxx:1417
 TGCanvas.cxx:1418
 TGCanvas.cxx:1419
 TGCanvas.cxx:1420
 TGCanvas.cxx:1421
 TGCanvas.cxx:1422
 TGCanvas.cxx:1423
 TGCanvas.cxx:1424
 TGCanvas.cxx:1425
 TGCanvas.cxx:1426
 TGCanvas.cxx:1427
 TGCanvas.cxx:1428
 TGCanvas.cxx:1429
 TGCanvas.cxx:1430
 TGCanvas.cxx:1431
 TGCanvas.cxx:1432
 TGCanvas.cxx:1433
 TGCanvas.cxx:1434
 TGCanvas.cxx:1435
 TGCanvas.cxx:1436
 TGCanvas.cxx:1437
 TGCanvas.cxx:1438
 TGCanvas.cxx:1439
 TGCanvas.cxx:1440
 TGCanvas.cxx:1441
 TGCanvas.cxx:1442
 TGCanvas.cxx:1443
 TGCanvas.cxx:1444
 TGCanvas.cxx:1445
 TGCanvas.cxx:1446
 TGCanvas.cxx:1447
 TGCanvas.cxx:1448
 TGCanvas.cxx:1449
 TGCanvas.cxx:1450
 TGCanvas.cxx:1451
 TGCanvas.cxx:1452
 TGCanvas.cxx:1453
 TGCanvas.cxx:1454
 TGCanvas.cxx:1455
 TGCanvas.cxx:1456
 TGCanvas.cxx:1457
 TGCanvas.cxx:1458
 TGCanvas.cxx:1459
 TGCanvas.cxx:1460
 TGCanvas.cxx:1461
 TGCanvas.cxx:1462
 TGCanvas.cxx:1463
 TGCanvas.cxx:1464
 TGCanvas.cxx:1465
 TGCanvas.cxx:1466
 TGCanvas.cxx:1467
 TGCanvas.cxx:1468
 TGCanvas.cxx:1469
 TGCanvas.cxx:1470
 TGCanvas.cxx:1471
 TGCanvas.cxx:1472
 TGCanvas.cxx:1473
 TGCanvas.cxx:1474
 TGCanvas.cxx:1475
 TGCanvas.cxx:1476
 TGCanvas.cxx:1477
 TGCanvas.cxx:1478
 TGCanvas.cxx:1479
 TGCanvas.cxx:1480
 TGCanvas.cxx:1481
 TGCanvas.cxx:1482
 TGCanvas.cxx:1483
 TGCanvas.cxx:1484
 TGCanvas.cxx:1485
 TGCanvas.cxx:1486
 TGCanvas.cxx:1487
 TGCanvas.cxx:1488
 TGCanvas.cxx:1489
 TGCanvas.cxx:1490
 TGCanvas.cxx:1491
 TGCanvas.cxx:1492
 TGCanvas.cxx:1493
 TGCanvas.cxx:1494
 TGCanvas.cxx:1495
 TGCanvas.cxx:1496
 TGCanvas.cxx:1497
 TGCanvas.cxx:1498
 TGCanvas.cxx:1499
 TGCanvas.cxx:1500
 TGCanvas.cxx:1501
 TGCanvas.cxx:1502
 TGCanvas.cxx:1503
 TGCanvas.cxx:1504
 TGCanvas.cxx:1505
 TGCanvas.cxx:1506
 TGCanvas.cxx:1507
 TGCanvas.cxx:1508
 TGCanvas.cxx:1509
 TGCanvas.cxx:1510
 TGCanvas.cxx:1511
 TGCanvas.cxx:1512
 TGCanvas.cxx:1513
 TGCanvas.cxx:1514
 TGCanvas.cxx:1515
 TGCanvas.cxx:1516
 TGCanvas.cxx:1517
 TGCanvas.cxx:1518
 TGCanvas.cxx:1519
 TGCanvas.cxx:1520
 TGCanvas.cxx:1521
 TGCanvas.cxx:1522
 TGCanvas.cxx:1523
 TGCanvas.cxx:1524
 TGCanvas.cxx:1525
 TGCanvas.cxx:1526
 TGCanvas.cxx:1527
 TGCanvas.cxx:1528
 TGCanvas.cxx:1529
 TGCanvas.cxx:1530
 TGCanvas.cxx:1531
 TGCanvas.cxx:1532
 TGCanvas.cxx:1533
 TGCanvas.cxx:1534
 TGCanvas.cxx:1535
 TGCanvas.cxx:1536
 TGCanvas.cxx:1537
 TGCanvas.cxx:1538
 TGCanvas.cxx:1539
 TGCanvas.cxx:1540
 TGCanvas.cxx:1541
 TGCanvas.cxx:1542
 TGCanvas.cxx:1543
 TGCanvas.cxx:1544
 TGCanvas.cxx:1545
 TGCanvas.cxx:1546
 TGCanvas.cxx:1547
 TGCanvas.cxx:1548
 TGCanvas.cxx:1549
 TGCanvas.cxx:1550
 TGCanvas.cxx:1551
 TGCanvas.cxx:1552
 TGCanvas.cxx:1553
 TGCanvas.cxx:1554
 TGCanvas.cxx:1555
 TGCanvas.cxx:1556
 TGCanvas.cxx:1557
 TGCanvas.cxx:1558
 TGCanvas.cxx:1559
 TGCanvas.cxx:1560
 TGCanvas.cxx:1561
 TGCanvas.cxx:1562
 TGCanvas.cxx:1563
 TGCanvas.cxx:1564
 TGCanvas.cxx:1565
 TGCanvas.cxx:1566
 TGCanvas.cxx:1567
 TGCanvas.cxx:1568
 TGCanvas.cxx:1569
 TGCanvas.cxx:1570
 TGCanvas.cxx:1571
 TGCanvas.cxx:1572
 TGCanvas.cxx:1573
 TGCanvas.cxx:1574
 TGCanvas.cxx:1575
 TGCanvas.cxx:1576
 TGCanvas.cxx:1577
 TGCanvas.cxx:1578
 TGCanvas.cxx:1579
 TGCanvas.cxx:1580
 TGCanvas.cxx:1581
 TGCanvas.cxx:1582
 TGCanvas.cxx:1583
 TGCanvas.cxx:1584
 TGCanvas.cxx:1585
 TGCanvas.cxx:1586
 TGCanvas.cxx:1587
 TGCanvas.cxx:1588
 TGCanvas.cxx:1589
 TGCanvas.cxx:1590
 TGCanvas.cxx:1591
 TGCanvas.cxx:1592
 TGCanvas.cxx:1593
 TGCanvas.cxx:1594
 TGCanvas.cxx:1595
 TGCanvas.cxx:1596
 TGCanvas.cxx:1597
 TGCanvas.cxx:1598
 TGCanvas.cxx:1599
 TGCanvas.cxx:1600
 TGCanvas.cxx:1601
 TGCanvas.cxx:1602
 TGCanvas.cxx:1603
 TGCanvas.cxx:1604
 TGCanvas.cxx:1605
 TGCanvas.cxx:1606
 TGCanvas.cxx:1607
 TGCanvas.cxx:1608
 TGCanvas.cxx:1609
 TGCanvas.cxx:1610
 TGCanvas.cxx:1611
 TGCanvas.cxx:1612
 TGCanvas.cxx:1613
 TGCanvas.cxx:1614
 TGCanvas.cxx:1615
 TGCanvas.cxx:1616
 TGCanvas.cxx:1617
 TGCanvas.cxx:1618
 TGCanvas.cxx:1619
 TGCanvas.cxx:1620
 TGCanvas.cxx:1621
 TGCanvas.cxx:1622
 TGCanvas.cxx:1623
 TGCanvas.cxx:1624
 TGCanvas.cxx:1625
 TGCanvas.cxx:1626
 TGCanvas.cxx:1627
 TGCanvas.cxx:1628
 TGCanvas.cxx:1629
 TGCanvas.cxx:1630
 TGCanvas.cxx:1631
 TGCanvas.cxx:1632
 TGCanvas.cxx:1633
 TGCanvas.cxx:1634
 TGCanvas.cxx:1635
 TGCanvas.cxx:1636
 TGCanvas.cxx:1637
 TGCanvas.cxx:1638
 TGCanvas.cxx:1639
 TGCanvas.cxx:1640
 TGCanvas.cxx:1641
 TGCanvas.cxx:1642
 TGCanvas.cxx:1643
 TGCanvas.cxx:1644
 TGCanvas.cxx:1645
 TGCanvas.cxx:1646
 TGCanvas.cxx:1647
 TGCanvas.cxx:1648
 TGCanvas.cxx:1649
 TGCanvas.cxx:1650
 TGCanvas.cxx:1651
 TGCanvas.cxx:1652
 TGCanvas.cxx:1653
 TGCanvas.cxx:1654
 TGCanvas.cxx:1655
 TGCanvas.cxx:1656
 TGCanvas.cxx:1657
 TGCanvas.cxx:1658
 TGCanvas.cxx:1659
 TGCanvas.cxx:1660
 TGCanvas.cxx:1661
 TGCanvas.cxx:1662
 TGCanvas.cxx:1663
 TGCanvas.cxx:1664
 TGCanvas.cxx:1665
 TGCanvas.cxx:1666
 TGCanvas.cxx:1667
 TGCanvas.cxx:1668
 TGCanvas.cxx:1669
 TGCanvas.cxx:1670
 TGCanvas.cxx:1671
 TGCanvas.cxx:1672
 TGCanvas.cxx:1673
 TGCanvas.cxx:1674
 TGCanvas.cxx:1675
 TGCanvas.cxx:1676
 TGCanvas.cxx:1677
 TGCanvas.cxx:1678
 TGCanvas.cxx:1679
 TGCanvas.cxx:1680
 TGCanvas.cxx:1681
 TGCanvas.cxx:1682
 TGCanvas.cxx:1683
 TGCanvas.cxx:1684
 TGCanvas.cxx:1685
 TGCanvas.cxx:1686
 TGCanvas.cxx:1687
 TGCanvas.cxx:1688
 TGCanvas.cxx:1689
 TGCanvas.cxx:1690
 TGCanvas.cxx:1691
 TGCanvas.cxx:1692
 TGCanvas.cxx:1693
 TGCanvas.cxx:1694
 TGCanvas.cxx:1695
 TGCanvas.cxx:1696
 TGCanvas.cxx:1697
 TGCanvas.cxx:1698
 TGCanvas.cxx:1699
 TGCanvas.cxx:1700
 TGCanvas.cxx:1701
 TGCanvas.cxx:1702
 TGCanvas.cxx:1703
 TGCanvas.cxx:1704
 TGCanvas.cxx:1705
 TGCanvas.cxx:1706
 TGCanvas.cxx:1707
 TGCanvas.cxx:1708
 TGCanvas.cxx:1709
 TGCanvas.cxx:1710
 TGCanvas.cxx:1711
 TGCanvas.cxx:1712
 TGCanvas.cxx:1713
 TGCanvas.cxx:1714
 TGCanvas.cxx:1715
 TGCanvas.cxx:1716
 TGCanvas.cxx:1717
 TGCanvas.cxx:1718
 TGCanvas.cxx:1719
 TGCanvas.cxx:1720
 TGCanvas.cxx:1721
 TGCanvas.cxx:1722
 TGCanvas.cxx:1723
 TGCanvas.cxx:1724
 TGCanvas.cxx:1725
 TGCanvas.cxx:1726
 TGCanvas.cxx:1727
 TGCanvas.cxx:1728
 TGCanvas.cxx:1729
 TGCanvas.cxx:1730
 TGCanvas.cxx:1731
 TGCanvas.cxx:1732
 TGCanvas.cxx:1733
 TGCanvas.cxx:1734
 TGCanvas.cxx:1735
 TGCanvas.cxx:1736
 TGCanvas.cxx:1737
 TGCanvas.cxx:1738
 TGCanvas.cxx:1739
 TGCanvas.cxx:1740
 TGCanvas.cxx:1741
 TGCanvas.cxx:1742
 TGCanvas.cxx:1743
 TGCanvas.cxx:1744
 TGCanvas.cxx:1745
 TGCanvas.cxx:1746
 TGCanvas.cxx:1747
 TGCanvas.cxx:1748
 TGCanvas.cxx:1749
 TGCanvas.cxx:1750
 TGCanvas.cxx:1751
 TGCanvas.cxx:1752
 TGCanvas.cxx:1753
 TGCanvas.cxx:1754
 TGCanvas.cxx:1755
 TGCanvas.cxx:1756
 TGCanvas.cxx:1757
 TGCanvas.cxx:1758
 TGCanvas.cxx:1759
 TGCanvas.cxx:1760
 TGCanvas.cxx:1761
 TGCanvas.cxx:1762
 TGCanvas.cxx:1763
 TGCanvas.cxx:1764
 TGCanvas.cxx:1765
 TGCanvas.cxx:1766
 TGCanvas.cxx:1767
 TGCanvas.cxx:1768
 TGCanvas.cxx:1769
 TGCanvas.cxx:1770
 TGCanvas.cxx:1771
 TGCanvas.cxx:1772
 TGCanvas.cxx:1773
 TGCanvas.cxx:1774
 TGCanvas.cxx:1775
 TGCanvas.cxx:1776
 TGCanvas.cxx:1777
 TGCanvas.cxx:1778
 TGCanvas.cxx:1779
 TGCanvas.cxx:1780
 TGCanvas.cxx:1781
 TGCanvas.cxx:1782
 TGCanvas.cxx:1783
 TGCanvas.cxx:1784
 TGCanvas.cxx:1785
 TGCanvas.cxx:1786
 TGCanvas.cxx:1787
 TGCanvas.cxx:1788
 TGCanvas.cxx:1789
 TGCanvas.cxx:1790
 TGCanvas.cxx:1791
 TGCanvas.cxx:1792
 TGCanvas.cxx:1793
 TGCanvas.cxx:1794
 TGCanvas.cxx:1795
 TGCanvas.cxx:1796
 TGCanvas.cxx:1797
 TGCanvas.cxx:1798
 TGCanvas.cxx:1799
 TGCanvas.cxx:1800
 TGCanvas.cxx:1801
 TGCanvas.cxx:1802
 TGCanvas.cxx:1803
 TGCanvas.cxx:1804
 TGCanvas.cxx:1805
 TGCanvas.cxx:1806
 TGCanvas.cxx:1807
 TGCanvas.cxx:1808
 TGCanvas.cxx:1809
 TGCanvas.cxx:1810
 TGCanvas.cxx:1811
 TGCanvas.cxx:1812
 TGCanvas.cxx:1813
 TGCanvas.cxx:1814
 TGCanvas.cxx:1815
 TGCanvas.cxx:1816
 TGCanvas.cxx:1817
 TGCanvas.cxx:1818
 TGCanvas.cxx:1819
 TGCanvas.cxx:1820
 TGCanvas.cxx:1821
 TGCanvas.cxx:1822
 TGCanvas.cxx:1823
 TGCanvas.cxx:1824
 TGCanvas.cxx:1825
 TGCanvas.cxx:1826
 TGCanvas.cxx:1827
 TGCanvas.cxx:1828
 TGCanvas.cxx:1829
 TGCanvas.cxx:1830
 TGCanvas.cxx:1831
 TGCanvas.cxx:1832
 TGCanvas.cxx:1833
 TGCanvas.cxx:1834
 TGCanvas.cxx:1835
 TGCanvas.cxx:1836
 TGCanvas.cxx:1837
 TGCanvas.cxx:1838
 TGCanvas.cxx:1839
 TGCanvas.cxx:1840
 TGCanvas.cxx:1841
 TGCanvas.cxx:1842
 TGCanvas.cxx:1843
 TGCanvas.cxx:1844
 TGCanvas.cxx:1845
 TGCanvas.cxx:1846
 TGCanvas.cxx:1847
 TGCanvas.cxx:1848
 TGCanvas.cxx:1849
 TGCanvas.cxx:1850
 TGCanvas.cxx:1851
 TGCanvas.cxx:1852
 TGCanvas.cxx:1853
 TGCanvas.cxx:1854
 TGCanvas.cxx:1855
 TGCanvas.cxx:1856
 TGCanvas.cxx:1857
 TGCanvas.cxx:1858
 TGCanvas.cxx:1859
 TGCanvas.cxx:1860
 TGCanvas.cxx:1861
 TGCanvas.cxx:1862
 TGCanvas.cxx:1863
 TGCanvas.cxx:1864
 TGCanvas.cxx:1865
 TGCanvas.cxx:1866
 TGCanvas.cxx:1867
 TGCanvas.cxx:1868
 TGCanvas.cxx:1869
 TGCanvas.cxx:1870
 TGCanvas.cxx:1871
 TGCanvas.cxx:1872
 TGCanvas.cxx:1873
 TGCanvas.cxx:1874
 TGCanvas.cxx:1875
 TGCanvas.cxx:1876
 TGCanvas.cxx:1877
 TGCanvas.cxx:1878
 TGCanvas.cxx:1879
 TGCanvas.cxx:1880
 TGCanvas.cxx:1881
 TGCanvas.cxx:1882
 TGCanvas.cxx:1883
 TGCanvas.cxx:1884
 TGCanvas.cxx:1885
 TGCanvas.cxx:1886
 TGCanvas.cxx:1887
 TGCanvas.cxx:1888
 TGCanvas.cxx:1889
 TGCanvas.cxx:1890
 TGCanvas.cxx:1891
 TGCanvas.cxx:1892
 TGCanvas.cxx:1893
 TGCanvas.cxx:1894
 TGCanvas.cxx:1895
 TGCanvas.cxx:1896
 TGCanvas.cxx:1897
 TGCanvas.cxx:1898
 TGCanvas.cxx:1899
 TGCanvas.cxx:1900
 TGCanvas.cxx:1901
 TGCanvas.cxx:1902
 TGCanvas.cxx:1903
 TGCanvas.cxx:1904
 TGCanvas.cxx:1905
 TGCanvas.cxx:1906
 TGCanvas.cxx:1907
 TGCanvas.cxx:1908
 TGCanvas.cxx:1909
 TGCanvas.cxx:1910
 TGCanvas.cxx:1911
 TGCanvas.cxx:1912
 TGCanvas.cxx:1913
 TGCanvas.cxx:1914
 TGCanvas.cxx:1915
 TGCanvas.cxx:1916
 TGCanvas.cxx:1917
 TGCanvas.cxx:1918
 TGCanvas.cxx:1919
 TGCanvas.cxx:1920
 TGCanvas.cxx:1921
 TGCanvas.cxx:1922
 TGCanvas.cxx:1923
 TGCanvas.cxx:1924
 TGCanvas.cxx:1925
 TGCanvas.cxx:1926
 TGCanvas.cxx:1927
 TGCanvas.cxx:1928
 TGCanvas.cxx:1929
 TGCanvas.cxx:1930
 TGCanvas.cxx:1931
 TGCanvas.cxx:1932
 TGCanvas.cxx:1933
 TGCanvas.cxx:1934
 TGCanvas.cxx:1935
 TGCanvas.cxx:1936
 TGCanvas.cxx:1937
 TGCanvas.cxx:1938
 TGCanvas.cxx:1939
 TGCanvas.cxx:1940
 TGCanvas.cxx:1941
 TGCanvas.cxx:1942
 TGCanvas.cxx:1943
 TGCanvas.cxx:1944
 TGCanvas.cxx:1945
 TGCanvas.cxx:1946
 TGCanvas.cxx:1947
 TGCanvas.cxx:1948
 TGCanvas.cxx:1949
 TGCanvas.cxx:1950
 TGCanvas.cxx:1951
 TGCanvas.cxx:1952
 TGCanvas.cxx:1953
 TGCanvas.cxx:1954
 TGCanvas.cxx:1955
 TGCanvas.cxx:1956
 TGCanvas.cxx:1957
 TGCanvas.cxx:1958
 TGCanvas.cxx:1959
 TGCanvas.cxx:1960
 TGCanvas.cxx:1961
 TGCanvas.cxx:1962
 TGCanvas.cxx:1963
 TGCanvas.cxx:1964
 TGCanvas.cxx:1965
 TGCanvas.cxx:1966
 TGCanvas.cxx:1967
 TGCanvas.cxx:1968
 TGCanvas.cxx:1969
 TGCanvas.cxx:1970
 TGCanvas.cxx:1971
 TGCanvas.cxx:1972
 TGCanvas.cxx:1973
 TGCanvas.cxx:1974
 TGCanvas.cxx:1975
 TGCanvas.cxx:1976
 TGCanvas.cxx:1977
 TGCanvas.cxx:1978
 TGCanvas.cxx:1979
 TGCanvas.cxx:1980
 TGCanvas.cxx:1981
 TGCanvas.cxx:1982
 TGCanvas.cxx:1983
 TGCanvas.cxx:1984
 TGCanvas.cxx:1985
 TGCanvas.cxx:1986
 TGCanvas.cxx:1987
 TGCanvas.cxx:1988
 TGCanvas.cxx:1989
 TGCanvas.cxx:1990
 TGCanvas.cxx:1991
 TGCanvas.cxx:1992
 TGCanvas.cxx:1993
 TGCanvas.cxx:1994
 TGCanvas.cxx:1995
 TGCanvas.cxx:1996
 TGCanvas.cxx:1997
 TGCanvas.cxx:1998
 TGCanvas.cxx:1999
 TGCanvas.cxx:2000
 TGCanvas.cxx:2001
 TGCanvas.cxx:2002
 TGCanvas.cxx:2003
 TGCanvas.cxx:2004
 TGCanvas.cxx:2005
 TGCanvas.cxx:2006
 TGCanvas.cxx:2007
 TGCanvas.cxx:2008
 TGCanvas.cxx:2009
 TGCanvas.cxx:2010
 TGCanvas.cxx:2011
 TGCanvas.cxx:2012
 TGCanvas.cxx:2013
 TGCanvas.cxx:2014
 TGCanvas.cxx:2015
 TGCanvas.cxx:2016
 TGCanvas.cxx:2017
 TGCanvas.cxx:2018
 TGCanvas.cxx:2019
 TGCanvas.cxx:2020
 TGCanvas.cxx:2021
 TGCanvas.cxx:2022
 TGCanvas.cxx:2023
 TGCanvas.cxx:2024
 TGCanvas.cxx:2025
 TGCanvas.cxx:2026
 TGCanvas.cxx:2027
 TGCanvas.cxx:2028
 TGCanvas.cxx:2029
 TGCanvas.cxx:2030
 TGCanvas.cxx:2031
 TGCanvas.cxx:2032
 TGCanvas.cxx:2033
 TGCanvas.cxx:2034
 TGCanvas.cxx:2035
 TGCanvas.cxx:2036
 TGCanvas.cxx:2037
 TGCanvas.cxx:2038
 TGCanvas.cxx:2039
 TGCanvas.cxx:2040
 TGCanvas.cxx:2041
 TGCanvas.cxx:2042
 TGCanvas.cxx:2043
 TGCanvas.cxx:2044
 TGCanvas.cxx:2045
 TGCanvas.cxx:2046
 TGCanvas.cxx:2047
 TGCanvas.cxx:2048
 TGCanvas.cxx:2049
 TGCanvas.cxx:2050
 TGCanvas.cxx:2051
 TGCanvas.cxx:2052
 TGCanvas.cxx:2053
 TGCanvas.cxx:2054
 TGCanvas.cxx:2055
 TGCanvas.cxx:2056
 TGCanvas.cxx:2057
 TGCanvas.cxx:2058
 TGCanvas.cxx:2059
 TGCanvas.cxx:2060
 TGCanvas.cxx:2061
 TGCanvas.cxx:2062
 TGCanvas.cxx:2063
 TGCanvas.cxx:2064
 TGCanvas.cxx:2065
 TGCanvas.cxx:2066
 TGCanvas.cxx:2067
 TGCanvas.cxx:2068
 TGCanvas.cxx:2069
 TGCanvas.cxx:2070
 TGCanvas.cxx:2071
 TGCanvas.cxx:2072
 TGCanvas.cxx:2073
 TGCanvas.cxx:2074
 TGCanvas.cxx:2075
 TGCanvas.cxx:2076
 TGCanvas.cxx:2077
 TGCanvas.cxx:2078
 TGCanvas.cxx:2079
 TGCanvas.cxx:2080
 TGCanvas.cxx:2081
 TGCanvas.cxx:2082
 TGCanvas.cxx:2083
 TGCanvas.cxx:2084
 TGCanvas.cxx:2085
 TGCanvas.cxx:2086
 TGCanvas.cxx:2087
 TGCanvas.cxx:2088
 TGCanvas.cxx:2089
 TGCanvas.cxx:2090
 TGCanvas.cxx:2091
 TGCanvas.cxx:2092
 TGCanvas.cxx:2093
 TGCanvas.cxx:2094
 TGCanvas.cxx:2095
 TGCanvas.cxx:2096
 TGCanvas.cxx:2097
 TGCanvas.cxx:2098
 TGCanvas.cxx:2099
 TGCanvas.cxx:2100
 TGCanvas.cxx:2101
 TGCanvas.cxx:2102
 TGCanvas.cxx:2103
 TGCanvas.cxx:2104
 TGCanvas.cxx:2105
 TGCanvas.cxx:2106
 TGCanvas.cxx:2107
 TGCanvas.cxx:2108
 TGCanvas.cxx:2109
 TGCanvas.cxx:2110
 TGCanvas.cxx:2111
 TGCanvas.cxx:2112
 TGCanvas.cxx:2113
 TGCanvas.cxx:2114
 TGCanvas.cxx:2115
 TGCanvas.cxx:2116
 TGCanvas.cxx:2117
 TGCanvas.cxx:2118
 TGCanvas.cxx:2119
 TGCanvas.cxx:2120
 TGCanvas.cxx:2121
 TGCanvas.cxx:2122
 TGCanvas.cxx:2123
 TGCanvas.cxx:2124
 TGCanvas.cxx:2125
 TGCanvas.cxx:2126
 TGCanvas.cxx:2127
 TGCanvas.cxx:2128
 TGCanvas.cxx:2129
 TGCanvas.cxx:2130
 TGCanvas.cxx:2131
 TGCanvas.cxx:2132
 TGCanvas.cxx:2133
 TGCanvas.cxx:2134
 TGCanvas.cxx:2135
 TGCanvas.cxx:2136
 TGCanvas.cxx:2137
 TGCanvas.cxx:2138
 TGCanvas.cxx:2139
 TGCanvas.cxx:2140
 TGCanvas.cxx:2141
 TGCanvas.cxx:2142
 TGCanvas.cxx:2143
 TGCanvas.cxx:2144
 TGCanvas.cxx:2145
 TGCanvas.cxx:2146
 TGCanvas.cxx:2147
 TGCanvas.cxx:2148
 TGCanvas.cxx:2149
 TGCanvas.cxx:2150
 TGCanvas.cxx:2151
 TGCanvas.cxx:2152
 TGCanvas.cxx:2153
 TGCanvas.cxx:2154
 TGCanvas.cxx:2155
 TGCanvas.cxx:2156
 TGCanvas.cxx:2157
 TGCanvas.cxx:2158
 TGCanvas.cxx:2159
 TGCanvas.cxx:2160
 TGCanvas.cxx:2161
 TGCanvas.cxx:2162
 TGCanvas.cxx:2163
 TGCanvas.cxx:2164
 TGCanvas.cxx:2165
 TGCanvas.cxx:2166
 TGCanvas.cxx:2167
 TGCanvas.cxx:2168
 TGCanvas.cxx:2169
 TGCanvas.cxx:2170
 TGCanvas.cxx:2171
 TGCanvas.cxx:2172
 TGCanvas.cxx:2173
 TGCanvas.cxx:2174
 TGCanvas.cxx:2175
 TGCanvas.cxx:2176
 TGCanvas.cxx:2177
 TGCanvas.cxx:2178
 TGCanvas.cxx:2179
 TGCanvas.cxx:2180
 TGCanvas.cxx:2181
 TGCanvas.cxx:2182
 TGCanvas.cxx:2183
 TGCanvas.cxx:2184
 TGCanvas.cxx:2185
 TGCanvas.cxx:2186
 TGCanvas.cxx:2187
 TGCanvas.cxx:2188
 TGCanvas.cxx:2189
 TGCanvas.cxx:2190
 TGCanvas.cxx:2191
 TGCanvas.cxx:2192
 TGCanvas.cxx:2193
 TGCanvas.cxx:2194
 TGCanvas.cxx:2195
 TGCanvas.cxx:2196
 TGCanvas.cxx:2197
 TGCanvas.cxx:2198
 TGCanvas.cxx:2199
 TGCanvas.cxx:2200
 TGCanvas.cxx:2201
 TGCanvas.cxx:2202
 TGCanvas.cxx:2203
 TGCanvas.cxx:2204
 TGCanvas.cxx:2205
 TGCanvas.cxx:2206
 TGCanvas.cxx:2207
 TGCanvas.cxx:2208
 TGCanvas.cxx:2209
 TGCanvas.cxx:2210
 TGCanvas.cxx:2211
 TGCanvas.cxx:2212
 TGCanvas.cxx:2213
 TGCanvas.cxx:2214
 TGCanvas.cxx:2215
 TGCanvas.cxx:2216
 TGCanvas.cxx:2217
 TGCanvas.cxx:2218
 TGCanvas.cxx:2219
 TGCanvas.cxx:2220
 TGCanvas.cxx:2221
 TGCanvas.cxx:2222
 TGCanvas.cxx:2223
 TGCanvas.cxx:2224
 TGCanvas.cxx:2225
 TGCanvas.cxx:2226
 TGCanvas.cxx:2227
 TGCanvas.cxx:2228
 TGCanvas.cxx:2229
 TGCanvas.cxx:2230
 TGCanvas.cxx:2231
 TGCanvas.cxx:2232
 TGCanvas.cxx:2233
 TGCanvas.cxx:2234
 TGCanvas.cxx:2235
 TGCanvas.cxx:2236
 TGCanvas.cxx:2237
 TGCanvas.cxx:2238
 TGCanvas.cxx:2239
 TGCanvas.cxx:2240
 TGCanvas.cxx:2241
 TGCanvas.cxx:2242
 TGCanvas.cxx:2243
 TGCanvas.cxx:2244
 TGCanvas.cxx:2245
 TGCanvas.cxx:2246
 TGCanvas.cxx:2247
 TGCanvas.cxx:2248
 TGCanvas.cxx:2249
 TGCanvas.cxx:2250
 TGCanvas.cxx:2251
 TGCanvas.cxx:2252
 TGCanvas.cxx:2253
 TGCanvas.cxx:2254
 TGCanvas.cxx:2255
 TGCanvas.cxx:2256
 TGCanvas.cxx:2257
 TGCanvas.cxx:2258
 TGCanvas.cxx:2259
 TGCanvas.cxx:2260
 TGCanvas.cxx:2261
 TGCanvas.cxx:2262
 TGCanvas.cxx:2263
 TGCanvas.cxx:2264
 TGCanvas.cxx:2265
 TGCanvas.cxx:2266
 TGCanvas.cxx:2267
 TGCanvas.cxx:2268
 TGCanvas.cxx:2269
 TGCanvas.cxx:2270
 TGCanvas.cxx:2271
 TGCanvas.cxx:2272
 TGCanvas.cxx:2273
 TGCanvas.cxx:2274
 TGCanvas.cxx:2275
 TGCanvas.cxx:2276
 TGCanvas.cxx:2277
 TGCanvas.cxx:2278
 TGCanvas.cxx:2279
 TGCanvas.cxx:2280
 TGCanvas.cxx:2281
 TGCanvas.cxx:2282
 TGCanvas.cxx:2283
 TGCanvas.cxx:2284
 TGCanvas.cxx:2285
 TGCanvas.cxx:2286
 TGCanvas.cxx:2287
 TGCanvas.cxx:2288
 TGCanvas.cxx:2289
 TGCanvas.cxx:2290
 TGCanvas.cxx:2291
 TGCanvas.cxx:2292
 TGCanvas.cxx:2293
 TGCanvas.cxx:2294
 TGCanvas.cxx:2295
 TGCanvas.cxx:2296
 TGCanvas.cxx:2297
 TGCanvas.cxx:2298
 TGCanvas.cxx:2299
 TGCanvas.cxx:2300
 TGCanvas.cxx:2301
 TGCanvas.cxx:2302
 TGCanvas.cxx:2303
 TGCanvas.cxx:2304
 TGCanvas.cxx:2305
 TGCanvas.cxx:2306
 TGCanvas.cxx:2307
 TGCanvas.cxx:2308
 TGCanvas.cxx:2309
 TGCanvas.cxx:2310
 TGCanvas.cxx:2311
 TGCanvas.cxx:2312
 TGCanvas.cxx:2313
 TGCanvas.cxx:2314
 TGCanvas.cxx:2315
 TGCanvas.cxx:2316
 TGCanvas.cxx:2317
 TGCanvas.cxx:2318
 TGCanvas.cxx:2319
 TGCanvas.cxx:2320
 TGCanvas.cxx:2321
 TGCanvas.cxx:2322
 TGCanvas.cxx:2323
 TGCanvas.cxx:2324
 TGCanvas.cxx:2325
 TGCanvas.cxx:2326
 TGCanvas.cxx:2327
 TGCanvas.cxx:2328
 TGCanvas.cxx:2329
 TGCanvas.cxx:2330
 TGCanvas.cxx:2331
 TGCanvas.cxx:2332
 TGCanvas.cxx:2333
 TGCanvas.cxx:2334
 TGCanvas.cxx:2335
 TGCanvas.cxx:2336
 TGCanvas.cxx:2337
 TGCanvas.cxx:2338
 TGCanvas.cxx:2339
 TGCanvas.cxx:2340
 TGCanvas.cxx:2341
 TGCanvas.cxx:2342
 TGCanvas.cxx:2343
 TGCanvas.cxx:2344
 TGCanvas.cxx:2345
 TGCanvas.cxx:2346
 TGCanvas.cxx:2347
 TGCanvas.cxx:2348
 TGCanvas.cxx:2349
 TGCanvas.cxx:2350
 TGCanvas.cxx:2351
 TGCanvas.cxx:2352
 TGCanvas.cxx:2353
 TGCanvas.cxx:2354
 TGCanvas.cxx:2355
 TGCanvas.cxx:2356
 TGCanvas.cxx:2357
 TGCanvas.cxx:2358
 TGCanvas.cxx:2359
 TGCanvas.cxx:2360
 TGCanvas.cxx:2361
 TGCanvas.cxx:2362
 TGCanvas.cxx:2363
 TGCanvas.cxx:2364
 TGCanvas.cxx:2365
 TGCanvas.cxx:2366
 TGCanvas.cxx:2367
 TGCanvas.cxx:2368
 TGCanvas.cxx:2369
 TGCanvas.cxx:2370
 TGCanvas.cxx:2371
 TGCanvas.cxx:2372
 TGCanvas.cxx:2373
 TGCanvas.cxx:2374
 TGCanvas.cxx:2375
 TGCanvas.cxx:2376
 TGCanvas.cxx:2377
 TGCanvas.cxx:2378
 TGCanvas.cxx:2379
 TGCanvas.cxx:2380
 TGCanvas.cxx:2381
 TGCanvas.cxx:2382
 TGCanvas.cxx:2383
 TGCanvas.cxx:2384
 TGCanvas.cxx:2385
 TGCanvas.cxx:2386
 TGCanvas.cxx:2387
 TGCanvas.cxx:2388
 TGCanvas.cxx:2389
 TGCanvas.cxx:2390
 TGCanvas.cxx:2391
 TGCanvas.cxx:2392
 TGCanvas.cxx:2393
 TGCanvas.cxx:2394
 TGCanvas.cxx:2395
 TGCanvas.cxx:2396
 TGCanvas.cxx:2397
 TGCanvas.cxx:2398
 TGCanvas.cxx:2399
 TGCanvas.cxx:2400
 TGCanvas.cxx:2401
 TGCanvas.cxx:2402
 TGCanvas.cxx:2403
 TGCanvas.cxx:2404
 TGCanvas.cxx:2405
 TGCanvas.cxx:2406
 TGCanvas.cxx:2407
 TGCanvas.cxx:2408
 TGCanvas.cxx:2409
 TGCanvas.cxx:2410
 TGCanvas.cxx:2411
 TGCanvas.cxx:2412
 TGCanvas.cxx:2413
 TGCanvas.cxx:2414
 TGCanvas.cxx:2415
 TGCanvas.cxx:2416
 TGCanvas.cxx:2417
 TGCanvas.cxx:2418
 TGCanvas.cxx:2419
 TGCanvas.cxx:2420
 TGCanvas.cxx:2421
 TGCanvas.cxx:2422
 TGCanvas.cxx:2423
 TGCanvas.cxx:2424
 TGCanvas.cxx:2425
 TGCanvas.cxx:2426
 TGCanvas.cxx:2427
 TGCanvas.cxx:2428
 TGCanvas.cxx:2429
 TGCanvas.cxx:2430
 TGCanvas.cxx:2431
 TGCanvas.cxx:2432
 TGCanvas.cxx:2433
 TGCanvas.cxx:2434
 TGCanvas.cxx:2435
 TGCanvas.cxx:2436
 TGCanvas.cxx:2437
 TGCanvas.cxx:2438
 TGCanvas.cxx:2439
 TGCanvas.cxx:2440
 TGCanvas.cxx:2441
 TGCanvas.cxx:2442
 TGCanvas.cxx:2443
 TGCanvas.cxx:2444
 TGCanvas.cxx:2445
 TGCanvas.cxx:2446
 TGCanvas.cxx:2447
 TGCanvas.cxx:2448
 TGCanvas.cxx:2449
 TGCanvas.cxx:2450
 TGCanvas.cxx:2451
 TGCanvas.cxx:2452
 TGCanvas.cxx:2453
 TGCanvas.cxx:2454
 TGCanvas.cxx:2455
 TGCanvas.cxx:2456
 TGCanvas.cxx:2457
 TGCanvas.cxx:2458
 TGCanvas.cxx:2459
 TGCanvas.cxx:2460
 TGCanvas.cxx:2461
 TGCanvas.cxx:2462
 TGCanvas.cxx:2463
 TGCanvas.cxx:2464
 TGCanvas.cxx:2465
 TGCanvas.cxx:2466
 TGCanvas.cxx:2467
 TGCanvas.cxx:2468
 TGCanvas.cxx:2469
 TGCanvas.cxx:2470
 TGCanvas.cxx:2471
 TGCanvas.cxx:2472
 TGCanvas.cxx:2473
 TGCanvas.cxx:2474
 TGCanvas.cxx:2475
 TGCanvas.cxx:2476
 TGCanvas.cxx:2477
 TGCanvas.cxx:2478
 TGCanvas.cxx:2479
 TGCanvas.cxx:2480
 TGCanvas.cxx:2481
 TGCanvas.cxx:2482
 TGCanvas.cxx:2483
 TGCanvas.cxx:2484
 TGCanvas.cxx:2485
 TGCanvas.cxx:2486
 TGCanvas.cxx:2487
 TGCanvas.cxx:2488
 TGCanvas.cxx:2489
 TGCanvas.cxx:2490
 TGCanvas.cxx:2491
 TGCanvas.cxx:2492
 TGCanvas.cxx:2493
 TGCanvas.cxx:2494
 TGCanvas.cxx:2495
 TGCanvas.cxx:2496
 TGCanvas.cxx:2497
 TGCanvas.cxx:2498
 TGCanvas.cxx:2499
 TGCanvas.cxx:2500
 TGCanvas.cxx:2501
 TGCanvas.cxx:2502
 TGCanvas.cxx:2503
 TGCanvas.cxx:2504
 TGCanvas.cxx:2505
 TGCanvas.cxx:2506
 TGCanvas.cxx:2507
 TGCanvas.cxx:2508
 TGCanvas.cxx:2509
 TGCanvas.cxx:2510
 TGCanvas.cxx:2511
 TGCanvas.cxx:2512
 TGCanvas.cxx:2513
 TGCanvas.cxx:2514
 TGCanvas.cxx:2515
 TGCanvas.cxx:2516
 TGCanvas.cxx:2517
 TGCanvas.cxx:2518
 TGCanvas.cxx:2519
 TGCanvas.cxx:2520
 TGCanvas.cxx:2521
 TGCanvas.cxx:2522
 TGCanvas.cxx:2523
 TGCanvas.cxx:2524