// @(#)root/gui:$Id$
// Author: Fons Rademakers   10/10/2000

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGProgressBar, TGHProgressBar and TGVProgressBar                     //
//                                                                      //
// The classes in this file implement progress bars. Progress bars can  //
// be used to show progress of tasks taking more then a few seconds.    //
// TGProgressBar is an abstract base class, use either TGHProgressBar   //
// or TGVProgressBar. TGHProgressBar can in addition show the position  //
// as text in the bar.                                                  //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGProgressBar.h"
#include "TGResourcePool.h"
#include "Riostream.h"
#include "TColor.h"
#include "TGMsgBox.h"


const TGFont *TGProgressBar::fgDefaultFont = 0;
TGGC         *TGProgressBar::fgDefaultGC = 0;


ClassImp(TGProgressBar)
ClassImp(TGHProgressBar)
ClassImp(TGVProgressBar)

//______________________________________________________________________________
TGProgressBar::TGProgressBar(const TGWindow *p, UInt_t w, UInt_t h,
                             ULong_t back, ULong_t barcolor, GContext_t norm,
                             FontStruct_t font, UInt_t options) :
   TGFrame(p, w, h, options | kOwnBackground, back)
{
   // Create progress bar.

   fMin        = 0;
   fMax        = 100;
   fPos        = 0;
   fPosPix     = 0;
   fFillType   = kSolidFill;
   fBarType    = kStandard;
   fShowPos    = kFALSE;
   fPercent    = kTRUE;
   fNormGC     = norm;
   fFontStruct = font;
   fBarColorGC.SetFillStyle(kFillSolid);
   fBarColorGC.SetForeground(barcolor);
   fBarWidth   = kProgressBarStandardWidth;
   fDrawBar    = kFALSE;
}

//______________________________________________________________________________
void TGProgressBar::SetRange(Float_t min, Float_t max)
{
   // Set min and max of progress bar.

   if (min >= max) {
      Error("SetRange", "max must be > min");
      return;
   }

   Bool_t draw = kFALSE;
   if (fPos > fMin) {
      // already in progress... rescale
      if (fPos < min) fPos = min;
      if (fPos > max) fPos = max;
      draw = kTRUE;
   } else
      fPos = min;

   fMin = min;
   fMax = max;

   if (draw)
      DoRedraw();
}

//______________________________________________________________________________
void TGProgressBar::SetPosition(Float_t pos)
{
   // Set progress position between [min,max].

   if (pos < fMin) pos = fMin;
   if (pos > fMax) pos = fMax;

   if (fPos == pos)
      return;

   fPos = pos;

   //fClient->NeedRedraw(this);
   fDrawBar = kTRUE;
   DoRedraw();
}

//______________________________________________________________________________
void TGProgressBar::Increment(Float_t inc)
{
   // Increment progress position.

   if (fPos == fMax)
      return;

   fPos += inc;
   if (fPos > fMax) fPos = fMax;

   //fClient->NeedRedraw(this);
   fDrawBar = kTRUE;
   DoRedraw();
}

