ROOT logo
// @(#)root/gui:$Id$
// Author: Bertrand Bellenot + Fons Rademakers   22/08/02

/*************************************************************************
 * Copyright (C) 1995-2002, 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.

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

//////////////////////////////////////////////////////////////////////////
//                                                                      //
// TGColorFrame, TG16ColorSelector, TGColorPopup and TGColorSelect.     //
//                                                                      //
// The TGColorFrame is a small frame with border showing a specific     //
// color.                                                               //
//                                                                      //
// The TG16ColorSelector is a composite frame with 16 TGColorFrames.    //
//                                                                      //
// The TGColorPopup is a popup containing a TG16ColorSelector and a     //
// "More..." button which popups up a TGColorDialog allowing custom     //
// color selection.                                                     //
//                                                                      //
// The TGColorSelect widget is like a checkbutton but instead of the    //
// check mark there is color area with a little down arrow. When        //
// clicked on the arrow the TGColorPopup pops up.                       //
//                                                                      //
// Selecting a color in this widget will generate the event:            //
// kC_COLORSEL, kCOL_SELCHANGED, widget id, pixel.                      //
// and the signal:                                                      //
// ColorSelected(Pixel_t color)                                         //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#include "TGClient.h"
#include "TGMsgBox.h"
#include "TGGC.h"
#include "TGColorSelect.h"
#include "TGColorDialog.h"
#include "TGResourcePool.h"
#include "RConfigure.h"
#include "TG3DLine.h"
#include "TColor.h"
#include "Riostream.h"

ClassImp(TGColorFrame)
ClassImp(TG16ColorSelector)
ClassImp(TGColorPopup)
ClassImp(TGColorSelect)


//________________________________________________________________________________
TGColorFrame::TGColorFrame(const TGWindow *p, ULong_t color, Int_t /*n*/) :
   TGFrame(p, 20, 20, kOwnBackground, color)
{
   // TGColorFrame constructor.
   // The TGColorFrame is a small frame with border showing a specific color.

   SetBackgroundColor(color);

   fPixel = fColor = color;

   AddInput(kButtonPressMask | kButtonReleaseMask);
   fMsgWindow  = p;
   fActive = kFALSE;

   fGrayGC = GetShadowGC()();
   fEditDisabled = kEditDisable;
}

//________________________________________________________________________________
Bool_t TGColorFrame::HandleButton(Event_t *event)
{
   // Handle button events in TGColorFrame.

   if (event->fType == kButtonPress) {
      SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_CLICK), event->fCode, fColor);
   } else {    // kButtonRelease
      SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_SELCHANGED), event->fCode, fColor);
   }

   return kTRUE;
}

//________________________________________________________________________________
void TGColorFrame::DrawBorder()
{
   // Draw TGColorFrame border.

   gVirtualX->DrawRectangle(fId, GetBckgndGC()(), 0, 0, fWidth - 1, fHeight - 1);
   Draw3dRectangle(kDoubleBorder | kSunkenFrame, 1, 1, fWidth - 2, fHeight - 2);
}

//________________________________________________________________________________
TG16ColorSelector::TG16ColorSelector(const TGWindow *p) :
   TGCompositeFrame(p, 10, 10)
{
   // TG16ColorSelector constructor.
   // The TG16ColorSelector is a composite frame with 16 TGColorFrames.

   SetLayoutManager(new TGMatrixLayout(this, 4, 4, 1, 1));

   fCe[0]  = new TGColorFrame(this, TColor::Number2Pixel(0), 0);
   fCe[1]  = new TGColorFrame(this, TColor::Number2Pixel(1), 1);
   fCe[2]  = new TGColorFrame(this, TColor::Number2Pixel(2), 2);
   fCe[3]  = new TGColorFrame(this, TColor::Number2Pixel(3), 3);
   fCe[4]  = new TGColorFrame(this, TColor::Number2Pixel(4), 4);
   fCe[5]  = new TGColorFrame(this, TColor::Number2Pixel(5), 5);
   fCe[6]  = new TGColorFrame(this, TColor::Number2Pixel(6), 6);
   fCe[7]  = new TGColorFrame(this, TColor::Number2Pixel(7), 7);
   fCe[8]  = new TGColorFrame(this, TColor::Number2Pixel(8), 8);
   fCe[9]  = new TGColorFrame(this, TColor::Number2Pixel(9), 9);
   fCe[10] = new TGColorFrame(this, TColor::Number2Pixel(30), 10);
   fCe[11] = new TGColorFrame(this, TColor::Number2Pixel(38), 11);
   fCe[12] = new TGColorFrame(this, TColor::Number2Pixel(41), 12);
   fCe[13] = new TGColorFrame(this, TColor::Number2Pixel(42), 13);
   fCe[14] = new TGColorFrame(this, TColor::Number2Pixel(50), 14);
   fCe[15] = new TGColorFrame(this, TColor::Number2Pixel(51), 15);

   for (Int_t i = 0; i < 16; i++)
      AddFrame(fCe[i], new TGLayoutHints(kLHintsCenterX | kLHintsCenterY));

   fMsgWindow  = p;
   fActive = -1;

   SetEditDisabled(kEditDisable);
}

