//------------------------------------------------------------------------------ // gso_Palette class -- // (C) Piero Giubilato 2008-2010, Berkeley Lab -- //------------------------------------------------------------------------------ //______________________________________________________________________________ // {Trace} // [File name] "gso_Palette.h" // [Author] "Piero Giubilato" // [Version] "1.5" // [Modified by] "Piero Giubilato" // [Last revision] "02 Jul 2009" // [Language] "C++" // [Compiler] "Visual C++ 9.x" // [Member of] "Cool SEAL" // [Project] "SEAL" // [Description] "Header for the gso_Palette class" // [Key documentation] // "Visual C++ Reference Help" // "Root reference guide" // {Trace} //______________________________________________________________________________ // Overloading check #if !defined gso_Palette_H #define gso_Palette_H // Standard components #include // Root components #include #include #include #include // Application components #include "gso_Frame.h" // Palette object class gso_Palette: public gso_Frame { private: // Enums static enum k_mouse_Mode {kmm_Out, kmm_None, kmm_Start, kmm_Square, kmm_Drag, kmm_Zoom}; static const UInt_t pal_Size = 256; // The root components Pixmap_t frame_PxMap; // The paletted pixel map // Palette values std::vector color; // User defined colors UInt_t pal_Value[pal_Size]; // Current palette values UInt_t* pal_Std; // Stored palettes value (stacked) std::vector pal_std_Name; // Standard palettes value (stacked) // Graphic Contex for XOR drawing GContext_t xor_gc_Hnd; // The graphic context used to write text into the frame GCValues_t xor_gc_Set; // The graphic context parameters TGFont* xor_Font; // The font used for the xor drawing // Default palettes TGPopupMenu* mnu_Pal; // Palette selection menu std::vector pic_Pal; // Palette images for the menu std::vector pxm_Pal;// Palette pxmaps for the menu // Palette mode UInt_t pal_Mode; // Mouse elements Int_t mouse_curr_X, mouse_start_X, mouse_old_X; Int_t mouse_curr_Y, mouse_start_Y, mouse_old_Y; Int_t mouse_start_B, mouse_old_B; Int_t mouse_curr_Mode, mouse_old_Mode; // Drawing void Create(const UInt_t* col_List, UInt_t col_Count); // Creates a palette range void Draw(); // Creates the palette image void Thumbnail(); // Generates palettes thumbnails protected: void DoRedraw(); // Put the palette image on screen public: // Konstants enum k_Mode {km_Map, km_Plot}; // Default methods gso_Palette(const TGWindow* window, UInt_t width = 1, UInt_t height = 1, UInt_t bvl_Size = 0, Float_t bvl_Thick = 1, UInt_t foreColor = 0x777777, UInt_t backColor = 0); ~gso_Palette(); // Events void Event(Event_t* evn); // gso_Frame overloaded methods void MoveResize(Int_t left, Int_t top, UInt_t width, UInt_t height); void Resize(UInt_t width, UInt_t height); void Resize(TGDimension size) {Resize(size.fWidth, size.fHeight);}; // Palette style methods void palette_Mode(UInt_t mode); UInt_t palette_Mode() const {return pal_Mode;}; // Palette color methods void color_Set(const UInt_t* col_List, UInt_t col_Count); UInt_t color_Count() const {return color.size();}; UInt_t color_Get(UInt_t col_Id) const; // Palette access UInt_t palette_Value(UInt_t col_Id) const; const UInt_t* palette_Front() const; // Slots void mnu_pal_Do(Int_t Idx); // menu palette event // Signals (Mind that here the comment is vital!) virtual void pal_Updated() {Emit("pal_Updated()");} // *SIGNAL* virtual void mouse_Start(Float_t sPos) {Emit("mouse_Start(Float_t)", sPos);} // *SIGNAL* virtual void mouse_Stop(Float_t sPos) {Emit("mouse_Stop(Float_t)", sPos);} // *SIGNAL* virtual void mouse_Shift(Float_t factor) {Emit("mouse_Shift(Float_t)", factor);} // *SIGNAL* virtual void mouse_Scale(Float_t factor) {Emit("mouse_Scale(Float_t)", factor);} // *SIGNAL* virtual void mouse_Right(UInt_t mX, UInt_t mY); // This is internal use, so does not emit any signal // Cint preprocessor token ClassDef(gso_Palette, 1) }; // End of Overloading check #endif