winamp/Src/Wasabi/Lib/com/centerlayer.m

85 lines
2.6 KiB
Objective-C

// ----------------------------------------------------------------------
// 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();
}