//________________________________________________________________________________
TG16ColorSelector::~TG16ColorSelector()
{
   // TG16ColorSelector destructor.

   Cleanup();
}

//________________________________________________________________________________
void TG16ColorSelector::SetActive(Int_t newat)
{
   // Set active color frame.

   if (fActive != newat) {
      if ((fActive >= 0) && (fActive < 16)) {
         fCe[fActive]->SetActive(kFALSE);
      }
      fActive = newat;
      if ((fActive >= 0) && (fActive < 16)) {
         fCe[fActive]->SetActive(kTRUE);
      }
   }
}

//________________________________________________________________________________
Bool_t TG16ColorSelector::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
   // Process messages for TG16ColorSelector.

   switch (GET_MSG(msg)) {
      case kC_COLORSEL:
         switch (GET_SUBMSG(msg)) {
            case kCOL_SELCHANGED:
               switch (parm1) {
                  case kButton1:
                     SendMessage(fMsgWindow,
                                 MK_MSG(kC_COLORSEL, kCOL_SELCHANGED),
                                 parm1, parm2);
                     break;
               }
               break;

            case kCOL_CLICK:
               switch (parm1) {
                  case kButton1:
                     SetActive(parm2);
                     break;
               }
               break;
         }
   }

   return kTRUE;
}

//________________________________________________________________________________
TGColorPopup::TGColorPopup(const TGWindow *p, const TGWindow *m, ULong_t color) :
   TGCompositeFrame(p, 10, 10, kDoubleBorder | kRaisedFrame | kOwnBackground,
                    GetDefaultFrameBackground())
{
   // TGColorPopup constructor.
   // The TGColorPopup is a popup containing a TG16ColorSelector and a "More..."
   // button which popups up a TGColorDialog allowing custom color selection.

   fMsgWindow = m;
   fCurrentColor = color;

   SetWindowAttributes_t wattr;

   wattr.fMask = kWAOverrideRedirect;  // | kWASaveUnder ;
   wattr.fOverrideRedirect = kTRUE;
   //wattr.fSaveUnder = kTRUE;
   gVirtualX->ChangeWindowAttributes(fId, &wattr);

   AddInput(kStructureNotifyMask);

   fActive = -1;
   fLaunchDialog = kFALSE;

   TG16ColorSelector *cs = new TG16ColorSelector(this);
   AddFrame(cs, new TGLayoutHints(kLHintsCenterX, 1, 1, 1, 1));
   AddFrame(new TGHorizontal3DLine(this),
            new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 2, 2, 2, 2));
   TGTextButton *other = new TGTextButton(this, "Other...", 102);
   other->SetToolTipText("Popups up Color Selector");
   other->Associate(this);
   AddFrame(other, new TGLayoutHints(kLHintsCenterX | kLHintsExpandX, 2, 2, 2, 2));

   MapSubwindows();

   Resize(cs->GetDefaultWidth() + 6, cs->GetDefaultHeight() +
          other->GetDefaultHeight());
   SetEditDisabled(kEditDisable);
}

//________________________________________________________________________________
TGColorPopup::~TGColorPopup()
{
   // TGColorPopup destructor.

   Cleanup();
}

//________________________________________________________________________________
void TGColorPopup::EndPopup()
{
   // Ungrab pointer and unmap window.

   gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE);  // ungrab pointer
   UnmapWindow();
}

