* @param out The <code>ObjectOutputStream</code>.
*/
private void writeObject(ObjectOutputStream out) throws IOException {
SampleModel sampleModel = (SampleModel)theObject;
if(sampleModel instanceof ComponentSampleModel) {
ComponentSampleModel sm = (ComponentSampleModel)sampleModel;
int sampleModelType = TYPE_COMPONENT;
int transferType = sm.getTransferType();
if(sampleModel instanceof PixelInterleavedSampleModel) {
sampleModelType = TYPE_PIXEL_INTERLEAVED;
} else if(sampleModel instanceof BandedSampleModel) {
sampleModelType = TYPE_BANDED;
} else if(sampleModel instanceof ComponentSampleModelJAI ||
transferType == DataBuffer.TYPE_FLOAT ||
transferType == DataBuffer.TYPE_DOUBLE) {
sampleModelType = TYPE_COMPONENT_JAI;
}
out.writeInt(sampleModelType);
out.writeInt(transferType);
out.writeInt(sm.getWidth());
out.writeInt(sm.getHeight());
if(sampleModelType != TYPE_BANDED) {
out.writeInt(sm.getPixelStride());
}
out.writeInt(sm.getScanlineStride());
if(sampleModelType != TYPE_PIXEL_INTERLEAVED) {
out.writeObject(sm.getBankIndices());
}
out.writeObject(sm.getBandOffsets());
} else if(sampleModel instanceof
SinglePixelPackedSampleModel) {
SinglePixelPackedSampleModel sm =
(SinglePixelPackedSampleModel)sampleModel;
out.writeInt(TYPE_SINGLE_PIXEL_PACKED);
out.writeInt(sm.getTransferType());
out.writeInt(sm.getWidth());
out.writeInt(sm.getHeight());
out.writeInt(sm.getScanlineStride());
out.writeObject(sm.getBitMasks());
} else if(sampleModel instanceof MultiPixelPackedSampleModel) {
MultiPixelPackedSampleModel sm =
(MultiPixelPackedSampleModel)sampleModel;
out.writeInt(TYPE_MULTI_PIXEL_PACKED);
out.writeInt(sm.getTransferType());
out.writeInt(sm.getWidth());
out.writeInt(sm.getHeight());
out.writeInt(sm.getPixelBitStride());
out.writeInt(sm.getScanlineStride());
out.writeInt(sm.getDataBitOffset());
} else {
throw new RuntimeException(JaiI18N.getString("SampleModelState0"));
}
}