// ----------------------------------------------------------------------
// centerlayer.m
// ----------------------------------------------------------------------
// by Brennan
// Use like this :
// #define CENTER_VAR MyVar
// Global MyVar;
// #include "centerlayer.h"
// Group l = ;
// MyVar = l.getObject("something");
// _MyVarInit(Layer MyVar, Group l, int centerx, int centery);
// ----------------------------------------------------------------------

Global GuiObject _##CENTER_VAR##Layer;
Global Group _##CENTER_VAR##Group;	// parent Layout to center in
Global Int _##CENTER_VAR##centerx;	// should we center x?
Global Int _##CENTER_VAR##centery;	// should we center y?
Global Int _##CENTER_VAR##addx = 0;
Global Int _##CENTER_VAR##addy = 0;
Global Int _##CENTER_VAR##addh = 0;
Global Int _##CENTER_VAR##addw = 0;

Function _##CENTER_VAR##Init(GuiObject _layer, Group parentLayout, int centerx, int centery);
Function _##CENTER_VAR##handleResize();
Function _##CENTER_VAR##setXSpace(int val);
Function _##CENTER_VAR##setYSpace(int val);
Function _##CENTER_VAR##setWSpace(int val);
Function _##CENTER_VAR##setHSpace(int val);
Function _##CENTER_VAR##sizeError(boolean iserror);

_##CENTER_VAR##Init(GuiObject _layer, Group parentLayout, int centerx, int centery) {
  _##CENTER_VAR##Layer = _layer;
  _##CENTER_VAR##Group = parentLayout;
  _##CENTER_VAR##centerx = centerx;
  _##CENTER_VAR##centery = centery;
  _##CENTER_VAR##handleResize();
}

_##CENTER_VAR##setXSpace(int val)
{
	_##CENTER_VAR##addx = val;
}

_##CENTER_VAR##setYSpace(int val)
{
	_##CENTER_VAR##addy = val;
}
_##CENTER_VAR##setHSpace(int val)
{
	_##CENTER_VAR##addh = val;
}
_##CENTER_VAR##setWSpace(int val)
{
	_##CENTER_VAR##addw = val;
}

_##CENTER_VAR##handleResize() {
  int myw = _##CENTER_VAR##Group.getWidth();
  int myh = _##CENTER_VAR##Group.getHeight();

  int layerw = _##CENTER_VAR##Layer.getWidth();
  int layerh = _##CENTER_VAR##Layer.getHeight();

  int x = _##CENTER_VAR##Layer.getLeft();
  int y = _##CENTER_VAR##Layer.getTop();

  if (_##CENTER_VAR##centerx) _##CENTER_VAR##Layer.setXmlParam("x", integerToString((myw - layerw)/2 + _##CENTER_VAR##addx + _##CENTER_VAR##addw));
  if (_##CENTER_VAR##centery) _##CENTER_VAR##Layer.setXmlParam("y", integerToString((myh - layerh)/2 + _##CENTER_VAR##addy + _##CENTER_VAR##addh));

  if (myw < layerw + 2*_##CENTER_VAR##addx - _##CENTER_VAR##addw || myh < layerh + _##CENTER_VAR##addy - _##CENTER_VAR##addh)
  {
	_##CENTER_VAR##sizeError(TRUE);
  }
  else
  {
	_##CENTER_VAR##sizeError(FALSE);
  }
}

_##CENTER_VAR##sizeError(boolean iserror) {}

_##CENTER_VAR##Group.onResize(int x, int y, int w, int h) {
  _##CENTER_VAR##handleResize();
}
