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

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGLabel                                                              //
//                                                                      //
// This class handles GUI labels.                                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGLabel.h"
#include "TGString.h"
#include "TGWidget.h"
#include "TGResourcePool.h"
#include "Riostream.h"
#include "TColor.h"
#include "TClass.h"


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

ClassImp(TGLabel)

//______________________________________________________________________________
TGLabel::TGLabel(const TGWindow *p, TGString *text, GContext_t norm,
                 FontStruct_t font, UInt_t options, ULong_t back) :
    TGFrame(p, 1, 1, options, back)
{
   // Create a label GUI object. TGLabel will become the owner of the
   // text and will delete it in its dtor.

   fText        = text;
   fTMode       = kTextCenterX | kTextCenterY;
   fTextChanged = kTRUE;
   fHasOwnFont  = kFALSE;
   fDisabled    = kFALSE;
   f3DStyle     = 0;
   fWrapLength  = -1;
   fTFlags      = 0;
   fMLeft = fMRight = fMTop = fMBottom = 0;

   if (!norm) {
      norm = GetDefaultGC().GetGC();
   }
   fNormGC = norm;

   if (!font) {
      font = fgDefaultFont->GetFontStruct();
   } 

   fFont = fClient->GetFontPool()->GetFont(font);
   fTLayout = fFont->ComputeTextLayout(fText->GetString(), fText->GetLength(),
                                        fWrapLength, kTextLeft, fTFlags,
                                        &fTWidth, &fTHeight);

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

   Resize();
   SetWindowName();
}

//______________________________________________________________________________
TGLabel::TGLabel(const TGWindow *p, const char *text, GContext_t norm,
                 FontStruct_t font, UInt_t options, ULong_t back) :
    TGFrame(p, 1, 1, options, back)
{
   // Create a label GUI object.

   fText        = new TGString(!text && !p ? GetName() : text);
   fTMode       = kTextCenterX | kTextCenterY;
   fTextChanged = kTRUE;
   fHasOwnFont  = kFALSE;
   fDisabled    = kFALSE;
   f3DStyle     = 0;
   fWrapLength  = -1;
   fTFlags      = 0;
   fMLeft = fMRight = fMTop = fMBottom = 0;

   if (!norm) {
      norm = GetDefaultGC().GetGC();
   }
   fNormGC = norm;

   if (!font) {
      font = fgDefaultFont->GetFontStruct();
   }

   fFont = fClient->GetFontPool()->GetFont(font);
   fTLayout = fFont->ComputeTextLayout(fText->GetString(), fText->GetLength(),
                                       fWrapLength, kTextLeft, fTFlags,
                                       &fTWidth, &fTHeight);

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

   Resize();
   SetWindowName();
}

//______________________________________________________________________________
TGLabel::~TGLabel()
{
   // Delete label.

   if (fText) {
      delete fText;
   }

   if (fHasOwnFont) {
      TGGCPool *pool = fClient->GetGCPool();
      TGGC *gc = pool->FindGC(fNormGC);
      if (gc) pool->FreeGC(gc);
   }

   if (fFont != fgDefaultFont) {
      fClient->GetFontPool()->FreeFont(fFont);
   }

   delete fTLayout;
}

