public ColorModel createColorModel(int bpc) throws IOException {
int size = getHighValue();
byte[] index = getLookupData();
PDColorSpace baseColorSpace = getBaseColorSpace();
ColorModel cm = null;
if( baseColorSpace instanceof PDDeviceRGB )
{
cm = new IndexColorModel(bpc, size+1, index,0,false);
}
else
{
ColorModel baseColorModel = baseColorSpace.createColorModel(bpc);
if( baseColorModel.getTransferType() != DataBuffer.TYPE_BYTE )
{
throw new IOException( "Not implemented" );
}
byte[] r = new byte[size+1];
byte[] g = new byte[size+1];
byte[] b = new byte[size+1];
byte[] a = baseColorModel.hasAlpha() ? new byte[size+1] : null;
byte[] inData = new byte[baseColorModel.getNumComponents()];
for( int i = 0; i < = size; i++ )
{
System.arraycopy(index, i * inData.length, inData, 0, inData.length);
r[i] = (byte)baseColorModel.getRed(inData);
g[i] = (byte)baseColorModel.getGreen(inData);
b[i] = (byte)baseColorModel.getBlue(inData);
if(a != null)
{
a[i] = (byte)baseColorModel.getAlpha(inData);
}
}
cm = a == null ? new IndexColorModel(bpc, size+1, r, g, b) : new IndexColorModel(bpc, size+1, r, g, b, a);
}
return cm;
}
Create a Java color model for this colorspace. |