package com.tom_roush.pdfbox.pdmodel.graphics.color;
import com.tom_roush.pdfbox.cos.COSArray;
import com.tom_roush.pdfbox.cos.COSBase;
import com.tom_roush.pdfbox.cos.COSFloat;
import com.tom_roush.pdfbox.cos.COSNumber;
import com.tom_roush.pdfbox.pdmodel.common.COSObjectable;
/**
* A tristimulus, or collection of three floating point parameters used for color operations.
*
* @author Ben Litchfield
*/
public final class PDTristimulus implements COSObjectable
{
private COSArray values = null;
/**
* Constructor. Defaults all values to 0, 0, 0.
*/
public PDTristimulus()
{
values = new COSArray();
values.add(new COSFloat(0.0f));
values.add(new COSFloat(0.0f));
values.add(new COSFloat(0.0f));
}
/**
* Constructor from COS object.
* @param array the array containing the XYZ values
*/
public PDTristimulus(COSArray array)
{
values = array;
}
/**
* Constructor from COS object.
* @param array the array containing the XYZ values
*/
public PDTristimulus(float[] array)
{
values = new COSArray();
for(int i=0; i<array.length && i<3; i++)
{
values.add(new COSFloat(array[i]));
}
}
/**
* Convert this standard java object to a COS object.
* @return the cos object that matches this Java object
*/
public COSBase getCOSObject()
{
return values;
}
/**
* Returns the x value of the tristimulus.
* @return the X value
*/
public float getX()
{
return ((COSNumber)values.get(0)).floatValue();
}
/**
* Sets the x value of the tristimulus.
* @param x the x value for the tristimulus
*/
public void setX(float x)
{
values.set(0, new COSFloat(x));
}
/**
* Returns the y value of the tristimulus.
* @return the Y value
*/
public float getY()
{
return ((COSNumber)values.get(1)).floatValue();
}
/**
* Sets the y value of the tristimulus.
* @param y the y value for the tristimulus
*/
public void setY(float y)
{
values.set(1, new COSFloat(y));
}
/**
* Returns the z value of the tristimulus.
* @return the Z value
*/
public float getZ()
{
return ((COSNumber)values.get(2)).floatValue();
}
/**
* Sets the z value of the tristimulus.
* @param z the z value for the tristimulus
*/
public void setZ(float z)
{
values.set(2, new COSFloat(z));
}
}