//________________________________________________________________________________
void TGColorPopup::PlacePopup(Int_t x, Int_t y, UInt_t w, UInt_t h)
{
   // Popup TGColorPopup at x,y position

   Int_t rx, ry;
   UInt_t rw, rh;

   // Parent is root window for the popup:
   gVirtualX->GetWindowSize(fParent->GetId(), rx, ry, rw, rh);

   if (x < 0) x = 0;
   if (x + fWidth > rw) x = rw - fWidth;
   if (y < 0) y = 0;
   if (y + fHeight > rh) y = rh - fHeight;

   MoveResize(x, y, w, h);
   MapSubwindows();
   Layout();
   MapRaised();

   gVirtualX->GrabPointer(fId, kButtonPressMask | kButtonReleaseMask |
                          kPointerMotionMask, kNone, 
                          fClient->GetResourcePool()->GetGrabCursor());

   fLaunchDialog = kFALSE;

   gClient->WaitForUnmap(this);
   EndPopup();

   if (fLaunchDialog) {
      Int_t retc;
      ULong_t color = fCurrentColor;
      
      new TGColorDialog(gClient->GetDefaultRoot(), this, &retc, &color);

      if (retc == kMBOk) {
         fCurrentColor = color;
         SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_SELCHANGED),
                     -1, color);
      }
   }
   DeleteWindow();
}

//________________________________________________________________________________
Bool_t TGColorPopup::HandleButton(Event_t *event)
{
   // Handle mouse button events for TGColorPopup.

   if (event->fX < 0 || event->fX >= (Int_t) fWidth ||
       event->fY < 0 || event->fY >= (Int_t) fHeight) {
      if (event->fType == kButtonRelease)
         UnmapWindow();
   } else {
      TGFrame *f = GetFrameFromPoint(event->fX, event->fY);
      if (f && f != this) {
         TranslateCoordinates(f, event->fX, event->fY, event->fX, event->fY);
         f->HandleButton(event);
      }
   }
   return kTRUE;
}

//________________________________________________________________________________
Bool_t TGColorPopup::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
   // Process messages for TGColorPopup.

   switch (GET_MSG(msg)) {
      case kC_COLORSEL:
         switch (GET_SUBMSG(msg)) {
            case kCOL_SELCHANGED:
               SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_SELCHANGED),
                           parm1, parm2);
               UnmapWindow();
               break;

            default:
               break;
         }
         break;

      case kC_COMMAND:
         switch (GET_SUBMSG(msg)) {
            case kCM_BUTTON:
               if (parm1 == 102) {
                  fLaunchDialog = kTRUE;
                  UnmapWindow();
               }
               break;
         }
         break;
   }
   return kTRUE;
}

//________________________________________________________________________________
void TGColorPopup::PreviewColor(Pixel_t color)
{
   // Emit a signal to see preview.
   
   if (fClient->IsEditable()) return;
   
   fCurrentColor = color;
   SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_SELCHANGED), -1, color);     
}

//________________________________________________________________________________
void TGColorPopup::PreviewAlphaColor(ULong_t color)
{
   // Emit a signal to see preview.
   
   if (fClient->IsEditable()) return;

   TColor *tcolor = (TColor *)color;
   fCurrentColor = tcolor->GetPixel();
   SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_SELCHANGED), 0, (ULong_t)tcolor);  
}

//________________________________________________________________________________
TGColorSelect::TGColorSelect(const TGWindow *p, ULong_t color, Int_t id) :
   TGCheckButton(p, "", id)
{
   // TGColorSelect constructor.
   // The TGColorSelect widget is like a checkbutton but instead of the check
   // mark there is color area with a little down arrow.
   // When clicked on the arrow the TGColorPopup pops up.

   if (!p && fClient->IsEditable() && !color) {
      color = TColor::Number2Pixel(6); // magenta
   }

   fColor = color;
   fColorPopup = 0;
   fDrawGC = *fClient->GetResourcePool()->GetFrameGC();

   Enable();
   SetState(kButtonUp);
   AddInput(kButtonPressMask | kButtonReleaseMask);
   SetColor(fColor);

   fEditDisabled = kEditDisable;
}

//________________________________________________________________________________
TGColorSelect::~TGColorSelect()
{
   // TGColorSelect destructor.

   delete fColorPopup;
}

