ROOT logo
// @(#)root/asimage:$Id: TASPaletteEditor.h 20882 2007-11-19 11:31:26Z rdm $
// Author: Reiner Rohlfs 24/03/2002

/*************************************************************************
 * Copyright (C) 1995-2002, Rene Brun, Fons Rademakers and Reiner Rohlfs *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#ifndef ROOT_TASPaletteEditor
#define ROOT_TASPaletteEditor


//////////////////////////////////////////////////////////////////////////
//                                                                      //
//  TASPaletteEditor                                                    //
//                                                                      //
//  This is a GUI window to edit a color palette.                       //
//  It is called by a context menu item of TImage.                      //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TAttImage
#include "TAttImage.h"
#endif
#ifndef ROOT_TGFrame
#include "TGFrame.h"
#endif
#ifndef ROOT_TLine
#include "TLine.h"
#endif


class TVirtualPad;
class TH1D;
class TRootEmbeddedCanvas;
class TGTextButton;
class TGCheckButton;
class TGComboBox;
class TGRadioButton;


class TASPaletteEditor : public TPaletteEditor, public TGMainFrame {

protected:
   class PaintPalette : public TObject {
   protected :
      TImagePalette  **fPalette;
      TAttImage       *fAttImage;
   public:
      PaintPalette(TImagePalette **palette, TAttImage *attImage)
         { fPalette = palette; fAttImage = attImage; }
      void Paint(Option_t *option);
   };

   class LimitLine : public TLine {
   private:
      TASPaletteEditor  *fGui;
   protected:
      virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
   public:
      LimitLine(Coord_t x, Coord_t y1, Coord_t y2, TASPaletteEditor *gui);
      void Paint(Option_t *option);
   };

   Double_t              fMinValue;           // min value of image
   Double_t              fMaxValue;           // max value of image

   TH1D                 *fHisto;              // hitogram of image pixels
   TRootEmbeddedCanvas  *fPaletteCanvas;      // canvas to draw the current palette
   TRootEmbeddedCanvas  *fHistCanvas;         // canvas to draw the histogram
   TList                *fPaletteList;        // list of palettes for undo and redo
   TImagePalette        *fPalette;            // current palette
   TVirtualPad          *fImagePad;
   PaintPalette         *fPaintPalette;
   LimitLine            *fLimitLine[2];

   TGTextButton         *fUnDoButton;
   TGTextButton         *fReDoButton;

   TGCheckButton        *fAutoUpdate;
   TGCheckButton        *fStepButton;
   TGRadioButton        *fRamps[3];
   Int_t                 fRampFactor;

   TGComboBox           *fComboBox;

   void  InsertNewPalette(TImagePalette *newPalette);

   void  Save();
   void  Open();

   void  LogPalette();
   void  ExpPalette();
   void  LinPalette();
   void  InvertPalette();
   void  NewPalette(Long_t id);
   void  SetStep();
   void  SetRamp(Long_t ramp);

   void  UpdateScreen(Bool_t histoUpdate);

public:
   TASPaletteEditor(TAttImage *attImage, UInt_t w, UInt_t h);
   virtual ~TASPaletteEditor();

   Bool_t ProcessMessage(Long_t msg, Long_t param1, Long_t param2);

   void   UpdateRange();
   void   CloseWindow();

   ClassDef(TASPaletteEditor,0)  // GUI to edit a color palette
};

#endif
 TASPaletteEditor.h:1
 TASPaletteEditor.h:2
 TASPaletteEditor.h:3
 TASPaletteEditor.h:4
 TASPaletteEditor.h:5
 TASPaletteEditor.h:6
 TASPaletteEditor.h:7
 TASPaletteEditor.h:8
 TASPaletteEditor.h:9
 TASPaletteEditor.h:10
 TASPaletteEditor.h:11
 TASPaletteEditor.h:12
 TASPaletteEditor.h:13
 TASPaletteEditor.h:14
 TASPaletteEditor.h:15
 TASPaletteEditor.h:16
 TASPaletteEditor.h:17
 TASPaletteEditor.h:18
 TASPaletteEditor.h:19
 TASPaletteEditor.h:20
 TASPaletteEditor.h:21
 TASPaletteEditor.h:22
 TASPaletteEditor.h:23
 TASPaletteEditor.h:24
 TASPaletteEditor.h:25
 TASPaletteEditor.h:26
 TASPaletteEditor.h:27
 TASPaletteEditor.h:28
 TASPaletteEditor.h:29
 TASPaletteEditor.h:30
 TASPaletteEditor.h:31
 TASPaletteEditor.h:32
 TASPaletteEditor.h:33
 TASPaletteEditor.h:34
 TASPaletteEditor.h:35
 TASPaletteEditor.h:36
 TASPaletteEditor.h:37
 TASPaletteEditor.h:38
 TASPaletteEditor.h:39
 TASPaletteEditor.h:40
 TASPaletteEditor.h:41
 TASPaletteEditor.h:42
 TASPaletteEditor.h:43
 TASPaletteEditor.h:44
 TASPaletteEditor.h:45
 TASPaletteEditor.h:46
 TASPaletteEditor.h:47
 TASPaletteEditor.h:48
 TASPaletteEditor.h:49
 TASPaletteEditor.h:50
 TASPaletteEditor.h:51
 TASPaletteEditor.h:52
 TASPaletteEditor.h:53
 TASPaletteEditor.h:54
 TASPaletteEditor.h:55
 TASPaletteEditor.h:56
 TASPaletteEditor.h:57
 TASPaletteEditor.h:58
 TASPaletteEditor.h:59
 TASPaletteEditor.h:60
 TASPaletteEditor.h:61
 TASPaletteEditor.h:62
 TASPaletteEditor.h:63
 TASPaletteEditor.h:64
 TASPaletteEditor.h:65
 TASPaletteEditor.h:66
 TASPaletteEditor.h:67
 TASPaletteEditor.h:68
 TASPaletteEditor.h:69
 TASPaletteEditor.h:70
 TASPaletteEditor.h:71
 TASPaletteEditor.h:72
 TASPaletteEditor.h:73
 TASPaletteEditor.h:74
 TASPaletteEditor.h:75
 TASPaletteEditor.h:76
 TASPaletteEditor.h:77
 TASPaletteEditor.h:78
 TASPaletteEditor.h:79
 TASPaletteEditor.h:80
 TASPaletteEditor.h:81
 TASPaletteEditor.h:82
 TASPaletteEditor.h:83
 TASPaletteEditor.h:84
 TASPaletteEditor.h:85
 TASPaletteEditor.h:86
 TASPaletteEditor.h:87
 TASPaletteEditor.h:88
 TASPaletteEditor.h:89
 TASPaletteEditor.h:90
 TASPaletteEditor.h:91
 TASPaletteEditor.h:92
 TASPaletteEditor.h:93
 TASPaletteEditor.h:94
 TASPaletteEditor.h:95
 TASPaletteEditor.h:96
 TASPaletteEditor.h:97
 TASPaletteEditor.h:98
 TASPaletteEditor.h:99
 TASPaletteEditor.h:100
 TASPaletteEditor.h:101
 TASPaletteEditor.h:102
 TASPaletteEditor.h:103
 TASPaletteEditor.h:104
 TASPaletteEditor.h:105
 TASPaletteEditor.h:106
 TASPaletteEditor.h:107
 TASPaletteEditor.h:108
 TASPaletteEditor.h:109
 TASPaletteEditor.h:110
 TASPaletteEditor.h:111
 TASPaletteEditor.h:112
 TASPaletteEditor.h:113
 TASPaletteEditor.h:114
 TASPaletteEditor.h:115
 TASPaletteEditor.h:116
 TASPaletteEditor.h:117