// @(#)root/gui:$Id$
// Author: Bertrand Bellenot   20/01/06

/*************************************************************************
 * 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.

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGTripleVSlider and TGTripleHSlider                                  //
//                                                                      //
// TripleSlider inherit from DoubleSlider widgets and allow easy        //
// selection of a min, max and pointer value out of a range.            //
// The pointer position can be constrained to edges of slider and / or  //
// can be relative to the slider position.                              //
//                                                                      //
// To change the min value press the mouse near to the left / bottom    //
// edge of the slider.                                                  //
// To change the max value press the mouse near to the right / top      //
// edge of the slider.                                                  //
// To change both values simultaneously press the mouse near to the     //
// center of the slider.                                                //
// To change pointer value press the mouse on the pointer and drag it   //
// to the desired position                                              //
//                                                                      //
// Dragging the slider will generate the event:                         //
// kC_VSLIDER, kSL_POS, slider id, 0  (for vertical slider)             //
// kC_HSLIDER, kSL_POS, slider id, 0  (for horizontal slider)           //
//                                                                      //
// Pressing the mouse will generate the event:                          //
// kC_VSLIDER, kSL_PRESS, slider id, 0  (for vertical slider)           //
// kC_HSLIDER, kSL_PRESS, slider id, 0  (for horizontal slider)         //
//                                                                      //
// Releasing the mouse will generate the event:                         //
// kC_VSLIDER, kSL_RELEASE, slider id, 0  (for vertical slider)         //
// kC_HSLIDER, kSL_RELEASE, slider id, 0  (for horizontal slider)       //
//                                                                      //
// Moving the pointer will generate the event:                          //
// kC_VSLIDER, kSL_POINTER, slider id, 0  (for vertical slider)         //
// kC_HSLIDER, kSL_POINTER, slider id, 0  (for horizontal slider)       //
//                                                                      //
// Use the functions GetMinPosition(), GetMaxPosition() and             //
// GetPosition() to retrieve the position of the slider.                //
// Use the function GetPointerPosition() to retrieve the position of    //
// the pointer                                                          //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGDoubleSlider.h"
#include "TGTripleSlider.h"
#include "TGPicture.h"
#include "Riostream.h"
#include "TSystem.h"
#include <stdlib.h>

ClassImp(TGTripleVSlider)
ClassImp(TGTripleHSlider)

//______________________________________________________________________________
TGTripleVSlider::TGTripleVSlider(const TGWindow *p, UInt_t h, UInt_t type, Int_t id,
                                 UInt_t options, ULong_t back,
                                 Bool_t reversed, Bool_t mark_ends,
                                 Bool_t constrained, Bool_t relative)
    : TGDoubleVSlider(p, h, type, id, options, back, reversed, mark_ends)
{
   // Create a vertical slider widget.

   fPointerPic = fClient->GetPicture("slider1h.xpm");
   if (!fPointerPic)
      Error("TGTripleVSlider", "slider1h.xpm not found");
   fConstrained = constrained;
   fRelative = relative;
   fCz = 0;
   fSCz = 0;
   AddInput(kStructureNotifyMask);
   SetWindowName();
}

//______________________________________________________________________________
TGTripleVSlider::~TGTripleVSlider()
{
   // Delete vertical slider widget.

   if (fPointerPic) fClient->FreePicture(fPointerPic);
}

//______________________________________________________________________________
void TGTripleVSlider::DoRedraw()
{
   // Redraw vertical slider widget.

   TGDoubleVSlider::DoRedraw();
   // Draw Pointer
   DrawPointer();
}

//________________________________________________________________________________
void TGTripleVSlider::DrawPointer()
{
   // Draw slider pointer

   if (fPointerPic) fPointerPic->Draw(fId, GetBckgndGC()(), fWidth/2-7, fCz-5);
}

//______________________________________________________________________________
Bool_t TGTripleVSlider::HandleButton(Event_t *event)
{
   // Handle mouse button event in vertical slider.

   if (event->fType == kButtonPress && event->fCode == kButton1) {
      // constrain to the slider width
      if (event->fX < (Int_t)fWidth/2-7 || event->fX > (Int_t)fWidth/2+7) {
         return kTRUE;
      }
      fPressPoint = event->fY;
      fPressSmin  = fSmin;
      fPressSmax  = fSmax;

      int relMin = (int)((fHeight-16) * (fSmin - fVmin) / (fVmax - fVmin)) + 1;
      int relMax = (int)((fHeight-16) * (fSmax - fVmin) / (fVmax - fVmin) + 15);
      if (fPressPoint > (fCz - 5) && fPressPoint < (fCz + 5) &&
          event->fX > ((Int_t)fWidth / 2) - 7 && event->fX < ((Int_t)fWidth / 2) + 5)
         // move pointer
         fMove = 4;
      else if (fPressPoint < (relMax - relMin) / 4 + relMin)
         // move only min value
         fMove = 1;
      else if (fPressPoint > (relMax - relMin) / 4 * 3 + relMin)
         // move only max value
         fMove = 2;
      else
         // move min and max value
         fMove = 3;

      SendMessage(fMsgWindow, MK_MSG(kC_VSLIDER, kSL_PRESS), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_VSLIDER, kSL_PRESS), fWidgetId, 0);
      Pressed();

      // last argument kFALSE forces all specified events to this window
      gVirtualX->GrabPointer(fId, kButtonPressMask | kButtonReleaseMask |
                             kPointerMotionMask, kNone, kNone,
                             kTRUE, kFALSE);
   } else if (event->fType == kButtonRelease && event->fCode == kButton1) {
      SendMessage(fMsgWindow, MK_MSG(kC_VSLIDER, kSL_RELEASE), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_VSLIDER, kSL_RELEASE), fWidgetId, 0);
      Released();
      fMove = 0;
      gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE);  // ungrab pointer
   } else
      fMove = 0;

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTripleVSlider::HandleConfigureNotify(Event_t* event)
{
   // Handles resize events for this widget.

   TGFrame::HandleConfigureNotify(event);
   SetPointerPosition(fSCz);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTripleVSlider::HandleMotion(Event_t *event)
{
   // Handle mouse motion event in vertical slider.

   if (fMove < 3) {
      // if the mouse pointer is on the cursor,
      // and we are not moving anything,
      // set the cursor shape as Pointer
      if (event->fY > (fCz - 5) && event->fY < (fCz + 5) &&
          event->fX > ((Int_t)fWidth / 2) - 7 &&
          event->fX < ((Int_t)fWidth / 2) + 5 &&
          fMove == 0)
         gVirtualX->SetCursor(fId, kNone);
      else
         ChangeCursor(event);
   }
   static int oldDiff = 0;
   static Long64_t was = gSystem->Now();
   Long64_t now = gSystem->Now();

   if (fMove == 0)  return kTRUE;
   if ((now-was) < 50) return kTRUE;
   was = now;

   int     diff;
   Float_t oldMin, oldMax;

   diff    = event->fY - fPressPoint;
   oldMin  = fSmin;
   oldMax  = fSmax;

   if (fMove == 1) {
      // change of min value
      oldDiff = 0;
      fSmin = fPressSmin + diff * (fVmax - fVmin) / (fHeight-16);
      if (fSmin < fVmin) fSmin = fVmin;
      if (fSmin > fSmax) fSmin = fSmax;
   } else if (fMove == 2) {
      // change of max value
      oldDiff = 0;
      fSmax = fPressSmax + diff * (fVmax - fVmin) / (fHeight-16);
      if (fSmax > fVmax) fSmax = fVmax;
      if (fSmax < fSmin) fSmax = fSmin;
   } else if (fMove == 3) {
      // change of min and of max value
      Float_t logicalDiff;
      logicalDiff = diff * (fVmax - fVmin) / (fHeight-16);
      if (fPressSmax + logicalDiff > fVmax)
         logicalDiff = fVmax - fPressSmax;
      if (fPressSmin + logicalDiff < fVmin)
         logicalDiff = fVmin - fPressSmin;
      fSmax = fPressSmax + logicalDiff;
      fSmin = fPressSmin + logicalDiff;
      if (fRelative) {
         if (abs(diff) < 3) oldDiff = diff;
         SetPointerPos(diff - oldDiff, 3);
         oldDiff = diff;
      }
   }
   else if (fMove == 4) {
      // change pointer position
      oldDiff = 0;
      SetPointerPos(event->fY, 1);
   }
   if (fMove != 4){
      SetPointerPos(0, 2);
   }
   // check if position has changed
   if (fMove != 0 && (fSmax != oldMax || fSmin != oldMin)) {
      fClient->NeedRedraw(this);
      SendMessage(fMsgWindow, MK_MSG(kC_VSLIDER, kSL_POS), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_VSLIDER, kSL_POS), fWidgetId, 0);
      PositionChanged();
   }
   return kTRUE;
}

//________________________________________________________________________________
void TGTripleVSlider::SetConstrained(Bool_t on)
{
   // Set pointer position constrained in the slider range.

   fConstrained = on;

   if (fConstrained) {
      if (GetPointerPosition() <= GetMinPosition())
         SetPointerPos((Int_t)GetMinPosition(), 3);
      else if (GetPointerPosition() >= GetMaxPosition())
         SetPointerPos((Int_t)GetMaxPosition(), 3);
   }
}

//________________________________________________________________________________
void TGTripleVSlider::SetPointerPos(Int_t z, Int_t opt)
{
   // Set slider pointer position in pixel value.

   static Long64_t was = gSystem->Now();
   Bool_t lcheck = (opt == 1);
   Int_t oldPos = fCz;

   if (opt < 2) {
      fCz = z;

      if (fCz < 7)
         fCz = 7;
      else if (fCz >= (Int_t)fHeight - 7)
         fCz = (Int_t)fHeight - 7;
   }
   if (opt == 3) {
      lcheck = kTRUE;
      fCz += z;
      if (fCz < 7)
         fCz = 7;
      else if (fCz >= (Int_t)fHeight-7)
         fCz = (Int_t)fHeight - 7;
   }
   if (fConstrained) {
      int relMin = (int)((fHeight-16) * (fSmin - fVmin) / (fVmax - fVmin)) + 1;
      int relMax = (int)((fHeight-16) * (fSmax - fVmin) / (fVmax - fVmin) + 15);
      if(fCz < relMin+7) {
         fCz = relMin+7;
         lcheck = kTRUE;
      }
      if(fCz > relMax-7) {
         fCz = relMax-7;
         lcheck = kTRUE;
      }
   }
   if (lcheck)
      fSCz = fVmin + ((Float_t)(fCz-8) * (fVmax - fVmin) / (Float_t)(fHeight-16));
   if(fSCz < fVmin) fSCz = fVmin;
   if(fSCz > fVmax) fSCz = fVmax;
   if (fConstrained) {
      if(fSCz < fSmin) fSCz = fSmin;
      if(fSCz > fSmax) fSCz = fSmax;
   }

   DrawPointer();
   fClient->NeedRedraw(this);
   if (fCz != oldPos) {
      Long64_t now = gSystem->Now();
      if ((fMove != 4) && ((now-was) < 150)) return;
      was = now;
      SendMessage(fMsgWindow, MK_MSG(kC_VSLIDER, kSL_POINTER), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_VSLIDER, kSL_POINTER), fWidgetId, 0);
      PointerPositionChanged();
      fClient->NeedRedraw(this);
   }
}

//________________________________________________________________________________
void TGTripleVSlider::SetPointerPosition(Float_t pos)
{
   // Set pointer position in scaled (real) value

   if (fReversedScale) {
      fSCz = fVmin + fVmax - pos;
   }
   else {
      fSCz = pos;
   }
   Float_t absPos = (fSCz - fVmin) * (fHeight-16) / (fVmax - fVmin);
   SetPointerPos((int)(absPos+5.0), 0);
}

//______________________________________________________________________________
TGTripleHSlider::TGTripleHSlider(const TGWindow *p, UInt_t w, UInt_t type, Int_t id,
                                 UInt_t options, ULong_t back,
                                 Bool_t reversed, Bool_t mark_ends,
                                 Bool_t constrained, Bool_t relative)
    : TGDoubleHSlider(p, w, type, id, options, back, reversed, mark_ends)
{
   // Create horizontal slider widget.

   fPointerPic = fClient->GetPicture("slider1v.xpm");
   if (!fPointerPic)
      Error("TGTripleVSlider", "slider1v.xpm not found");
   fConstrained = constrained;
   fRelative = relative;
   fCz = 0;
   fSCz = 0;
   AddInput(kStructureNotifyMask);
   SetWindowName();
}

//______________________________________________________________________________
TGTripleHSlider::~TGTripleHSlider()
{
   // Delete a horizontal slider widget.

   if (fPointerPic) fClient->FreePicture(fPointerPic);
}

//______________________________________________________________________________
void TGTripleHSlider::DoRedraw()
{
   // Redraw horizontal slider widget.

   TGDoubleHSlider::DoRedraw();
   // Draw Pointer
   DrawPointer();
}

//________________________________________________________________________________
void TGTripleHSlider::DrawPointer()
{
   // Draw slider pointer

   if (fPointerPic) fPointerPic->Draw(fId, GetBckgndGC()(), fCz-5, fHeight/2-7);
}

//______________________________________________________________________________
Bool_t TGTripleHSlider::HandleButton(Event_t *event)
{
   // Handle mouse button event in horizontal slider widget.

   if (event->fType == kButtonPress && event->fCode == kButton1) {
      // constrain to the slider height
      if (event->fY < (Int_t)fHeight/2-7 || event->fY > (Int_t)fHeight/2+7) {
         return kTRUE;
      }
      fPressPoint = event->fX;
      fPressSmin  = fSmin;
      fPressSmax  = fSmax;

      int relMin = (int)((fWidth-16) * (fSmin - fVmin) / (fVmax - fVmin)) + 1;
      int relMax = (int)((fWidth-16) * (fSmax - fVmin) / (fVmax - fVmin) + 15);
      if (fPressPoint > (fCz - 5) && fPressPoint < (fCz + 5) &&
          event->fY > ((Int_t)fHeight / 2) - 7 && event->fY < ((Int_t)fHeight / 2) + 5)
         // move pointer
         fMove = 4;
      else if (fPressPoint < (relMax - relMin) / 4 + relMin)
         // move only min value
         fMove = 1;
      else if (fPressPoint > (relMax - relMin) / 4 * 3 + relMin)
         // move only max value
         fMove = 2;
      else
         // move min and max value
         fMove = 3;

      SendMessage(fMsgWindow, MK_MSG(kC_HSLIDER, kSL_PRESS), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_HSLIDER, kSL_PRESS), fWidgetId, 0);
      Pressed();

      // last argument kFALSE forces all specified events to this window
      gVirtualX->GrabPointer(fId, kButtonPressMask | kButtonReleaseMask |
                             kPointerMotionMask, kNone, kNone,
                             kTRUE, kFALSE);
   } else if (event->fType == kButtonRelease && event->fCode == kButton1) {
      SendMessage(fMsgWindow, MK_MSG(kC_HSLIDER, kSL_RELEASE), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_HSLIDER, kSL_RELEASE), fWidgetId, 0);
      Released();
      fMove = 0;
      gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE);  // ungrab pointer
   } else
      fMove = 0;

   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTripleHSlider::HandleConfigureNotify(Event_t* event)
{
   // Handles resize events for this widget.

   TGFrame::HandleConfigureNotify(event);
   SetPointerPosition(fSCz);
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TGTripleHSlider::HandleMotion(Event_t *event)
{
   // Handle mouse motion event in horizontal slide widget.

   if (fMove < 3) {
      // if the mouse pointer is on the cursor,
      // and we are not moving anything,
      // set the cursor shape as Pointer
      if (event->fX > (fCz - 5) && event->fX < (fCz + 5) &&
          event->fY > ((Int_t)fHeight / 2) - 7 &&
          event->fY < ((Int_t)fHeight / 2) + 5 &&
          fMove == 0)
         gVirtualX->SetCursor(fId, kNone);
      else
         ChangeCursor(event);
   }
   static int oldDiff = 0;
   static Long64_t was = gSystem->Now();
   Long64_t now = gSystem->Now();

   if (fMove == 0)  return kTRUE;
   if ((now-was) < 50) return kTRUE;
   was = now;

   int     diff;
   Float_t oldMin, oldMax;

   diff    = event->fX - fPressPoint;
   oldMin  = fSmin;
   oldMax  = fSmax;

   if (fMove == 1) {
      // change of min value
      oldDiff = 0;
      fSmin = fPressSmin + diff * (fVmax - fVmin) / (fWidth-16);
      if (fSmin < fVmin) fSmin = fVmin;
      if (fSmin > fSmax) fSmin = fSmax;
   } else if (fMove == 2) {
      // change of max value
      oldDiff = 0;
      fSmax = fPressSmax + diff * (fVmax - fVmin) / (fWidth-16);
      if (fSmax > fVmax) fSmax = fVmax;
      if (fSmax < fSmin) fSmax = fSmin;
   } else if (fMove == 3) {
      // change of min and of max value
      Float_t logicalDiff;
      logicalDiff = diff * (fVmax - fVmin) / (fWidth-16);
      if (fPressSmax + logicalDiff > fVmax)
         logicalDiff = fVmax - fPressSmax;
      if (fPressSmin + logicalDiff < fVmin)
         logicalDiff = fVmin - fPressSmin;
      fSmax = fPressSmax + logicalDiff;
      fSmin = fPressSmin + logicalDiff;
      if (fRelative) {
         if (abs(diff) < 3) oldDiff = diff;
         SetPointerPos(diff - oldDiff, 3);
         oldDiff = diff;
      }
   }
   else if (fMove == 4) {
      // change pointer position
      oldDiff = 0;
      SetPointerPos(event->fX, 1);
   }
   if (fMove != 4) {
      SetPointerPos(0, 2);
   }
   // check if position has changed
   if (fMove != 0 && (fSmax != oldMax || fSmin != oldMin)) {
      fClient->NeedRedraw(this);
      SendMessage(fMsgWindow, MK_MSG(kC_HSLIDER, kSL_POS), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_HSLIDER, kSL_POS), fWidgetId, 0);
      PositionChanged();
   }
   return kTRUE;
}

//________________________________________________________________________________
void TGTripleHSlider::SetConstrained(Bool_t on)
{
   // Set pointer position constrained in the slider range.

   fConstrained = on;

   if (fConstrained) {
      if (GetPointerPosition() <= GetMinPosition())
         SetPointerPos((Int_t)GetMinPosition(), 3);
      else if (GetPointerPosition() >= GetMaxPosition())
         SetPointerPos((Int_t)GetMaxPosition(), 3);
   }
}

//________________________________________________________________________________
void TGTripleHSlider::SetPointerPos(Int_t z, Int_t opt)
{
   // Set slider pointer position in pixel value.

   static Long64_t was = gSystem->Now();
   Bool_t lcheck = (opt == 1);
   Int_t oldPos = fCz;

   if (opt < 2) {
      fCz = z;

      if (fCz < 7)
         fCz = 7;
      else if (fCz >= (Int_t)fWidth-7)
         fCz = (Int_t)fWidth-7;
   }
   if (opt == 3) {
      lcheck = kTRUE;
      fCz += z;
      if (fCz < 7)
         fCz = 7;
      else if (fCz >= (Int_t)fWidth-7)
         fCz = (Int_t)fWidth-7;
   }
   if (fConstrained) {
      int relMin = (int)((fWidth-16) * (fSmin - fVmin) / (fVmax - fVmin)) + 1;
      int relMax = (int)((fWidth-16) * (fSmax - fVmin) / (fVmax - fVmin) + 15);
      if(fCz < relMin+7) {
         fCz = relMin+7;
         lcheck = kTRUE;
      }
      if(fCz > relMax-7) {
         fCz = relMax-7;
         lcheck = kTRUE;
      }
   }
   if (lcheck)
      fSCz = fVmin + ((Float_t)(fCz-8) * (fVmax - fVmin) / (Float_t)(fWidth-16));
   if(fSCz < fVmin) fSCz = fVmin;
   if(fSCz > fVmax) fSCz = fVmax;
   if (fConstrained) {
      if(fSCz < fSmin) fSCz = fSmin;
      if(fSCz > fSmax) fSCz = fSmax;
   }

   DrawPointer();
   fClient->NeedRedraw(this);
   if (fCz != oldPos) {
      Long64_t now = gSystem->Now();
      if ((fMove != 4) && ((now-was) < 150)) return;
      was = now;
      SendMessage(fMsgWindow, MK_MSG(kC_HSLIDER, kSL_POINTER), fWidgetId, 0);
      fClient->ProcessLine(fCommand, MK_MSG(kC_HSLIDER, kSL_POINTER), fWidgetId, 0);
      PointerPositionChanged();
      fClient->NeedRedraw(this);
   }
}

//________________________________________________________________________________
void TGTripleHSlider::SetPointerPosition(Float_t pos)
{
   // Set pointer position in scaled (real) value

   if (fReversedScale) {
      fSCz = fVmin + fVmax - pos;
   }
   else {
      fSCz = pos;
   }
   Float_t absPos = (fSCz - fVmin) * (fWidth-16) / (fVmax - fVmin);
   SetPointerPos((int)(absPos+5.0), 0);
}

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

   SaveUserColor(out, option);

   out <<"   TGTripleHSlider *";
   out << GetName() << " = new TGTripleHSlider(" << fParent->GetName()
       << "," << GetWidth() << ",";
   out << GetSString() << "," << WidgetId() << ",";
   out << GetOptionString() << ",ucolor";
   if (fMarkEnds) {
      if (fReversedScale)
         out << ",kTRUE,kTRUE";
      else
         out << ",kFALSE,kTRUE";
   } else if (fReversedScale) {
      out << ",kTRUE,kFALSE";
   } else {
      out << ",kFALSE,kFALSE";
   }
   if (!fConstrained) {
      if (fRelative)
         out << ",kFALSE,kTRUE);" << std::endl;
      else
         out << ",kFALSE,kFALSE);" << std::endl;
   }
   else if (fRelative) {
      out << ",kTRUE);" << std::endl;
   }
   else {
      out << ");" << std::endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   if (fVmin != 0 || fVmax != (Int_t)fWidth)
      out << "   " << GetName() << "->SetRange(" << fVmin << "," << fVmax
          << ");" << std::endl;

   if (fSmin != fWidth/8*3 || fSmax != fWidth/8*5)
      out << "   " << GetName() << "->SetPosition(" << GetMinPosition()
          << "," << GetMaxPosition() << ");" << std::endl;

   if (fScale != 10)
      out << "   " << GetName() << "->SetScale(" << fScale << ");" << std::endl;

   out << "   " << GetName() << "->SetPointerPosition(" << fSCz << ");" << std::endl;
}

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

   SaveUserColor(out, option);

   out<<"   TGTripleVSlider *";
   out << GetName() << " = new TGTripleVSlider("<< fParent->GetName()
       << "," << GetHeight() << ",";
   out << GetSString() << "," << WidgetId() << ",";
   out << GetOptionString() << ",ucolor";
   if (fMarkEnds) {
      if (fReversedScale)
         out << ",kTRUE,kTRUE";
      else
         out << ",kFALSE,kTRUE";
   } else if (fReversedScale) {
      out << ",kTRUE,kFALSE";
   } else {
      out << ",kFALSE,kFALSE";
   }
   if (!fConstrained) {
      if (fRelative)
         out << ",kFALSE,kTRUE);" << std::endl;
      else
         out << ",kFALSE,kFALSE);" << std::endl;
   }
   else if (fRelative) {
      out << ",kTRUE);" << std::endl;
   }
   else {
      out << ");" << std::endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   if (fVmin != 0 || fVmax != (Int_t)fHeight)
      out << "   " << GetName() <<"->SetRange(" << fVmin << "," << fVmax
          << ");" << std::endl;

   if (fSmin != fHeight/8*3 || fSmax != fHeight/8*5)
      out << "   " << GetName() << "->SetPosition(" << GetMinPosition()
          << "," << GetMaxPosition() << ");" << std::endl;

   if (fScale != 10)
      out << "   " << GetName() << "->SetScale(" << fScale << ");" << std::endl;

   out << "   " << GetName() << "->SetPointerPosition(" << fSCz << ");" << std::endl;
}
 TGTripleSlider.cxx:1
 TGTripleSlider.cxx:2
 TGTripleSlider.cxx:3
 TGTripleSlider.cxx:4
 TGTripleSlider.cxx:5
 TGTripleSlider.cxx:6
 TGTripleSlider.cxx:7
 TGTripleSlider.cxx:8
 TGTripleSlider.cxx:9
 TGTripleSlider.cxx:10
 TGTripleSlider.cxx:11
 TGTripleSlider.cxx:12
 TGTripleSlider.cxx:13
 TGTripleSlider.cxx:14
 TGTripleSlider.cxx:15
 TGTripleSlider.cxx:16
 TGTripleSlider.cxx:17
 TGTripleSlider.cxx:18
 TGTripleSlider.cxx:19
 TGTripleSlider.cxx:20
 TGTripleSlider.cxx:21
 TGTripleSlider.cxx:22
 TGTripleSlider.cxx:23
 TGTripleSlider.cxx:24
 TGTripleSlider.cxx:25
 TGTripleSlider.cxx:26
 TGTripleSlider.cxx:27
 TGTripleSlider.cxx:28
 TGTripleSlider.cxx:29
 TGTripleSlider.cxx:30
 TGTripleSlider.cxx:31
 TGTripleSlider.cxx:32
 TGTripleSlider.cxx:33
 TGTripleSlider.cxx:34
 TGTripleSlider.cxx:35
 TGTripleSlider.cxx:36
 TGTripleSlider.cxx:37
 TGTripleSlider.cxx:38
 TGTripleSlider.cxx:39
 TGTripleSlider.cxx:40
 TGTripleSlider.cxx:41
 TGTripleSlider.cxx:42
 TGTripleSlider.cxx:43
 TGTripleSlider.cxx:44
 TGTripleSlider.cxx:45
 TGTripleSlider.cxx:46
 TGTripleSlider.cxx:47
 TGTripleSlider.cxx:48
 TGTripleSlider.cxx:49
 TGTripleSlider.cxx:50
 TGTripleSlider.cxx:51
 TGTripleSlider.cxx:52
 TGTripleSlider.cxx:53
 TGTripleSlider.cxx:54
 TGTripleSlider.cxx:55
 TGTripleSlider.cxx:56
 TGTripleSlider.cxx:57
 TGTripleSlider.cxx:58
 TGTripleSlider.cxx:59
 TGTripleSlider.cxx:60
 TGTripleSlider.cxx:61
 TGTripleSlider.cxx:62
 TGTripleSlider.cxx:63
 TGTripleSlider.cxx:64
 TGTripleSlider.cxx:65
 TGTripleSlider.cxx:66
 TGTripleSlider.cxx:67
 TGTripleSlider.cxx:68
 TGTripleSlider.cxx:69
 TGTripleSlider.cxx:70
 TGTripleSlider.cxx:71
 TGTripleSlider.cxx:72
 TGTripleSlider.cxx:73
 TGTripleSlider.cxx:74
 TGTripleSlider.cxx:75
 TGTripleSlider.cxx:76
 TGTripleSlider.cxx:77
 TGTripleSlider.cxx:78
 TGTripleSlider.cxx:79
 TGTripleSlider.cxx:80
 TGTripleSlider.cxx:81
 TGTripleSlider.cxx:82
 TGTripleSlider.cxx:83
 TGTripleSlider.cxx:84
 TGTripleSlider.cxx:85
 TGTripleSlider.cxx:86
 TGTripleSlider.cxx:87
 TGTripleSlider.cxx:88
 TGTripleSlider.cxx:89
 TGTripleSlider.cxx:90
 TGTripleSlider.cxx:91
 TGTripleSlider.cxx:92
 TGTripleSlider.cxx:93
 TGTripleSlider.cxx:94
 TGTripleSlider.cxx:95
 TGTripleSlider.cxx:96
 TGTripleSlider.cxx:97
 TGTripleSlider.cxx:98
 TGTripleSlider.cxx:99
 TGTripleSlider.cxx:100
 TGTripleSlider.cxx:101
 TGTripleSlider.cxx:102
 TGTripleSlider.cxx:103
 TGTripleSlider.cxx:104
 TGTripleSlider.cxx:105
 TGTripleSlider.cxx:106
 TGTripleSlider.cxx:107
 TGTripleSlider.cxx:108
 TGTripleSlider.cxx:109
 TGTripleSlider.cxx:110
 TGTripleSlider.cxx:111
 TGTripleSlider.cxx:112
 TGTripleSlider.cxx:113
 TGTripleSlider.cxx:114
 TGTripleSlider.cxx:115
 TGTripleSlider.cxx:116
 TGTripleSlider.cxx:117
 TGTripleSlider.cxx:118
 TGTripleSlider.cxx:119
 TGTripleSlider.cxx:120
 TGTripleSlider.cxx:121
 TGTripleSlider.cxx:122
 TGTripleSlider.cxx:123
 TGTripleSlider.cxx:124
 TGTripleSlider.cxx:125
 TGTripleSlider.cxx:126
 TGTripleSlider.cxx:127
 TGTripleSlider.cxx:128
 TGTripleSlider.cxx:129
 TGTripleSlider.cxx:130
 TGTripleSlider.cxx:131
 TGTripleSlider.cxx:132
 TGTripleSlider.cxx:133
 TGTripleSlider.cxx:134
 TGTripleSlider.cxx:135
 TGTripleSlider.cxx:136
 TGTripleSlider.cxx:137
 TGTripleSlider.cxx:138
 TGTripleSlider.cxx:139
 TGTripleSlider.cxx:140
 TGTripleSlider.cxx:141
 TGTripleSlider.cxx:142
 TGTripleSlider.cxx:143
 TGTripleSlider.cxx:144
 TGTripleSlider.cxx:145
 TGTripleSlider.cxx:146
 TGTripleSlider.cxx:147
 TGTripleSlider.cxx:148
 TGTripleSlider.cxx:149
 TGTripleSlider.cxx:150
 TGTripleSlider.cxx:151
 TGTripleSlider.cxx:152
 TGTripleSlider.cxx:153
 TGTripleSlider.cxx:154
 TGTripleSlider.cxx:155
 TGTripleSlider.cxx:156
 TGTripleSlider.cxx:157
 TGTripleSlider.cxx:158
 TGTripleSlider.cxx:159
 TGTripleSlider.cxx:160
 TGTripleSlider.cxx:161
 TGTripleSlider.cxx:162
 TGTripleSlider.cxx:163
 TGTripleSlider.cxx:164
 TGTripleSlider.cxx:165
 TGTripleSlider.cxx:166
 TGTripleSlider.cxx:167
 TGTripleSlider.cxx:168
 TGTripleSlider.cxx:169
 TGTripleSlider.cxx:170
 TGTripleSlider.cxx:171
 TGTripleSlider.cxx:172
 TGTripleSlider.cxx:173
 TGTripleSlider.cxx:174
 TGTripleSlider.cxx:175
 TGTripleSlider.cxx:176
 TGTripleSlider.cxx:177
 TGTripleSlider.cxx:178
 TGTripleSlider.cxx:179
 TGTripleSlider.cxx:180
 TGTripleSlider.cxx:181
 TGTripleSlider.cxx:182
 TGTripleSlider.cxx:183
 TGTripleSlider.cxx:184
 TGTripleSlider.cxx:185
 TGTripleSlider.cxx:186
 TGTripleSlider.cxx:187
 TGTripleSlider.cxx:188
 TGTripleSlider.cxx:189
 TGTripleSlider.cxx:190
 TGTripleSlider.cxx:191
 TGTripleSlider.cxx:192
 TGTripleSlider.cxx:193
 TGTripleSlider.cxx:194
 TGTripleSlider.cxx:195
 TGTripleSlider.cxx:196
 TGTripleSlider.cxx:197
 TGTripleSlider.cxx:198
 TGTripleSlider.cxx:199
 TGTripleSlider.cxx:200
 TGTripleSlider.cxx:201
 TGTripleSlider.cxx:202
 TGTripleSlider.cxx:203
 TGTripleSlider.cxx:204
 TGTripleSlider.cxx:205
 TGTripleSlider.cxx:206
 TGTripleSlider.cxx:207
 TGTripleSlider.cxx:208
 TGTripleSlider.cxx:209
 TGTripleSlider.cxx:210
 TGTripleSlider.cxx:211
 TGTripleSlider.cxx:212
 TGTripleSlider.cxx:213
 TGTripleSlider.cxx:214
 TGTripleSlider.cxx:215
 TGTripleSlider.cxx:216
 TGTripleSlider.cxx:217
 TGTripleSlider.cxx:218
 TGTripleSlider.cxx:219
 TGTripleSlider.cxx:220
 TGTripleSlider.cxx:221
 TGTripleSlider.cxx:222
 TGTripleSlider.cxx:223
 TGTripleSlider.cxx:224
 TGTripleSlider.cxx:225
 TGTripleSlider.cxx:226
 TGTripleSlider.cxx:227
 TGTripleSlider.cxx:228
 TGTripleSlider.cxx:229
 TGTripleSlider.cxx:230
 TGTripleSlider.cxx:231
 TGTripleSlider.cxx:232
 TGTripleSlider.cxx:233
 TGTripleSlider.cxx:234
 TGTripleSlider.cxx:235
 TGTripleSlider.cxx:236
 TGTripleSlider.cxx:237
 TGTripleSlider.cxx:238
 TGTripleSlider.cxx:239
 TGTripleSlider.cxx:240
 TGTripleSlider.cxx:241
 TGTripleSlider.cxx:242
 TGTripleSlider.cxx:243
 TGTripleSlider.cxx:244
 TGTripleSlider.cxx:245
 TGTripleSlider.cxx:246
 TGTripleSlider.cxx:247
 TGTripleSlider.cxx:248
 TGTripleSlider.cxx:249
 TGTripleSlider.cxx:250
 TGTripleSlider.cxx:251
 TGTripleSlider.cxx:252
 TGTripleSlider.cxx:253
 TGTripleSlider.cxx:254
 TGTripleSlider.cxx:255
 TGTripleSlider.cxx:256
 TGTripleSlider.cxx:257
 TGTripleSlider.cxx:258
 TGTripleSlider.cxx:259
 TGTripleSlider.cxx:260
 TGTripleSlider.cxx:261
 TGTripleSlider.cxx:262
 TGTripleSlider.cxx:263
 TGTripleSlider.cxx:264
 TGTripleSlider.cxx:265
 TGTripleSlider.cxx:266
 TGTripleSlider.cxx:267
 TGTripleSlider.cxx:268
 TGTripleSlider.cxx:269
 TGTripleSlider.cxx:270
 TGTripleSlider.cxx:271
 TGTripleSlider.cxx:272
 TGTripleSlider.cxx:273
 TGTripleSlider.cxx:274
 TGTripleSlider.cxx:275
 TGTripleSlider.cxx:276
 TGTripleSlider.cxx:277
 TGTripleSlider.cxx:278
 TGTripleSlider.cxx:279
 TGTripleSlider.cxx:280
 TGTripleSlider.cxx:281
 TGTripleSlider.cxx:282
 TGTripleSlider.cxx:283
 TGTripleSlider.cxx:284
 TGTripleSlider.cxx:285
 TGTripleSlider.cxx:286
 TGTripleSlider.cxx:287
 TGTripleSlider.cxx:288
 TGTripleSlider.cxx:289
 TGTripleSlider.cxx:290
 TGTripleSlider.cxx:291
 TGTripleSlider.cxx:292
 TGTripleSlider.cxx:293
 TGTripleSlider.cxx:294
 TGTripleSlider.cxx:295
 TGTripleSlider.cxx:296
 TGTripleSlider.cxx:297
 TGTripleSlider.cxx:298
 TGTripleSlider.cxx:299
 TGTripleSlider.cxx:300
 TGTripleSlider.cxx:301
 TGTripleSlider.cxx:302
 TGTripleSlider.cxx:303
 TGTripleSlider.cxx:304
 TGTripleSlider.cxx:305
 TGTripleSlider.cxx:306
 TGTripleSlider.cxx:307
 TGTripleSlider.cxx:308
 TGTripleSlider.cxx:309
 TGTripleSlider.cxx:310
 TGTripleSlider.cxx:311
 TGTripleSlider.cxx:312
 TGTripleSlider.cxx:313
 TGTripleSlider.cxx:314
 TGTripleSlider.cxx:315
 TGTripleSlider.cxx:316
 TGTripleSlider.cxx:317
 TGTripleSlider.cxx:318
 TGTripleSlider.cxx:319
 TGTripleSlider.cxx:320
 TGTripleSlider.cxx:321
 TGTripleSlider.cxx:322
 TGTripleSlider.cxx:323
 TGTripleSlider.cxx:324
 TGTripleSlider.cxx:325
 TGTripleSlider.cxx:326
 TGTripleSlider.cxx:327
 TGTripleSlider.cxx:328
 TGTripleSlider.cxx:329
 TGTripleSlider.cxx:330
 TGTripleSlider.cxx:331
 TGTripleSlider.cxx:332
 TGTripleSlider.cxx:333
 TGTripleSlider.cxx:334
 TGTripleSlider.cxx:335
 TGTripleSlider.cxx:336
 TGTripleSlider.cxx:337
 TGTripleSlider.cxx:338
 TGTripleSlider.cxx:339
 TGTripleSlider.cxx:340
 TGTripleSlider.cxx:341
 TGTripleSlider.cxx:342
 TGTripleSlider.cxx:343
 TGTripleSlider.cxx:344
 TGTripleSlider.cxx:345
 TGTripleSlider.cxx:346
 TGTripleSlider.cxx:347
 TGTripleSlider.cxx:348
 TGTripleSlider.cxx:349
 TGTripleSlider.cxx:350
 TGTripleSlider.cxx:351
 TGTripleSlider.cxx:352
 TGTripleSlider.cxx:353
 TGTripleSlider.cxx:354
 TGTripleSlider.cxx:355
 TGTripleSlider.cxx:356
 TGTripleSlider.cxx:357
 TGTripleSlider.cxx:358
 TGTripleSlider.cxx:359
 TGTripleSlider.cxx:360
 TGTripleSlider.cxx:361
 TGTripleSlider.cxx:362
 TGTripleSlider.cxx:363
 TGTripleSlider.cxx:364
 TGTripleSlider.cxx:365
 TGTripleSlider.cxx:366
 TGTripleSlider.cxx:367
 TGTripleSlider.cxx:368
 TGTripleSlider.cxx:369
 TGTripleSlider.cxx:370
 TGTripleSlider.cxx:371
 TGTripleSlider.cxx:372
 TGTripleSlider.cxx:373
 TGTripleSlider.cxx:374
 TGTripleSlider.cxx:375
 TGTripleSlider.cxx:376
 TGTripleSlider.cxx:377
 TGTripleSlider.cxx:378
 TGTripleSlider.cxx:379
 TGTripleSlider.cxx:380
 TGTripleSlider.cxx:381
 TGTripleSlider.cxx:382
 TGTripleSlider.cxx:383
 TGTripleSlider.cxx:384
 TGTripleSlider.cxx:385
 TGTripleSlider.cxx:386
 TGTripleSlider.cxx:387
 TGTripleSlider.cxx:388
 TGTripleSlider.cxx:389
 TGTripleSlider.cxx:390
 TGTripleSlider.cxx:391
 TGTripleSlider.cxx:392
 TGTripleSlider.cxx:393
 TGTripleSlider.cxx:394
 TGTripleSlider.cxx:395
 TGTripleSlider.cxx:396
 TGTripleSlider.cxx:397
 TGTripleSlider.cxx:398
 TGTripleSlider.cxx:399
 TGTripleSlider.cxx:400
 TGTripleSlider.cxx:401
 TGTripleSlider.cxx:402
 TGTripleSlider.cxx:403
 TGTripleSlider.cxx:404
 TGTripleSlider.cxx:405
 TGTripleSlider.cxx:406
 TGTripleSlider.cxx:407
 TGTripleSlider.cxx:408
 TGTripleSlider.cxx:409
 TGTripleSlider.cxx:410
 TGTripleSlider.cxx:411
 TGTripleSlider.cxx:412
 TGTripleSlider.cxx:413
 TGTripleSlider.cxx:414
 TGTripleSlider.cxx:415
 TGTripleSlider.cxx:416
 TGTripleSlider.cxx:417
 TGTripleSlider.cxx:418
 TGTripleSlider.cxx:419
 TGTripleSlider.cxx:420
 TGTripleSlider.cxx:421
 TGTripleSlider.cxx:422
 TGTripleSlider.cxx:423
 TGTripleSlider.cxx:424
 TGTripleSlider.cxx:425
 TGTripleSlider.cxx:426
 TGTripleSlider.cxx:427
 TGTripleSlider.cxx:428
 TGTripleSlider.cxx:429
 TGTripleSlider.cxx:430
 TGTripleSlider.cxx:431
 TGTripleSlider.cxx:432
 TGTripleSlider.cxx:433
 TGTripleSlider.cxx:434
 TGTripleSlider.cxx:435
 TGTripleSlider.cxx:436
 TGTripleSlider.cxx:437
 TGTripleSlider.cxx:438
 TGTripleSlider.cxx:439
 TGTripleSlider.cxx:440
 TGTripleSlider.cxx:441
 TGTripleSlider.cxx:442
 TGTripleSlider.cxx:443
 TGTripleSlider.cxx:444
 TGTripleSlider.cxx:445
 TGTripleSlider.cxx:446
 TGTripleSlider.cxx:447
 TGTripleSlider.cxx:448
 TGTripleSlider.cxx:449
 TGTripleSlider.cxx:450
 TGTripleSlider.cxx:451
 TGTripleSlider.cxx:452
 TGTripleSlider.cxx:453
 TGTripleSlider.cxx:454
 TGTripleSlider.cxx:455
 TGTripleSlider.cxx:456
 TGTripleSlider.cxx:457
 TGTripleSlider.cxx:458
 TGTripleSlider.cxx:459
 TGTripleSlider.cxx:460
 TGTripleSlider.cxx:461
 TGTripleSlider.cxx:462
 TGTripleSlider.cxx:463
 TGTripleSlider.cxx:464
 TGTripleSlider.cxx:465
 TGTripleSlider.cxx:466
 TGTripleSlider.cxx:467
 TGTripleSlider.cxx:468
 TGTripleSlider.cxx:469
 TGTripleSlider.cxx:470
 TGTripleSlider.cxx:471
 TGTripleSlider.cxx:472
 TGTripleSlider.cxx:473
 TGTripleSlider.cxx:474
 TGTripleSlider.cxx:475
 TGTripleSlider.cxx:476
 TGTripleSlider.cxx:477
 TGTripleSlider.cxx:478
 TGTripleSlider.cxx:479
 TGTripleSlider.cxx:480
 TGTripleSlider.cxx:481
 TGTripleSlider.cxx:482
 TGTripleSlider.cxx:483
 TGTripleSlider.cxx:484
 TGTripleSlider.cxx:485
 TGTripleSlider.cxx:486
 TGTripleSlider.cxx:487
 TGTripleSlider.cxx:488
 TGTripleSlider.cxx:489
 TGTripleSlider.cxx:490
 TGTripleSlider.cxx:491
 TGTripleSlider.cxx:492
 TGTripleSlider.cxx:493
 TGTripleSlider.cxx:494
 TGTripleSlider.cxx:495
 TGTripleSlider.cxx:496
 TGTripleSlider.cxx:497
 TGTripleSlider.cxx:498
 TGTripleSlider.cxx:499
 TGTripleSlider.cxx:500
 TGTripleSlider.cxx:501
 TGTripleSlider.cxx:502
 TGTripleSlider.cxx:503
 TGTripleSlider.cxx:504
 TGTripleSlider.cxx:505
 TGTripleSlider.cxx:506
 TGTripleSlider.cxx:507
 TGTripleSlider.cxx:508
 TGTripleSlider.cxx:509
 TGTripleSlider.cxx:510
 TGTripleSlider.cxx:511
 TGTripleSlider.cxx:512
 TGTripleSlider.cxx:513
 TGTripleSlider.cxx:514
 TGTripleSlider.cxx:515
 TGTripleSlider.cxx:516
 TGTripleSlider.cxx:517
 TGTripleSlider.cxx:518
 TGTripleSlider.cxx:519
 TGTripleSlider.cxx:520
 TGTripleSlider.cxx:521
 TGTripleSlider.cxx:522
 TGTripleSlider.cxx:523
 TGTripleSlider.cxx:524
 TGTripleSlider.cxx:525
 TGTripleSlider.cxx:526
 TGTripleSlider.cxx:527
 TGTripleSlider.cxx:528
 TGTripleSlider.cxx:529
 TGTripleSlider.cxx:530
 TGTripleSlider.cxx:531
 TGTripleSlider.cxx:532
 TGTripleSlider.cxx:533
 TGTripleSlider.cxx:534
 TGTripleSlider.cxx:535
 TGTripleSlider.cxx:536
 TGTripleSlider.cxx:537
 TGTripleSlider.cxx:538
 TGTripleSlider.cxx:539
 TGTripleSlider.cxx:540
 TGTripleSlider.cxx:541
 TGTripleSlider.cxx:542
 TGTripleSlider.cxx:543
 TGTripleSlider.cxx:544
 TGTripleSlider.cxx:545
 TGTripleSlider.cxx:546
 TGTripleSlider.cxx:547
 TGTripleSlider.cxx:548
 TGTripleSlider.cxx:549
 TGTripleSlider.cxx:550
 TGTripleSlider.cxx:551
 TGTripleSlider.cxx:552
 TGTripleSlider.cxx:553
 TGTripleSlider.cxx:554
 TGTripleSlider.cxx:555
 TGTripleSlider.cxx:556
 TGTripleSlider.cxx:557
 TGTripleSlider.cxx:558
 TGTripleSlider.cxx:559
 TGTripleSlider.cxx:560
 TGTripleSlider.cxx:561
 TGTripleSlider.cxx:562
 TGTripleSlider.cxx:563
 TGTripleSlider.cxx:564
 TGTripleSlider.cxx:565
 TGTripleSlider.cxx:566
 TGTripleSlider.cxx:567
 TGTripleSlider.cxx:568
 TGTripleSlider.cxx:569
 TGTripleSlider.cxx:570
 TGTripleSlider.cxx:571
 TGTripleSlider.cxx:572
 TGTripleSlider.cxx:573
 TGTripleSlider.cxx:574
 TGTripleSlider.cxx:575
 TGTripleSlider.cxx:576
 TGTripleSlider.cxx:577
 TGTripleSlider.cxx:578
 TGTripleSlider.cxx:579
 TGTripleSlider.cxx:580
 TGTripleSlider.cxx:581
 TGTripleSlider.cxx:582
 TGTripleSlider.cxx:583
 TGTripleSlider.cxx:584
 TGTripleSlider.cxx:585
 TGTripleSlider.cxx:586
 TGTripleSlider.cxx:587
 TGTripleSlider.cxx:588
 TGTripleSlider.cxx:589
 TGTripleSlider.cxx:590
 TGTripleSlider.cxx:591
 TGTripleSlider.cxx:592
 TGTripleSlider.cxx:593
 TGTripleSlider.cxx:594
 TGTripleSlider.cxx:595
 TGTripleSlider.cxx:596
 TGTripleSlider.cxx:597
 TGTripleSlider.cxx:598
 TGTripleSlider.cxx:599
 TGTripleSlider.cxx:600
 TGTripleSlider.cxx:601
 TGTripleSlider.cxx:602
 TGTripleSlider.cxx:603
 TGTripleSlider.cxx:604
 TGTripleSlider.cxx:605
 TGTripleSlider.cxx:606
 TGTripleSlider.cxx:607
 TGTripleSlider.cxx:608
 TGTripleSlider.cxx:609
 TGTripleSlider.cxx:610
 TGTripleSlider.cxx:611
 TGTripleSlider.cxx:612
 TGTripleSlider.cxx:613
 TGTripleSlider.cxx:614
 TGTripleSlider.cxx:615
 TGTripleSlider.cxx:616
 TGTripleSlider.cxx:617
 TGTripleSlider.cxx:618
 TGTripleSlider.cxx:619
 TGTripleSlider.cxx:620
 TGTripleSlider.cxx:621
 TGTripleSlider.cxx:622
 TGTripleSlider.cxx:623
 TGTripleSlider.cxx:624
 TGTripleSlider.cxx:625
 TGTripleSlider.cxx:626
 TGTripleSlider.cxx:627
 TGTripleSlider.cxx:628
 TGTripleSlider.cxx:629
 TGTripleSlider.cxx:630
 TGTripleSlider.cxx:631
 TGTripleSlider.cxx:632
 TGTripleSlider.cxx:633
 TGTripleSlider.cxx:634
 TGTripleSlider.cxx:635
 TGTripleSlider.cxx:636
 TGTripleSlider.cxx:637
 TGTripleSlider.cxx:638
 TGTripleSlider.cxx:639
 TGTripleSlider.cxx:640
 TGTripleSlider.cxx:641
 TGTripleSlider.cxx:642
 TGTripleSlider.cxx:643
 TGTripleSlider.cxx:644
 TGTripleSlider.cxx:645
 TGTripleSlider.cxx:646
 TGTripleSlider.cxx:647
 TGTripleSlider.cxx:648
 TGTripleSlider.cxx:649
 TGTripleSlider.cxx:650
 TGTripleSlider.cxx:651
 TGTripleSlider.cxx:652
 TGTripleSlider.cxx:653
 TGTripleSlider.cxx:654
 TGTripleSlider.cxx:655
 TGTripleSlider.cxx:656
 TGTripleSlider.cxx:657
 TGTripleSlider.cxx:658
 TGTripleSlider.cxx:659
 TGTripleSlider.cxx:660
 TGTripleSlider.cxx:661
 TGTripleSlider.cxx:662
 TGTripleSlider.cxx:663
 TGTripleSlider.cxx:664
 TGTripleSlider.cxx:665
 TGTripleSlider.cxx:666
 TGTripleSlider.cxx:667
 TGTripleSlider.cxx:668
 TGTripleSlider.cxx:669
 TGTripleSlider.cxx:670
 TGTripleSlider.cxx:671
 TGTripleSlider.cxx:672
 TGTripleSlider.cxx:673
 TGTripleSlider.cxx:674
 TGTripleSlider.cxx:675
 TGTripleSlider.cxx:676
 TGTripleSlider.cxx:677
 TGTripleSlider.cxx:678
 TGTripleSlider.cxx:679
 TGTripleSlider.cxx:680
 TGTripleSlider.cxx:681
 TGTripleSlider.cxx:682
 TGTripleSlider.cxx:683
 TGTripleSlider.cxx:684
 TGTripleSlider.cxx:685
 TGTripleSlider.cxx:686
 TGTripleSlider.cxx:687
 TGTripleSlider.cxx:688
 TGTripleSlider.cxx:689
 TGTripleSlider.cxx:690
 TGTripleSlider.cxx:691
 TGTripleSlider.cxx:692
 TGTripleSlider.cxx:693
 TGTripleSlider.cxx:694
 TGTripleSlider.cxx:695
 TGTripleSlider.cxx:696
 TGTripleSlider.cxx:697
 TGTripleSlider.cxx:698
 TGTripleSlider.cxx:699
 TGTripleSlider.cxx:700
 TGTripleSlider.cxx:701
 TGTripleSlider.cxx:702
 TGTripleSlider.cxx:703
 TGTripleSlider.cxx:704
 TGTripleSlider.cxx:705
 TGTripleSlider.cxx:706
 TGTripleSlider.cxx:707
 TGTripleSlider.cxx:708
 TGTripleSlider.cxx:709
 TGTripleSlider.cxx:710
 TGTripleSlider.cxx:711
 TGTripleSlider.cxx:712
 TGTripleSlider.cxx:713
 TGTripleSlider.cxx:714
 TGTripleSlider.cxx:715
 TGTripleSlider.cxx:716
 TGTripleSlider.cxx:717
 TGTripleSlider.cxx:718
 TGTripleSlider.cxx:719
 TGTripleSlider.cxx:720