//________________________________________________________________________________
Bool_t TGColorSelect::ProcessMessage(Long_t msg, Long_t parm1, Long_t parm2)
{
   // Process messages for TGColorSelect.

   switch (GET_MSG(msg)) {
      case kC_COLORSEL:
         switch (GET_SUBMSG(msg)) {
            case kCOL_SELCHANGED: 
               {
                  if (parm1 == 0) {
                     SetAlphaColor((ULong_t)parm2);
                     parm1 = (Long_t)fWidgetId;  // parm1 needs to pass the widget Id 
                     SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_SELCHANGED),
                                 parm1, parm2);
                  }
                  else {
                     SetColor(parm2);
                     parm1 = (Long_t)fWidgetId;  // parm1 needs to pass the widget Id 
                     SendMessage(fMsgWindow, MK_MSG(kC_COLORSEL, kCOL_SELCHANGED),
                                 parm1, parm2);
                  }
               }
               break;

            default:
               break;
         }
         break;
   }
   return kTRUE;
}

//________________________________________________________________________________
Bool_t TGColorSelect::HandleButton(Event_t *event)
{
   // Handle button events for TGColorSelect.

   TGFrame::HandleButton(event);
   if (!IsEnabled()) return kTRUE;

   if (event->fCode != kButton1) return kFALSE;

   if ((event->fType == kButtonPress) && HasFocus())
      WantFocus();

   if (event->fType == kButtonPress) {
      fPressPos.fX = fX;
      fPressPos.fY = fY;

      if (fState != kButtonDown) {
         fPrevState = fState;
         SetState(kButtonDown);
      }
   } else {
      if (fState != kButtonUp) {
         SetState(kButtonUp);

         // case when it was dragged during guibuilding
         if ((fPressPos.fX != fX) || (fPressPos.fY != fY)) {
            return kFALSE;
         }
         Window_t wdummy;
         Int_t ax, ay;

         if (!fColorPopup)
            fColorPopup = new TGColorPopup(gClient->GetDefaultRoot(), this, fColor);

         gVirtualX->TranslateCoordinates(fId, gClient->GetDefaultRoot()->GetId(),
                                         0, fHeight, ax, ay, wdummy);

#ifdef R__HAS_COCOA
         gVirtualX->SetWMTransientHint(fColorPopup->GetId(), GetId());
#endif
         fColorPopup->PlacePopup(ax, ay, fColorPopup->GetDefaultWidth(),
                                         fColorPopup->GetDefaultHeight());
         fColorPopup = 0;
      }
   }
   return kTRUE;
}

//______________________________________________________________________________
void TGColorSelect::Enable(Bool_t on)
{
   // Set state of widget as enabled.

   if (on) {
      SetFlags(kWidgetIsEnabled);
   } else {
      ClearFlags(kWidgetIsEnabled);
   }
   fClient->NeedRedraw(this);
}

//______________________________________________________________________________
void TGColorSelect::Disable()
{
   // Set state of widget as disabled.

   ClearFlags(kWidgetIsEnabled);
   fClient->NeedRedraw(this);
}

