LCOV - code coverage report
Current view: top level - MUON/MUONgraphics - AliMUONPainterColorSlider.cxx (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 80 1.2 %
Date: 2016-06-14 17:26:59 Functions: 1 17 5.9 %

          Line data    Source code
       1             : /**************************************************************************
       2             : * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       3             : *                                                                        *
       4             : * Author: The ALICE Off-line Project.                                    *
       5             : * Contributors are mentioned in the code where appropriate.              *
       6             : *                                                                        *
       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             : **************************************************************************/
      15             : 
      16             : // $Id$
      17             : 
      18             : #include "AliMUONPainterColorSlider.h"
      19             : #include "AliMUONPainterHelper.h"
      20             : #include "AliLog.h"
      21             : #include <TGNumberEntry.h>
      22             : #include <TGButton.h>
      23             : #include <TMath.h>
      24             : 
      25             : ///\class AliMUONPainterColorSlider
      26             : ///
      27             : /// A painter color palette
      28             : ///
      29             : ///\author Laurent Aphecetche, Subatech
      30             : 
      31             : ///\cond CLASSIMP
      32          12 : ClassImp(AliMUONPainterColorSlider)
      33             : ///\endcond
      34             : 
      35             : //_____________________________________________________________________________
      36             : AliMUONPainterColorSlider::AliMUONPainterColorSlider(const TGWindow* p, 
      37             :                                                      UInt_t w, UInt_t h)
      38           0 : : TGCompositeFrame(p,w,h,kVerticalFrame),
      39           0 :   fEntryMin(0x0),
      40           0 :   fEntryMax(0x0),
      41           0 :   fMin(FLT_MAX),
      42           0 :   fMax(-FLT_MAX),
      43           0 :   fAutoButton(new TGTextButton(this,"Auto")),
      44           0 :   fLockButton(new TGTextButton(this,"Lock")),
      45           0 :   fDefaultButton(new TGTextButton(this,"Back to default")),
      46           0 :   fSetDefaultButton(new TGTextButton(this,"Set as default"))
      47           0 : {
      48             :     /// ctor
      49             :     Int_t ndivisions(20);
      50             :   
      51           0 :     Int_t hsize = (h-100)/(ndivisions+2);
      52             :   Int_t topBorder(5);
      53             :   
      54             :   Double_t min(0.0);
      55             :   Double_t max(1.0);
      56             :   
      57           0 :   Double_t step = (max-min)/ndivisions;
      58             :   
      59           0 :   for ( Int_t i = -1; i < ndivisions+1; ++i ) 
      60             :   {
      61           0 :     Double_t value = max - (min + step*i);
      62             :     
      63           0 :     Int_t color = AliMUONPainterHelper::Instance()->ColorFromValue(value,
      64             :                                                                    min,max);
      65           0 :     Pixel_t pixel = gVirtualX->GetPixel(color);
      66           0 :     TGVerticalFrame* frame = new TGVerticalFrame(this,w,hsize,kFixedSize,pixel);
      67             :     
      68           0 :     AddFrame(frame,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
      69             :     
      70             :     topBorder = 0;
      71             :   }
      72             :   
      73           0 :   fEntryMax = new TGNumberEntry(this);
      74             :   
      75           0 :   AddFrame(fEntryMax,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
      76             :     
      77           0 :   fEntryMin = new TGNumberEntry(this);
      78             :   
      79           0 :   AddFrame(fEntryMin,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
      80             :   
      81           0 :   AddFrame(fAutoButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
      82             :   
      83           0 :   fAutoButton->Connect("Clicked()","AliMUONPainterColorSlider",this,"DataRangeAutoRequested()");
      84             :   
      85           0 :   AddFrame(fLockButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
      86             :   
      87           0 :   fLockButton->Connect("Clicked()","AliMUONPainterColorSlider",this,"LockButtonWasClicked()");
      88             : 
      89           0 :   AddFrame(fDefaultButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
      90             : 
      91           0 :   fDefaultButton->Connect("Clicked()","AliMUONPainterColorSlider",this,"DefaultButtonWasClicked()");
      92             : 
      93           0 :   AddFrame(fSetDefaultButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
      94             : 
      95           0 :   fSetDefaultButton->Connect("Clicked()","AliMUONPainterColorSlider",this,"SetDefaultButtonWasClicked(Double_t*)");
      96             : 
      97           0 :   fEntryMax->Connect("ValueSet(Long_t)","AliMUONPainterColorSlider",this,"DataRangeWasChanged(Double_t*)");
      98           0 :   fEntryMin->Connect("ValueSet(Long_t)","AliMUONPainterColorSlider",this,"DataRangeWasChanged(Double_t*)");
      99           0 : }
     100             : 
     101             : //_____________________________________________________________________________
     102           0 : AliMUONPainterColorSlider::~AliMUONPainterColorSlider()
     103           0 : {
     104             :   /// dtor
     105           0 : }
     106             : 
     107             : //_____________________________________________________________________________
     108             : void 
     109             : AliMUONPainterColorSlider::DataRangeAutoRequested()
     110             : {
     111             :   /// Signal that the "Auto" button was clicked
     112           0 :   Emit("DataRangeAutoRequested()");
     113           0 : }
     114             : 
     115             : //_____________________________________________________________________________
     116             : void 
     117             : AliMUONPainterColorSlider::DataRangeWasChanged(Double_t*)
     118             : {
     119             :   /// Data range was changed
     120             :   
     121           0 :   Double_t values[] = { fEntryMin->GetNumber(), fEntryMax->GetNumber() };
     122             :   
     123           0 :   Long_t param[] = { (Long_t)values };
     124             :   
     125           0 :   Emit("DataRangeWasChanged(Double_t*)",param);
     126           0 : }
     127             : 
     128             : //_____________________________________________________________________________
     129             : void AliMUONPainterColorSlider::DefaultButtonWasClicked()
     130             : {
     131             :   /// Signal that the "Default" button was clicked
     132           0 :   Emit("DefaultButtonWasClicked()");
     133           0 : }
     134             : 
     135             : //_____________________________________________________________________________
     136             : void AliMUONPainterColorSlider::SetDefaultButtonWasClicked(Double_t*)
     137             : {
     138             :   /// Signal that the "SetDefault" button was clicked
     139             :   
     140           0 :   Double_t values[] = { fEntryMin->GetNumber(), fEntryMax->GetNumber() };
     141             :   
     142           0 :   Long_t param[] = { (Long_t)values };
     143             :   
     144           0 :   Emit("SetDefaultButtonWasClicked(Double_t*)",param);
     145           0 : }
     146             : 
     147             : //_____________________________________________________________________________
     148             : Bool_t 
     149             : AliMUONPainterColorSlider::IsLocked() const
     150             : {
     151             :   /// Whether our range is locked or not
     152             : 
     153           0 :   return (fLockButton->GetString() == "Unlock"); // if we can unlock it means we are locked...
     154           0 : }
     155             : 
     156             : //_____________________________________________________________________________
     157             : void AliMUONPainterColorSlider::LockDefaultButtons()
     158             : {
     159           0 :   fDefaultButton->SetEnabled(kFALSE);
     160           0 :   fSetDefaultButton->SetEnabled(kFALSE);
     161           0 : }
     162             : 
     163             : //_____________________________________________________________________________
     164             : void AliMUONPainterColorSlider::UnlockDefaultButtons()
     165             : {
     166           0 :   fDefaultButton->SetEnabled(kTRUE);
     167           0 :   fSetDefaultButton->SetEnabled(kTRUE);
     168           0 : }
     169             : 
     170             : //_____________________________________________________________________________
     171             : void 
     172             : AliMUONPainterColorSlider::LockButtonWasClicked()
     173             : {
     174             :   /// Lock (toggle button) was clicked
     175             :   
     176           0 :   if ( IsLocked() )
     177             :   {
     178             :     // unlock it
     179           0 :     fLockButton->SetText("Lock");
     180           0 :     fEntryMin->SetState(kTRUE);
     181           0 :     fEntryMax->SetState(kTRUE);
     182           0 :     fAutoButton->SetEnabled(kTRUE);
     183           0 :     UnlockDefaultButtons();
     184           0 :   }
     185             :   else
     186             :   {
     187             :     // lock it
     188           0 :     fLockButton->SetText("Unlock");
     189           0 :     fEntryMin->SetState(kFALSE);
     190           0 :     fEntryMax->SetState(kFALSE);
     191           0 :     fAutoButton->SetEnabled(kFALSE);
     192           0 :     LockDefaultButtons();
     193             :   }
     194           0 : }
     195             : 
     196             : //_____________________________________________________________________________
     197             : void 
     198             : AliMUONPainterColorSlider::SetRange(Double_t min, Double_t max, Bool_t emit)
     199             : {
     200             :   /// Set the data range
     201             :   
     202           0 :   if ( !IsLocked() )
     203             :   {
     204           0 :     fMin = min;
     205           0 :     fMax = max;
     206             :   
     207           0 :     fEntryMin->SetNumber(fMin);
     208           0 :     fEntryMax->SetNumber(fMax);
     209           0 :   }
     210             :   
     211           0 :   if ( emit ) 
     212             :   {
     213           0 :     DataRangeWasChanged(0x0);
     214           0 :   }
     215           0 : }
     216             : 

Generated by: LCOV version 1.11