#ifndef _ZOOMFOCUSIRIS_H
#define _ZOOMFOCUSIRIS_H

#include "DmGuiObject.h"
#include "DynamicLabel.h"
#include "DmInputDetector.h"

class ZoomFocusIris : public VkComponent, public ErrorHandler
{
  public:
  ZoomFocusIris(const char *name, Widget parent, 
		DmInt16Object *dmZoom,
		DmInt16Object *dmFocus,
		DmInt16Object *dmIris,
		DmEmptyObject *dmIrisMode);

  ~ZoomFocusIris();
  
  virtual const char *className()
  {
    return "ZoomFocusIris";
  }

  static const int ZoomMinimum;
  static const int ZoomMaximum;
  static const int FocusMinimum;
  static const int FocusMaximum;
  static const int IrisMinimum;
  static const int IrisMaximum;
  static const int LowGain;
  static const int MedGain;
  static const int HighGain;

  Widget autoIrisButton()
  {
    return _autoIris;
  }
  
  protected:
  Widget _zoom;
  Widget _focus;
  Widget _iris;
  Widget _autoIris;
  
  DmInt16Object *_dmZoom;
  DmInt16Object *_dmFocus;  
  DmInt16Object *_dmIris;  
  DmEmptyObject *_dmIrisMode;
  
  void setZoom(unsigned value);
  void setFocus(unsigned value);
  void setIris(unsigned value);
  
  Int16 _prevZoomValue;
  Int16 _prevFocusValue;
  Int16 _prevIrisValue;

  private:
  static void sliderChangedCallback(Widget w, 
				    XtPointer clientData, 
				    XtPointer callData);

  static void autoIrisCallback(Widget w, 
			       XtPointer clientData, 
			       XtPointer callData);
};



#endif