//______________________________________________________________________________
void TGProgressBar::Reset()
{
   // Reset progress bar (i.e. set pos to 0).

   fPos = 0;

   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGProgressBar::SetFillType(EFillType type)
{
   // Set fill type.

   fFillType = type;

   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGProgressBar::SetBarType(EBarType type)
{
   // Set bar type.

   fBarType = type;

   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGProgressBar::SetBarColor(ULong_t color)
{
   // Set progress bar color.

   fBarColorGC.SetForeground(color);

   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGProgressBar::SetBarColor(const char *color)
{
   // Set progress bar color.

   ULong_t ic;
   fClient->GetColorByName(color, ic);
   fBarColorGC.SetForeground(ic);
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGProgressBar::Format(const char *format)
{
   // Set format for displaying a value.

   fFormat = format;

   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
FontStruct_t TGProgressBar::GetDefaultFontStruct()
{
   // Return default font structure in use.

   if (!fgDefaultFont)
      fgDefaultFont = gClient->GetResourcePool()->GetDefaultFont();
   return fgDefaultFont->GetFontStruct();
}

//______________________________________________________________________________
const TGGC &TGProgressBar::GetDefaultGC()
{
   // Return default graphics context in use.

   if (!fgDefaultGC)
      fgDefaultGC = new TGGC(*gClient->GetResourcePool()->GetFrameGC());
   return *fgDefaultGC;
}

//______________________________________________________________________________
void TGProgressBar::SetForegroundColor(Pixel_t pixel)
{
   // Change text color drawing.

   TGGC *gc = gClient->GetResourcePool()->GetGCPool()->FindGC(fNormGC);

   if (!gc) {
      return;
   }
   gc->SetForeground(pixel);
   fNormGC = gc->GetGC();

   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
TGHProgressBar::TGHProgressBar(const TGWindow *p, UInt_t w, UInt_t h,
                              Pixel_t back, Pixel_t barcolor,
                              GContext_t norm, FontStruct_t font, UInt_t options) :
      TGProgressBar(p, w, h, back, barcolor, norm, font, options)
{
   // Horizontal progress bar constructor.

   fBarWidth = h;
   fEditDisabled = kEditDisableHeight;
}

//______________________________________________________________________________
TGHProgressBar::TGHProgressBar(const TGWindow *p, EBarType type, UInt_t w)
   : TGProgressBar(p, w, type == kStandard ? kProgressBarStandardWidth :
                   kProgressBarTextWidth, type == kStandard ? GetDefaultFrameBackground() :
                   fgWhitePixel, fgDefaultSelectedBackground, GetDefaultGC()(),
                   GetDefaultFontStruct(),
                   type == kStandard ? kSunkenFrame : kDoubleBorder | kSunkenFrame)
{
   // Simple constructor allow you to create either a standard progress
   // bar, or a more fancy progress bar (fancy means: double sized border,
   // white background and a bit wider to allow for text to be printed
   // in the bar.

   fBarType  = type;
   fBarWidth = (type == kStandard) ? kProgressBarStandardWidth : kProgressBarTextWidth;
   fEditDisabled = kEditDisableHeight;
}

//______________________________________________________________________________
void TGHProgressBar::ShowPosition(Bool_t set, Bool_t percent, const char *format)
{
   // Show postion text, either in percent or formatted according format.

   fShowPos = set;
   fPercent = percent;
   fFormat  = format;

   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGHProgressBar::DoRedraw()
{
   // Draw horizontal progress bar.

   if (!fDrawBar) {
      // calls TGProgressBar::DrawBorder()
      TGFrame::DoRedraw();
   }

   fPosPix = Int_t(((Float_t)fWidth - (fBorderWidth << 1)) *
             (fPos - fMin) / (fMax - fMin) +
             fBorderWidth);

   Int_t pospix = fPosPix;

   if (fFillType == kSolidFill)
      gVirtualX->FillRectangle(fId, fBarColorGC(), fBorderWidth,
                               fBorderWidth, fPosPix - fBorderWidth, fBarWidth -
                               (fBorderWidth << 1));
   else {
      Int_t blocksize = kBlockSize;
      Int_t delta     = kBlockSpace;
      Int_t pos       = fBorderWidth;
      while (pos < fPosPix) {
         if (pos + blocksize > Int_t(fWidth)-fBorderWidth)
            blocksize = fWidth-fBorderWidth-pos;
         gVirtualX->FillRectangle(fId, fBarColorGC(), pos,
                                  fBorderWidth, blocksize, fBarWidth -
                                  (fBorderWidth << 1));
         if (fDrawBar && fShowPos)
            gVirtualX->ClearArea(fId, pos+blocksize, fBorderWidth,
                                 delta, fBarWidth - (fBorderWidth << 1));

         pos += blocksize + delta;
      }
      pospix = pos - delta;
   }

   if (fShowPos) {
      TString buf;
      if (fPercent)
         buf = TString::Format("%d%%", Int_t((fPos-fMin)/(fMax-fMin)*100.));
      else
         buf = TString::Format(fFormat.Data(), fPos);

      Int_t x, y, max_ascent, max_descent;
      UInt_t twidth  = gVirtualX->TextWidth(fFontStruct, buf.Data(), buf.Length());
      gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
      UInt_t theight = max_ascent + max_descent;

      x = (fWidth - twidth) >> 1;
      y = (fHeight - theight) >> 1;

      if (fDrawBar && fPosPix < Int_t(x+twidth))
         gVirtualX->ClearArea(fId, pospix, fBorderWidth,
                              fWidth - pospix - fBorderWidth,
                              fBarWidth - (fBorderWidth << 1));

      gVirtualX->DrawString(fId, fNormGC, x, y + max_ascent, buf.Data(), buf.Length());
   }

   fDrawBar = kFALSE;
}

//______________________________________________________________________________
TGVProgressBar::TGVProgressBar(const TGWindow *p, UInt_t w, UInt_t h,
                              Pixel_t back, Pixel_t barcolor, GContext_t norm,
                              FontStruct_t font,UInt_t options) :
      TGProgressBar(p, w, h, back, barcolor, norm, font, options)
{
   // cconstructor

   fBarWidth = w;
   fEditDisabled = kEditDisableWidth;
}

//______________________________________________________________________________
TGVProgressBar::TGVProgressBar(const TGWindow *p, EBarType type, UInt_t h)
   : TGProgressBar(p, type == kStandard ? kProgressBarStandardWidth :
                   kProgressBarTextWidth, h, type == kStandard ? GetDefaultFrameBackground() :
                   fgWhitePixel, fgDefaultSelectedBackground, GetDefaultGC()(),
                   GetDefaultFontStruct(),
                   type == kStandard ? kSunkenFrame : kDoubleBorder | kSunkenFrame)
{
   // Simple constructor allow you to create either a standard progress
   // bar, or a more fancy progress bar (fancy means: double sized border,
   // white background and a bit wider to allow for text to be printed
   // in the bar.

   fBarType  = type;
   fBarWidth = (type == kStandard) ? kProgressBarStandardWidth : kProgressBarTextWidth;
   fDrawBar  = kFALSE;
   fEditDisabled = kEditDisableWidth;
}

//______________________________________________________________________________
void TGVProgressBar::DoRedraw()
{
   // Draw vertical progress bar.

   if (!fDrawBar) {
      // calls TGProgressBar::DrawBorder()
      TGFrame::DoRedraw();
   }

   fPosPix = Int_t(((Float_t)fHeight - (fBorderWidth << 1)) *
             (fPos - fMin) / (fMax - fMin) +
             fBorderWidth);

   if (fFillType == kSolidFill)
      gVirtualX->FillRectangle(fId, fBarColorGC(), fBorderWidth,
                               fHeight - fPosPix, fBarWidth - (fBorderWidth << 1),
                               fPosPix - fBorderWidth);
   else {
      Int_t blocksize = kBlockSize;
      Int_t delta     = kBlockSpace;
      Int_t pos       = fBorderWidth;
      while (pos < fPosPix) {
         if (pos + blocksize > Int_t(fHeight)-fBorderWidth)
            blocksize = fHeight-fBorderWidth-pos;
         gVirtualX->FillRectangle(fId, fBarColorGC(), fBorderWidth,
                                  fHeight - pos - blocksize, fBarWidth - (fBorderWidth << 1),
                                  blocksize);
         pos += blocksize + delta;
      }
   }

   if (fShowPos) {
      // not text shown for vertical progress bars
   }

   fDrawBar = kFALSE;
}

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

   const char *barcolor;
   char quote = '"';
   switch (fBarType) {
      case kFancy:
         if (GetOptions() != (kSunkenFrame | kDoubleBorder | kOwnBackground))
            out << "   " << GetName() << "->ChangeOptions(" << GetOptionString()
                << ");" << std::endl;
         if (GetBackground() != GetWhitePixel()) {
            SaveUserColor(out, option);
            out << "   " << GetName() << "->SetBackgroundColor(ucolor);" << std::endl;
         }
         break;

      case kStandard:
         if (GetOptions() != (kSunkenFrame | kOwnBackground))
            out << "   " << GetName() << "->ChangeOptions(" << GetOptionString()
                << ");" << std::endl;
         if (GetBackground() != GetDefaultFrameBackground()) {
            SaveUserColor(out, option);
            out << "   " << GetName() << "->SetBackgroundColor(ucolor);" << std::endl;
         }
         break;
   }

   if (fBarColorGC.GetForeground() != GetDefaultSelectedBackground()) {
      barcolor = TColor::PixelAsHexString(fBarColorGC.GetForeground());
      out << "   " << GetName() <<"->SetBarColor(" << quote << barcolor << quote
          << ");"  << std::endl;
   }

   if (fMin != 0 && fMax != 100)
      out << "   " << GetName() << "->SetRange(" << fMin << "," << fMax << ");" << std::endl;

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

}

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


   out << "   TGVProgressBar *";
   out << GetName() << " = new TGVProgressBar(" << fParent->GetName();

   if ((fBarType == kFancy) && (fBarWidth == kProgressBarTextWidth)) {
      out << ",TGProgressBar::kFancy";
   } else if ((fBarType == kStandard) && (fBarWidth == kProgressBarStandardWidth)){
      out << ",TGProgressBar::kStandard";
   }

   out << "," << GetHeight() <<");" << std::endl;

   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   if (GetFillType() == kBlockFill)
      out << "   " << GetName() <<"->SetFillType(TGProgressBar::kBlockFill);"<< std::endl;

   TGProgressBar::SavePrimitive(out, option);
}

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

   char quote = '"';

   out <<"   TGHProgressBar *";
   out << GetName() <<" = new TGHProgressBar("<< fParent->GetName();

   if ((fBarType == kFancy) && (fBarWidth == kProgressBarTextWidth)) {
      out << ",TGProgressBar::kFancy";
   } else if ((fBarType == kStandard) && (fBarWidth == kProgressBarStandardWidth)){
      out << ",TGProgressBar::kStandard";
   }

   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;

   out << "," << GetWidth() << ");" << std::endl;

   if (GetFillType() == kBlockFill)
      out << "   " << GetName() <<"->SetFillType(TGProgressBar::kBlockFill);"<< std::endl;

   if (GetShowPos()) {
      out << "   " << GetName() <<"->ShowPosition(kTRUE,";
      if (UsePercent()) {
         out << "kTRUE,";
      } else {
         out << "kFALSE,";
      }
      out << quote << GetFormat() << quote << ");"<< std::endl;

   } else if (UsePercent() && !GetFillType()) {
      out << "   " << GetName() <<"->ShowPosition();" << std::endl;
   }
   TGProgressBar::SavePrimitive(out, option);
}
 TGProgressBar.cxx:1
 TGProgressBar.cxx:2
 TGProgressBar.cxx:3
 TGProgressBar.cxx:4
 TGProgressBar.cxx:5
 TGProgressBar.cxx:6
 TGProgressBar.cxx:7
 TGProgressBar.cxx:8
 TGProgressBar.cxx:9
 TGProgressBar.cxx:10
 TGProgressBar.cxx:11
 TGProgressBar.cxx:12
 TGProgressBar.cxx:13
 TGProgressBar.cxx:14
 TGProgressBar.cxx:15
 TGProgressBar.cxx:16
 TGProgressBar.cxx:17
 TGProgressBar.cxx:18
 TGProgressBar.cxx:19
 TGProgressBar.cxx:20
 TGProgressBar.cxx:21
 TGProgressBar.cxx:22
 TGProgressBar.cxx:23
 TGProgressBar.cxx:24
 TGProgressBar.cxx:25
 TGProgressBar.cxx:26
 TGProgressBar.cxx:27
 TGProgressBar.cxx:28
 TGProgressBar.cxx:29
 TGProgressBar.cxx:30
 TGProgressBar.cxx:31
 TGProgressBar.cxx:32
 TGProgressBar.cxx:33
 TGProgressBar.cxx:34
 TGProgressBar.cxx:35
 TGProgressBar.cxx:36
 TGProgressBar.cxx:37
 TGProgressBar.cxx:38
 TGProgressBar.cxx:39
 TGProgressBar.cxx:40
 TGProgressBar.cxx:41
 TGProgressBar.cxx:42
 TGProgressBar.cxx:43
 TGProgressBar.cxx:44
 TGProgressBar.cxx:45
 TGProgressBar.cxx:46
 TGProgressBar.cxx:47
 TGProgressBar.cxx:48
 TGProgressBar.cxx:49
 TGProgressBar.cxx:50
 TGProgressBar.cxx:51
 TGProgressBar.cxx:52
 TGProgressBar.cxx:53
 TGProgressBar.cxx:54
 TGProgressBar.cxx:55
 TGProgressBar.cxx:56
 TGProgressBar.cxx:57
 TGProgressBar.cxx:58
 TGProgressBar.cxx:59
 TGProgressBar.cxx:60
 TGProgressBar.cxx:61
 TGProgressBar.cxx:62
 TGProgressBar.cxx:63
 TGProgressBar.cxx:64
 TGProgressBar.cxx:65
 TGProgressBar.cxx:66
 TGProgressBar.cxx:67
 TGProgressBar.cxx:68
 TGProgressBar.cxx:69
 TGProgressBar.cxx:70
 TGProgressBar.cxx:71
 TGProgressBar.cxx:72
 TGProgressBar.cxx:73
 TGProgressBar.cxx:74
 TGProgressBar.cxx:75
 TGProgressBar.cxx:76
 TGProgressBar.cxx:77
 TGProgressBar.cxx:78
 TGProgressBar.cxx:79
 TGProgressBar.cxx:80
 TGProgressBar.cxx:81
 TGProgressBar.cxx:82
 TGProgressBar.cxx:83
 TGProgressBar.cxx:84
 TGProgressBar.cxx:85
 TGProgressBar.cxx:86
 TGProgressBar.cxx:87
 TGProgressBar.cxx:88
 TGProgressBar.cxx:89
 TGProgressBar.cxx:90
 TGProgressBar.cxx:91
 TGProgressBar.cxx:92
 TGProgressBar.cxx:93
 TGProgressBar.cxx:94
 TGProgressBar.cxx:95
 TGProgressBar.cxx:96
 TGProgressBar.cxx:97
 TGProgressBar.cxx:98
 TGProgressBar.cxx:99
 TGProgressBar.cxx:100
 TGProgressBar.cxx:101
 TGProgressBar.cxx:102
 TGProgressBar.cxx:103
 TGProgressBar.cxx:104
 TGProgressBar.cxx:105
 TGProgressBar.cxx:106
 TGProgressBar.cxx:107
 TGProgressBar.cxx:108
 TGProgressBar.cxx:109
 TGProgressBar.cxx:110
 TGProgressBar.cxx:111
 TGProgressBar.cxx:112
 TGProgressBar.cxx:113
 TGProgressBar.cxx:114
 TGProgressBar.cxx:115
 TGProgressBar.cxx:116
 TGProgressBar.cxx:117
 TGProgressBar.cxx:118
 TGProgressBar.cxx:119
 TGProgressBar.cxx:120
 TGProgressBar.cxx:121
 TGProgressBar.cxx:122
 TGProgressBar.cxx:123
 TGProgressBar.cxx:124
 TGProgressBar.cxx:125
 TGProgressBar.cxx:126
 TGProgressBar.cxx:127
 TGProgressBar.cxx:128
 TGProgressBar.cxx:129
 TGProgressBar.cxx:130
 TGProgressBar.cxx:131
 TGProgressBar.cxx:132
 TGProgressBar.cxx:133
 TGProgressBar.cxx:134
 TGProgressBar.cxx:135
 TGProgressBar.cxx:136
 TGProgressBar.cxx:137
 TGProgressBar.cxx:138
 TGProgressBar.cxx:139
 TGProgressBar.cxx:140
 TGProgressBar.cxx:141
 TGProgressBar.cxx:142
 TGProgressBar.cxx:143
 TGProgressBar.cxx:144
 TGProgressBar.cxx:145
 TGProgressBar.cxx:146
 TGProgressBar.cxx:147
 TGProgressBar.cxx:148
 TGProgressBar.cxx:149
 TGProgressBar.cxx:150
 TGProgressBar.cxx:151
 TGProgressBar.cxx:152
 TGProgressBar.cxx:153
 TGProgressBar.cxx:154
 TGProgressBar.cxx:155
 TGProgressBar.cxx:156
 TGProgressBar.cxx:157
 TGProgressBar.cxx:158
 TGProgressBar.cxx:159
 TGProgressBar.cxx:160
 TGProgressBar.cxx:161
 TGProgressBar.cxx:162
 TGProgressBar.cxx:163
 TGProgressBar.cxx:164
 TGProgressBar.cxx:165
 TGProgressBar.cxx:166
 TGProgressBar.cxx:167
 TGProgressBar.cxx:168
 TGProgressBar.cxx:169
 TGProgressBar.cxx:170
 TGProgressBar.cxx:171
 TGProgressBar.cxx:172
 TGProgressBar.cxx:173
 TGProgressBar.cxx:174
 TGProgressBar.cxx:175
 TGProgressBar.cxx:176
 TGProgressBar.cxx:177
 TGProgressBar.cxx:178
 TGProgressBar.cxx:179
 TGProgressBar.cxx:180
 TGProgressBar.cxx:181
 TGProgressBar.cxx:182
 TGProgressBar.cxx:183
 TGProgressBar.cxx:184
 TGProgressBar.cxx:185
 TGProgressBar.cxx:186
 TGProgressBar.cxx:187
 TGProgressBar.cxx:188
 TGProgressBar.cxx:189
 TGProgressBar.cxx:190
 TGProgressBar.cxx:191
 TGProgressBar.cxx:192
 TGProgressBar.cxx:193
 TGProgressBar.cxx:194
 TGProgressBar.cxx:195
 TGProgressBar.cxx:196
 TGProgressBar.cxx:197
 TGProgressBar.cxx:198
 TGProgressBar.cxx:199
 TGProgressBar.cxx:200
 TGProgressBar.cxx:201
 TGProgressBar.cxx:202
 TGProgressBar.cxx:203
 TGProgressBar.cxx:204
 TGProgressBar.cxx:205
 TGProgressBar.cxx:206
 TGProgressBar.cxx:207
 TGProgressBar.cxx:208
 TGProgressBar.cxx:209
 TGProgressBar.cxx:210
 TGProgressBar.cxx:211
 TGProgressBar.cxx:212
 TGProgressBar.cxx:213
 TGProgressBar.cxx:214
 TGProgressBar.cxx:215
 TGProgressBar.cxx:216
 TGProgressBar.cxx:217
 TGProgressBar.cxx:218
 TGProgressBar.cxx:219
 TGProgressBar.cxx:220
 TGProgressBar.cxx:221
 TGProgressBar.cxx:222
 TGProgressBar.cxx:223
 TGProgressBar.cxx:224
 TGProgressBar.cxx:225
 TGProgressBar.cxx:226
 TGProgressBar.cxx:227
 TGProgressBar.cxx:228
 TGProgressBar.cxx:229
 TGProgressBar.cxx:230
 TGProgressBar.cxx:231
 TGProgressBar.cxx:232
 TGProgressBar.cxx:233
 TGProgressBar.cxx:234
 TGProgressBar.cxx:235
 TGProgressBar.cxx:236
 TGProgressBar.cxx:237
 TGProgressBar.cxx:238
 TGProgressBar.cxx:239
 TGProgressBar.cxx:240
 TGProgressBar.cxx:241
 TGProgressBar.cxx:242
 TGProgressBar.cxx:243
 TGProgressBar.cxx:244
 TGProgressBar.cxx:245
 TGProgressBar.cxx:246
 TGProgressBar.cxx:247
 TGProgressBar.cxx:248
 TGProgressBar.cxx:249
 TGProgressBar.cxx:250
 TGProgressBar.cxx:251
 TGProgressBar.cxx:252
 TGProgressBar.cxx:253
 TGProgressBar.cxx:254
 TGProgressBar.cxx:255
 TGProgressBar.cxx:256
 TGProgressBar.cxx:257
 TGProgressBar.cxx:258
 TGProgressBar.cxx:259
 TGProgressBar.cxx:260
 TGProgressBar.cxx:261
 TGProgressBar.cxx:262
 TGProgressBar.cxx:263
 TGProgressBar.cxx:264
 TGProgressBar.cxx:265
 TGProgressBar.cxx:266
 TGProgressBar.cxx:267
 TGProgressBar.cxx:268
 TGProgressBar.cxx:269
 TGProgressBar.cxx:270
 TGProgressBar.cxx:271
 TGProgressBar.cxx:272
 TGProgressBar.cxx:273
 TGProgressBar.cxx:274
 TGProgressBar.cxx:275
 TGProgressBar.cxx:276
 TGProgressBar.cxx:277
 TGProgressBar.cxx:278
 TGProgressBar.cxx:279
 TGProgressBar.cxx:280
 TGProgressBar.cxx:281
 TGProgressBar.cxx:282
 TGProgressBar.cxx:283
 TGProgressBar.cxx:284
 TGProgressBar.cxx:285
 TGProgressBar.cxx:286
 TGProgressBar.cxx:287
 TGProgressBar.cxx:288
 TGProgressBar.cxx:289
 TGProgressBar.cxx:290
 TGProgressBar.cxx:291
 TGProgressBar.cxx:292
 TGProgressBar.cxx:293
 TGProgressBar.cxx:294
 TGProgressBar.cxx:295
 TGProgressBar.cxx:296
 TGProgressBar.cxx:297
 TGProgressBar.cxx:298
 TGProgressBar.cxx:299
 TGProgressBar.cxx:300
 TGProgressBar.cxx:301
 TGProgressBar.cxx:302
 TGProgressBar.cxx:303
 TGProgressBar.cxx:304
 TGProgressBar.cxx:305
 TGProgressBar.cxx:306
 TGProgressBar.cxx:307
 TGProgressBar.cxx:308
 TGProgressBar.cxx:309
 TGProgressBar.cxx:310
 TGProgressBar.cxx:311
 TGProgressBar.cxx:312
 TGProgressBar.cxx:313
 TGProgressBar.cxx:314
 TGProgressBar.cxx:315
 TGProgressBar.cxx:316
 TGProgressBar.cxx:317
 TGProgressBar.cxx:318
 TGProgressBar.cxx:319
 TGProgressBar.cxx:320
 TGProgressBar.cxx:321
 TGProgressBar.cxx:322
 TGProgressBar.cxx:323
 TGProgressBar.cxx:324
 TGProgressBar.cxx:325
 TGProgressBar.cxx:326
 TGProgressBar.cxx:327
 TGProgressBar.cxx:328
 TGProgressBar.cxx:329
 TGProgressBar.cxx:330
 TGProgressBar.cxx:331
 TGProgressBar.cxx:332
 TGProgressBar.cxx:333
 TGProgressBar.cxx:334
 TGProgressBar.cxx:335
 TGProgressBar.cxx:336
 TGProgressBar.cxx:337
 TGProgressBar.cxx:338
 TGProgressBar.cxx:339
 TGProgressBar.cxx:340
 TGProgressBar.cxx:341
 TGProgressBar.cxx:342
 TGProgressBar.cxx:343
 TGProgressBar.cxx:344
 TGProgressBar.cxx:345
 TGProgressBar.cxx:346
 TGProgressBar.cxx:347
 TGProgressBar.cxx:348
 TGProgressBar.cxx:349
 TGProgressBar.cxx:350
 TGProgressBar.cxx:351
 TGProgressBar.cxx:352
 TGProgressBar.cxx:353
 TGProgressBar.cxx:354
 TGProgressBar.cxx:355
 TGProgressBar.cxx:356
 TGProgressBar.cxx:357
 TGProgressBar.cxx:358
 TGProgressBar.cxx:359
 TGProgressBar.cxx:360
 TGProgressBar.cxx:361
 TGProgressBar.cxx:362
 TGProgressBar.cxx:363
 TGProgressBar.cxx:364
 TGProgressBar.cxx:365
 TGProgressBar.cxx:366
 TGProgressBar.cxx:367
 TGProgressBar.cxx:368
 TGProgressBar.cxx:369
 TGProgressBar.cxx:370
 TGProgressBar.cxx:371
 TGProgressBar.cxx:372
 TGProgressBar.cxx:373
 TGProgressBar.cxx:374
 TGProgressBar.cxx:375
 TGProgressBar.cxx:376
 TGProgressBar.cxx:377
 TGProgressBar.cxx:378
 TGProgressBar.cxx:379
 TGProgressBar.cxx:380
 TGProgressBar.cxx:381
 TGProgressBar.cxx:382
 TGProgressBar.cxx:383
 TGProgressBar.cxx:384
 TGProgressBar.cxx:385
 TGProgressBar.cxx:386
 TGProgressBar.cxx:387
 TGProgressBar.cxx:388
 TGProgressBar.cxx:389
 TGProgressBar.cxx:390
 TGProgressBar.cxx:391
 TGProgressBar.cxx:392
 TGProgressBar.cxx:393
 TGProgressBar.cxx:394
 TGProgressBar.cxx:395
 TGProgressBar.cxx:396
 TGProgressBar.cxx:397
 TGProgressBar.cxx:398
 TGProgressBar.cxx:399
 TGProgressBar.cxx:400
 TGProgressBar.cxx:401
 TGProgressBar.cxx:402
 TGProgressBar.cxx:403
 TGProgressBar.cxx:404
 TGProgressBar.cxx:405
 TGProgressBar.cxx:406
 TGProgressBar.cxx:407
 TGProgressBar.cxx:408
 TGProgressBar.cxx:409
 TGProgressBar.cxx:410
 TGProgressBar.cxx:411
 TGProgressBar.cxx:412
 TGProgressBar.cxx:413
 TGProgressBar.cxx:414
 TGProgressBar.cxx:415
 TGProgressBar.cxx:416
 TGProgressBar.cxx:417
 TGProgressBar.cxx:418
 TGProgressBar.cxx:419
 TGProgressBar.cxx:420
 TGProgressBar.cxx:421
 TGProgressBar.cxx:422
 TGProgressBar.cxx:423
 TGProgressBar.cxx:424
 TGProgressBar.cxx:425
 TGProgressBar.cxx:426
 TGProgressBar.cxx:427
 TGProgressBar.cxx:428
 TGProgressBar.cxx:429
 TGProgressBar.cxx:430
 TGProgressBar.cxx:431
 TGProgressBar.cxx:432
 TGProgressBar.cxx:433
 TGProgressBar.cxx:434
 TGProgressBar.cxx:435
 TGProgressBar.cxx:436
 TGProgressBar.cxx:437
 TGProgressBar.cxx:438
 TGProgressBar.cxx:439
 TGProgressBar.cxx:440
 TGProgressBar.cxx:441
 TGProgressBar.cxx:442
 TGProgressBar.cxx:443
 TGProgressBar.cxx:444
 TGProgressBar.cxx:445
 TGProgressBar.cxx:446
 TGProgressBar.cxx:447
 TGProgressBar.cxx:448
 TGProgressBar.cxx:449
 TGProgressBar.cxx:450
 TGProgressBar.cxx:451
 TGProgressBar.cxx:452
 TGProgressBar.cxx:453
 TGProgressBar.cxx:454
 TGProgressBar.cxx:455
 TGProgressBar.cxx:456
 TGProgressBar.cxx:457
 TGProgressBar.cxx:458
 TGProgressBar.cxx:459
 TGProgressBar.cxx:460
 TGProgressBar.cxx:461
 TGProgressBar.cxx:462
 TGProgressBar.cxx:463
 TGProgressBar.cxx:464
 TGProgressBar.cxx:465
 TGProgressBar.cxx:466
 TGProgressBar.cxx:467
 TGProgressBar.cxx:468
 TGProgressBar.cxx:469
 TGProgressBar.cxx:470
 TGProgressBar.cxx:471
 TGProgressBar.cxx:472
 TGProgressBar.cxx:473
 TGProgressBar.cxx:474
 TGProgressBar.cxx:475
 TGProgressBar.cxx:476
 TGProgressBar.cxx:477
 TGProgressBar.cxx:478
 TGProgressBar.cxx:479
 TGProgressBar.cxx:480
 TGProgressBar.cxx:481
 TGProgressBar.cxx:482
 TGProgressBar.cxx:483
 TGProgressBar.cxx:484
 TGProgressBar.cxx:485
 TGProgressBar.cxx:486
 TGProgressBar.cxx:487
 TGProgressBar.cxx:488
 TGProgressBar.cxx:489
 TGProgressBar.cxx:490
 TGProgressBar.cxx:491
 TGProgressBar.cxx:492
 TGProgressBar.cxx:493
 TGProgressBar.cxx:494
 TGProgressBar.cxx:495
 TGProgressBar.cxx:496
 TGProgressBar.cxx:497
 TGProgressBar.cxx:498
 TGProgressBar.cxx:499
 TGProgressBar.cxx:500
 TGProgressBar.cxx:501
 TGProgressBar.cxx:502