//________________________________________________________________________________
void TGColorSelect::DoRedraw()
{
   // Redraw TGColorSelect widget.

   Int_t  x, y;
   UInt_t w, h;

   TGButton::DoRedraw();

   if (IsEnabled()) {

      // color rectangle

      x = fBorderWidth + 2;
      y = fBorderWidth + 2;  // 1;
      w = 22;
      h = fHeight - (fBorderWidth * 2) - 4;  // -3;  // 14

      if (fState == kButtonDown) { ++x; ++y; }

#ifdef R__HAS_COCOA
      //Adjustment for Quartz 2D is required:
      //first, I DO not try to fit filled rectangle into outline - this
      //simply DOES NOT work (with retina/non-retina display, for example.
      //First - fill rectable, then draw outline.
      gVirtualX->FillRectangle(fId, fDrawGC(), x + 1, y + 1, w - 1, h - 1);
      gVirtualX->DrawRectangle(fId, GetShadowGC()(), x + 1, y + 1, w - 1, h - 1);
#else
      gVirtualX->DrawRectangle(fId, GetShadowGC()(), x, y, w - 1, h - 1);
      gVirtualX->FillRectangle(fId, fDrawGC(), x + 1, y + 1, w - 2, h - 2);
#endif

      // separator

      x = fWidth - 6 - fBorderWidth - 6;
      y = fBorderWidth + 1;
      h = fHeight - fBorderWidth - 1;  // actually y1

      if (fState == kButtonDown) { ++x; ++y; }

      gVirtualX->DrawLine(fId, GetShadowGC()(),  x, y, x, h - 2);
      gVirtualX->DrawLine(fId, GetHilightGC()(), x + 1, y, x + 1, h - 1);
      gVirtualX->DrawLine(fId, GetHilightGC()(), x, h - 1, x + 1, h - 1);

      // arrow

      x = fWidth - 6 - fBorderWidth - 2;
      y = (fHeight - 4) / 2 + 1;

      if (fState == kButtonDown) { ++x; ++y; }

      DrawTriangle(GetBlackGC()(), x, y);

   } else {

      // sunken rectangle

      x = fBorderWidth + 2;
      y = fBorderWidth + 2;  // 1;
      w = 22;
      h = fHeight - (fBorderWidth * 2) - 4;  // 3;

      Draw3dRectangle(kSunkenFrame, x, y, w, h);

      // separator

      x = fWidth - 6 - fBorderWidth - 6;
      y = fBorderWidth + 1;
      h = fHeight - fBorderWidth - 1;  // actually y1

      gVirtualX->DrawLine(fId, GetShadowGC()(),  x, y, x, h - 2);
      gVirtualX->DrawLine(fId, GetHilightGC()(), x + 1, y, x + 1, h - 1);
      gVirtualX->DrawLine(fId, GetHilightGC()(), x, h - 1, x + 1, h - 1);

      // sunken arrow

      x = fWidth - 6 - fBorderWidth - 2;
      y = (fHeight - 4) / 2 + 1;

      DrawTriangle(GetHilightGC()(), x + 1, y + 1);
      DrawTriangle(GetShadowGC()(), x, y);
   }
}

//________________________________________________________________________________
void TGColorSelect::DrawTriangle(GContext_t gc, Int_t x, Int_t y)
{
   // Draw triangle (arrow) on which user can click to open TGColorPopup.

   Point_t points[3];

#ifdef R__HAS_COCOA
   //When it comes to tiny pixel-precise objects like this,
   //Quartz is not really good: triangle is ugly and wrong.
   //I have to adjust pixels manually.
   points[0].fX = x;
   points[0].fY = y;
   points[1].fX = x + 6;
   points[1].fY = y;
   points[2].fX = x + 3;
   points[2].fY = y + 3;
#else
   points[0].fX = x;
   points[0].fY = y;
   points[1].fX = x + 5;
   points[1].fY = y;
   points[2].fX = x + 2;
   points[2].fY = y + 3;
#endif

   gVirtualX->FillPolygon(fId, gc, points, 3);
}

//________________________________________________________________________________
void TGColorSelect::SetColor(ULong_t color, Bool_t emit)
{
   // Set color.

   fColor = color;
   fDrawGC.SetForeground(color);
   gClient->NeedRedraw(this);
   if (emit)
      ColorSelected(fColor);   // emit a signal
}

//________________________________________________________________________________
void TGColorSelect::SetAlphaColor(ULong_t color, Bool_t emit)
{
   // Set color.
   if (emit) {
      AlphaColorSelected(color); //emit opacity signal
   }
}


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

   char quote = '"';
   static Int_t nn = 1;
   TString cvar = TString::Format("ColPar%d",nn);

   ULong_t color = GetColor();
   const char *colorname = TColor::PixelAsHexString(color);
   gClient->GetColorByName(colorname, color);

   out << std::endl << "   // color select widget" << std::endl;
   out << "   ULong_t " << cvar.Data() << ";" << std::endl;
   out << "   gClient->GetColorByName(" << quote << colorname << quote
       << ", " << cvar.Data() << ");" << std::endl;

   out <<"   TGColorSelect *";
   out << GetName() << " = new TGColorSelect(" << fParent->GetName()
       << ", " << cvar.Data() << ", " << WidgetId() << ");" << std::endl;
   nn++;

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

   if (!IsEnabled()) {
      out << "   " << GetName() << "->Disable();" << std::endl;
   }
   out << std::endl;
}

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