1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
18 #include "AliMUONPainterColorSlider.h"
19 #include "AliMUONPainterHelper.h"
21 #include <TGNumberEntry.h>
25 ///\class AliMUONPainterColorSlider
27 /// A painter color palette
29 ///\author Laurent Aphecetche, Subatech
32 ClassImp(AliMUONPainterColorSlider)
35 //_____________________________________________________________________________
36 AliMUONPainterColorSlider::AliMUONPainterColorSlider(const TGWindow* p,
38 : TGCompositeFrame(p,w,h,kVerticalFrame),
47 Int_t hsize = (h-100)/(ndivisions+2);
53 Double_t step = (max-min)/ndivisions;
55 for ( Int_t i = -1; i <= ndivisions+1; ++i )
57 Double_t value = max - (min + step*i);
59 Int_t color = AliMUONPainterHelper::Instance()->ColorFromValue(value,
61 Pixel_t pixel = gVirtualX->GetPixel(color);
62 TGVerticalFrame* frame = new TGVerticalFrame(this,w,hsize,kFixedSize,pixel);
64 AddFrame(frame,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
69 fEntryMax = new TGNumberEntry(this);
71 AddFrame(fEntryMax,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
73 fEntryMin = new TGNumberEntry(this);
75 AddFrame(fEntryMin,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
77 // fEntryMin->SetFormat(TGNumberFormat::kNESRealOne);
78 // fEntryMax->SetFormat(TGNumberFormat::kNESRealOne);
80 TGTextButton* button = new TGTextButton(this,"Auto");
82 AddFrame(button,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
84 button->Connect("Clicked()","AliMUONPainterColorSlider",this,"DataRangeAutoRequested()");
86 fEntryMax->Connect("ValueSet(Long_t)","AliMUONPainterColorSlider",this,"DataRangeWasChanged(Double_t*)");
87 fEntryMin->Connect("ValueSet(Long_t)","AliMUONPainterColorSlider",this,"DataRangeWasChanged(Double_t*)");
90 //_____________________________________________________________________________
91 AliMUONPainterColorSlider::~AliMUONPainterColorSlider()
96 //_____________________________________________________________________________
98 AliMUONPainterColorSlider::DataRangeAutoRequested()
100 /// Signal that the "Auto" button was clicked
102 Emit("DataRangeAutoRequested()");
105 //_____________________________________________________________________________
107 AliMUONPainterColorSlider::DataRangeWasChanged(Double_t*)
109 /// Data range was changed
111 Double_t values[] = { fEntryMin->GetNumber(), fEntryMax->GetNumber() };
113 Long_t param[] = { (Long_t)values };
115 AliDebug(1,Form("double min %e max %e",values[0],values[1]));
117 Emit("DataRangeWasChanged(Double_t*)",param);
120 //_____________________________________________________________________________
122 AliMUONPainterColorSlider::SetRange(Double_t min, Double_t max, Bool_t emit)
124 /// Set the data range
126 AliDebug(1,Form("min %e max %e emit %d",min,max,emit));
131 fEntryMin->SetNumber(fMin);
132 fEntryMax->SetNumber(fMax);
136 DataRangeWasChanged(0x0);