//______________________________________________________________________________
void TGLabel::Layout()
{
   // Layout label.

   delete fTLayout;
   fTLayout = fFont->ComputeTextLayout(fText->GetString(), fText->GetLength(),
                                       fWrapLength, kTextLeft, fTFlags,
                                       &fTWidth, &fTHeight);
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
TGDimension TGLabel::GetDefaultSize() const
{
   // Return default size.

   UInt_t w = GetOptions() & kFixedWidth ? fWidth : fTWidth + fMLeft + fMRight;
   UInt_t h = GetOptions() & kFixedHeight ? fHeight : fTHeight + fMTop + fMBottom + 1;
   return TGDimension(w, h);
}

//______________________________________________________________________________
void TGLabel::SetText(TGString *new_text)
{
   // Set new text in label. After calling this method one needs to call
   // the parents frame's Layout() method to force updating of the label size.
   // The new_text is adopted by the TGLabel and will be properly deleted.

   if (fText) delete fText;
   fText        = new_text;
   fTextChanged = kTRUE;

   Layout();
}

//______________________________________________________________________________
void TGLabel::DrawText(GContext_t gc, Int_t x, Int_t y)
{
   // Draw text at position (x, y).

   fTLayout->DrawText(fId, gc, x, y, 0, -1);
   //fTLayout->UnderlineChar(fId, gc, x, y, fText->GetHotPos());
}

//______________________________________________________________________________
void TGLabel::DoRedraw()
{
   // Redraw label widget.

   int x, y;

   TGFrame::DoRedraw();
   fTextChanged = kFALSE;

   if (fTMode & kTextLeft) {
      x = fMLeft;
   } else if (fTMode & kTextRight) {
      x = fWidth - fTWidth - fMRight;
   } else {
      x = (fWidth - fTWidth + fMLeft - fMRight) >> 1;
   }

   if (fTMode & kTextTop) {
      y = 0;
   } else if (fTMode & kTextBottom) {
      y = fHeight - fTHeight;
   } else {
      y = (fHeight - fTHeight) >> 1;
   }


   if (!fDisabled) {
      TGGCPool *pool = fClient->GetResourcePool()->GetGCPool();
      TGGC *gc = pool->FindGC(fNormGC);

      if (!gc) {
         fNormGC = GetDefaultGC().GetGC();
         gc = pool->FindGC(fNormGC);
      }
      if (!gc) return;

      switch (f3DStyle) {
         case kRaisedFrame:
         case kSunkenFrame:
            {
               Pixel_t forecolor = gc->GetForeground();
               Pixel_t hi = TGFrame::GetWhitePixel();
               Pixel_t sh = forecolor;

               if (f3DStyle == kRaisedFrame) {
                  Pixel_t t = hi;
                  hi = sh; 
                  sh = t;
               }

               gc->SetForeground(hi);
               DrawText(gc->GetGC(), x+1, y+1);
               gc->SetForeground(sh);
               DrawText(gc->GetGC(), x, y);
               gc->SetForeground(forecolor);
            }
            break;

         default:
            DrawText(fNormGC, x, y);
            break;
      }
   } else { // disabled
      FontH_t fontH;

      if (GetDefaultFontStruct() != fFont->GetFontStruct()) {
         fontH = gVirtualX->GetFontHandle(fFont->GetFontStruct());
      } else {
         fontH = gVirtualX->GetFontHandle(GetDefaultFontStruct());
      }
      static TGGC *gc1 = 0;
      static TGGC *gc2 = 0;
 
      if (!gc1) {
         gc1 = fClient->GetResourcePool()->GetGCPool()->FindGC(GetHilightGC()());
         gc1 = new TGGC(*gc1); // copy
      }
      gc1->SetFont(fontH);
      DrawText(gc1->GetGC(), x + 1, y + 1);

      if (!gc2) {
         gc2 = fClient->GetResourcePool()->GetGCPool()->FindGC(GetShadowGC()());
         gc2 = new TGGC(*gc2); // copy
      }
      gc2->SetFont(fontH);
      DrawText(gc2->GetGC(), x, y);
   }
}

//______________________________________________________________________________
void TGLabel::SetTextFont(FontStruct_t fontStruct, Bool_t global)
{
   // Changes text font.
   // If global is true font is changed globally - otherwise locally.

   TGFont *font = fClient->GetFontPool()->GetFont(fontStruct);

   if (!font) {
      //error
      return;
   }

   SetTextFont(font, global);
}

//______________________________________________________________________________
void TGLabel::SetTextFont(const char *fontName, Bool_t global)
{
   // Changes text font specified by name.
   // If global is true font is changed globally - otherwise locally.

   TGFont *font = fClient->GetFont(fontName);

   if (!font) {
      // error
      return;
   }

   SetTextFont(font, global);
}

//______________________________________________________________________________
void TGLabel::SetTextFont(TGFont *font, Bool_t global)
{
   // Changes text font specified by pointer to TGFont object.
   // If global is true font is changed globally - otherwise locally.

   if (!font) {
      //error
      return;
   }

   TGFont *oldfont = fFont;
   fFont = fClient->GetFont(font);  // increase usage count
   if (!fFont) {
      fFont = oldfont;
      return;
   }

   TGGCPool *pool = fClient->GetResourcePool()->GetGCPool();
   TGGC *gc = pool->FindGC(fNormGC);

   if (!global) {
      if (gc == &GetDefaultGC() ) { // create new GC
         gc = pool->GetGC((GCValues_t*)gc->GetAttributes(), kTRUE); // copy ctor.
      }
      fHasOwnFont = kTRUE;
   }
   if (oldfont != fgDefaultFont) {
      fClient->FreeFont(oldfont);
   }
   if (gc) {
      gc->SetFont(fFont->GetFontHandle());
      fNormGC = gc->GetGC();
   }
   fTextChanged = kTRUE;
   Layout();
}

//______________________________________________________________________________
void TGLabel::SetTextColor(Pixel_t color, Bool_t global)
{
   // Changes text color.
   // If global is true color is changed globally - otherwise locally.

   TGGCPool *pool = fClient->GetResourcePool()->GetGCPool();
   TGGC *gc = pool->FindGC(fNormGC);

   if (!global) {
      if (gc == &GetDefaultGC() ) {
         gc = pool->GetGC((GCValues_t*)gc->GetAttributes(), kTRUE); // copy
      }
      fHasOwnFont = kTRUE;
   }
   if (gc) {
      gc->SetForeground(color);
      fNormGC = gc->GetGC();
   }
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGLabel::SetTextColor(TColor *color, Bool_t global)
{
   // Changes text color.
   // If global is true color is changed globally - otherwise locally.

   if (color) {
      SetTextColor(color->GetPixel(), global);
   }
}

//______________________________________________________________________________
void TGLabel::SetTextJustify(Int_t mode)
{
   // Set text justification. Mode is an OR of the bits:
   // kTextTop, kTextBottom, kTextLeft, kTextRight, kTextCenterX and
   // kTextCenterY.

   fTextChanged = kTRUE;
   fTMode = mode;

   SetWindowAttributes_t wattr;
   wattr.fMask = kWAWinGravity | kWABitGravity;
   wattr.fWinGravity = 1;

   switch (mode) {
      case kTextTop | kTextLeft:
         wattr.fBitGravity = 1; //NorthWestGravity
         break;
      case kTextTop | kTextCenterX:
      case kTextTop:
         wattr.fBitGravity = 2; //NorthGravity
         break;
      case kTextTop | kTextRight:
         wattr.fBitGravity = 3; //NorthEastGravity
         break;
      case kTextLeft | kTextCenterY:
      case kTextLeft:
         wattr.fBitGravity = 4; //WestGravity
         break;
      case kTextCenterY | kTextCenterX:
         wattr.fBitGravity = 5; //CenterGravity
         break;
      case kTextRight | kTextCenterY:
      case kTextRight:
         wattr.fBitGravity = 6; //EastGravity
         break;
      case kTextBottom | kTextLeft:
         wattr.fBitGravity = 7; //SouthWestGravity
         break;
      case kTextBottom | kTextCenterX:
      case kTextBottom:
         wattr.fBitGravity = 8; //SouthGravity
         break;
      case kTextBottom | kTextRight:
         wattr.fBitGravity = 9; //SouthEastGravity
         break;
      default:
         wattr.fBitGravity = 5; //CenterGravity
         break;
   }

   gVirtualX->ChangeWindowAttributes(fId, &wattr);

   Layout();
}

//______________________________________________________________________________
Bool_t TGLabel::HasOwnFont() const
{
   // Returns kTRUE if text attributes are unique.
   // Returns kFALSE if text attributes are shared (global).

   return fHasOwnFont;
}

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

   char quote = '"';

   // font + GC
   option = GetName()+5;         // unique digit id of the name
   TString parGC, parFont;
   parFont.Form("%s::GetDefaultFontStruct()",IsA()->GetName());
   parGC.Form("%s::GetDefaultGC()()",IsA()->GetName());

   if ((GetDefaultFontStruct() != fFont->GetFontStruct()) || (GetDefaultGC()() != fNormGC)) {
      TGFont *ufont = fClient->GetResourcePool()->GetFontPool()->FindFont(fFont->GetFontStruct());
      if (ufont) {
         ufont->SavePrimitive(out, option);
         parFont.Form("ufont->GetFontStruct()");
      }

      TGGC *userGC = fClient->GetResourcePool()->GetGCPool()->FindGC(fNormGC);
      if (userGC) {
         userGC->SavePrimitive(out, option);
         parGC.Form("uGC->GetGC()");
      }
   }

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

   TString label = GetText()->GetString();
   label.ReplaceAll("\"","\\\"");
   label.ReplaceAll("\n","\\n");

   out << "   TGLabel *";
   out << GetName() << " = new TGLabel("<< fParent->GetName()
       << "," << quote << label << quote;
   if (fBackground == GetDefaultFrameBackground()) {
      if (!GetOptions()) {
         if (fFont->GetFontStruct() == GetDefaultFontStruct()) {
            if (fNormGC == GetDefaultGC()()) {
               out <<");" << endl;
            } else {
               out << "," << parGC.Data() << ");" << endl;
            }
         } else {
            out << "," << parGC.Data() << "," << parFont.Data() << ");" << endl;
         }
      } else {
         out << "," << parGC.Data() << "," << parFont.Data() << "," << GetOptionString() <<");" << endl;
      }
   } else {
      out << "," << parGC.Data() << "," << parFont.Data() << "," << GetOptionString() << ",ucolor);" << endl;
   }
   if (option && strstr(option, "keep_names"))
      out << "   " << GetName() << "->SetName(\"" << GetName() << "\");" << endl;

   if (fDisabled)
      out << "   " << GetName() << "->Disable();" << endl;

   out << "   " << GetName() << "->SetTextJustify(" <<  GetTextJustify() << ");" << endl;
   out << "   " << GetName() << "->SetMargins(" << fMLeft << "," << fMRight << ",";
   out << fMTop << "," << fMBottom << ");" << endl;
   out << "   " << GetName() << "->SetWrapLength(" << fWrapLength << ");" << endl;

}

//______________________________________________________________________________
FontStruct_t TGLabel::GetDefaultFontStruct()
{
   // Static returning label default font struct.

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

//______________________________________________________________________________
const TGGC &TGLabel::GetDefaultGC()
{
   // Static returning label default graphics context.

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