// generated by Fast Light User Interface Designer (fluid) version 1.0300

#ifndef ViewerGUI_h
#define ViewerGUI_h
#include <FL/Fl.H>
#include "Cartesian.h"
#include <vtkRenderer.h>
class Fl_VTK_Window;
class ViewerBase;
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Choice.H>
#include <FL/Fl_Value_Slider.H>

class VTK_EXPORT ViewerGUI : public vtkObject {
public:
  static ViewerGUI* New(void); 
  vtkTypeRevisionMacro(ViewerGUI, vtkObject); 
  ViewerGUI() ;
  Fl_Double_Window *mWindow;
  static Fl_Menu_Item menu_[];
private:
  void cb_Open_i(Fl_Menu_*, void*);
  static void cb_Open(Fl_Menu_*, void*);
  void cb_Save_i(Fl_Menu_*, void*);
  static void cb_Save(Fl_Menu_*, void*);
  void cb_Quit_i(Fl_Menu_*, void*);
  static void cb_Quit(Fl_Menu_*, void*);
  void cb_About_i(Fl_Menu_*, void*);
  static void cb_About(Fl_Menu_*, void*);
public:
  Ca_Canvas *graphCanvas;
  Ca_Y_Axis *yAxis;
  Ca_X_Axis *xAxis;
private:
  void cb_Graph_i(Fl_Button*, void*);
  static void cb_Graph(Fl_Button*, void*);
  void cb_Clear_i(Fl_Button*, void*);
  static void cb_Clear(Fl_Button*, void*);
public:
  Fl_Choice *scaleChoice;
  static Fl_Menu_Item menu_scaleChoice[];
private:
  void cb_Linear_i(Fl_Menu_*, void*);
  static void cb_Linear(Fl_Menu_*, void*);
  void cb_Logarithmic_i(Fl_Menu_*, void*);
  static void cb_Logarithmic(Fl_Menu_*, void*);
public:
  Fl_Choice *intersectChoice;
  static Fl_Menu_Item menu_intersectChoice[];
private:
  Fl_VTK_Window *volView;
public:
  Fl_Value_Slider *zSlider;
private:
  void cb_zSlider_i(Fl_Value_Slider*, void*);
  static void cb_zSlider(Fl_Value_Slider*, void*);
public:
  Fl_Value_Slider *ySlider;
private:
  void cb_ySlider_i(Fl_Value_Slider*, void*);
  static void cb_ySlider(Fl_Value_Slider*, void*);
public:
  Fl_Value_Slider *xSlider;
private:
  void cb_xSlider_i(Fl_Value_Slider*, void*);
  static void cb_xSlider(Fl_Value_Slider*, void*);
  Fl_VTK_Window *zView;
  Fl_VTK_Window *yView;
  Fl_VTK_Window *xView;
  Fl_VTK_Window *bView;
public:
  Fl_Value_Slider *levelSlider;
private:
  void cb_levelSlider_i(Fl_Value_Slider*, void*);
  static void cb_levelSlider(Fl_Value_Slider*, void*);
public:
  Fl_Value_Slider *windowSlider;
private:
  void cb_windowSlider_i(Fl_Value_Slider*, void*);
  static void cb_windowSlider(Fl_Value_Slider*, void*);
  void cb_Reset_i(Fl_Button*, void*);
  static void cb_Reset(Fl_Button*, void*);
public:
  virtual ~ViewerGUI();
  void UpdateView(void);
  void Show( void );
  virtual void Show(int aArgc, char* aArgv[]);
  void SetZSlice(unsigned short slice);
  void SetYSlice(unsigned short slice);
  void SetXSlice(unsigned short slice);
  void Render();
  void MakeGraph();
private:
  ViewerGUI(const ViewerGUI&); // Not implemented.
  const ViewerGUI& operator=(const ViewerGUI&); // Not implemented.
  ViewerBase* viewerBase; 
  bool activeGraph; 
  int selColor; 
  Fl_Color colorGraph[13]; 
};
#endif
