package min3d.vos;
import java.nio.FloatBuffer;
import min3d.Utils;
/**
* Simple struct/VO.
* Expected range of [0,255] for r, g, b, and a
* (Unfortunately stored as shorts's, not byte's, since Java bytes only go up to 128 :( )
*
*/
public class Color4
{
public short r;
public short g;
public short b;
public short a;
public Color4()
{
r = (short)255;
g = (short)255;
b = (short)255;
a = (short)255;
}
public Color4(short $r, short $g, short $b, short $a)
{
r = $r;
g = $g;
b = $b;
a = $a;
}
/**
* Convenience method which casts the int arguments to short for you.
*/
public Color4(int $r, int $g, int $b, int $a)
{
r = (short)$r;
g = (short)$g;
b = (short)$b;
a = (short)$a;
}
/**
* Convenience method which casts the float arguments to short for you.
*/
public Color4(float $r, float $g, float $b, float $a)
{
r = (short)$r;
g = (short)$g;
b = (short)$b;
a = (short)$a;
}
/**
* Convenience method to set all properties in one line.
*/
public void setAll(short $r, short $g, short $b, short $a)
{
r = $r;
g = $g;
b = $b;
a = $a;
}
/**
* Convenience method to set all properties off one 32-bit argb value
*/
public void setAll(long $argb32)
{
a = (short) (($argb32 >> 24) & 0x000000FF);
r = (short) (($argb32 >> 16) & 0x000000FF);
g = (short) (($argb32 >> 8) & 0x000000FF);
b = (short) (($argb32) & 0x000000FF);
}
@Override
public String toString()
{
return "r:" + r + ", g:" + g + ", b:" + b + ", a:" + a;
}
public FloatBuffer toFloatBuffer()
{
return Utils.makeFloatBuffer4(r,g,b,a);
}
public void toFloatBuffer(FloatBuffer $floatBuffer)
{
$floatBuffer.position(0);
$floatBuffer.put((float)r / 255f);
$floatBuffer.put((float)g / 255f);
$floatBuffer.put((float)b / 255f);
$floatBuffer.put((float)a / 255f);
}
}