//----------------------------------------------------------------------------------------
//
// simpledragvolume.m
//
//----------------------------------------------------------------------------------------
// Use like this :
// #define SDRAG_VOLUME_VAR MyVar
// #include "simpledragvolume.m"
//
//
//                       _MyVarInit(GuiObject o);           // init
//                       _MyVarSetMaxDistance(Int nPixels); // set 100% pixel distance
//



Global GuiObject _##SDRAG_VOLUME_VAR##Object;
Global Int _##SDRAG_VOLUME_VAR##Clicked;
Global Int _##SDRAG_VOLUME_VAR##Y;
Global Int _##SDRAG_VOLUME_VAR##V;
Global Int _##SDRAG_VOLUME_VAR##Max;

Function _##SDRAG_VOLUME_VAR##Init(GuiObject o);
Function _##SDRAG_VOLUME_VAR##Update(int vol);
Function _##SDRAG_VOLUME_VAR##SetMaxDistance(int pixels);
Function _##SDRAG_VOLUME_VAR##UpdateY(int y);

_##SDRAG_VOLUME_VAR##Init(GuiObject o) {
  _##SDRAG_VOLUME_VAR##Object = o;
}

_##SDRAG_VOLUME_VAR##Object.onLeftButtonDown(int x, int y) {
  _##SDRAG_VOLUME_VAR##Clicked = 1;
  _##SDRAG_VOLUME_VAR##Y = y;
  _##SDRAG_VOLUME_VAR##V = getVolume();
}

_##SDRAG_VOLUME_VAR##Object.onMouseMove(int x, int y) {
  if (_##SDRAG_VOLUME_VAR##Clicked) {
    _##SDRAG_VOLUME_VAR##updateY(y);
  }
}

_##SDRAG_VOLUME_VAR##Object.onLeftButtonUp(int x, int y) {
  _##SDRAG_VOLUME_VAR##Clicked = 0;
}

_##SDRAG_VOLUME_VAR##SetMaxDistance(int npix) {
  _##SDRAG_VOLUME_VAR##Max = npix;
}

_##SDRAG_VOLUME_VAR##UpdateY(int y) {
  float p = (_##SDRAG_VOLUME_VAR##Y - y) / _##SDRAG_VOLUME_VAR##Max;
  SetVolume(_##SDRAG_VOLUME_VAR##V + p * 255); // range is checked
}

