com.sun.media.imageio.stream
Class RawImageInputStream

java.lang.Object
  extended bycom.sun.media.imageio.stream.RawImageInputStream
All Implemented Interfaces:
DataInput, ImageInputStream

public class RawImageInputStream
extends Object
implements ImageInputStream

This class defines the content of the ImageInputStream containing several raw images with the same image type: the number of the images, the image type, the offset for the first sample of each image, and the image size information.

ImageInputStream methods are not commented individually. These methods merely forward the call to the ImageInputStream specified when the RawImageInputStream is constructed.


Constructor Summary
RawImageInputStream(ImageInputStream source, ImageTypeSpecifier type, long[] imageOffsets, Dimension[] imageDimensions)
          Constructor.
RawImageInputStream(ImageInputStream source, InputSource xmlSource)
          Constructor.
RawImageInputStream(ImageInputStream source, SampleModel sampleModel, long[] imageOffsets, Dimension[] imageDimensions)
          Constructor.
 
Method Summary
 void close()
           
 void flush()
           
 void flushBefore(long pos)
           
 int getBitOffset()
           
 ByteOrder getByteOrder()
           
 long getFlushedPosition()
           
 Dimension getImageDimension(int imageIndex)
          Retrieves the dimnsion of the imageIndexth image.
 long getImageOffset(int imageIndex)
          Retrieves the image offset of the imageIndexth image.
 ImageTypeSpecifier getImageType()
          Retrieves the image type.
 int getNumImages()
          Retrieves the number of images in the ImageInputStream.
 long getStreamPosition()
           
 boolean isCached()
           
 boolean isCachedFile()
           
 boolean isCachedMemory()
           
 long length()
           
 void mark()
           
 int read()
           
 int read(byte[] b)
           
 int read(byte[] b, int off, int len)
           
 int readBit()
           
 long readBits(int numBits)
           
 boolean readBoolean()
           
 byte readByte()
           
 void readBytes(IIOByteBuffer buf, int len)
           
 char readChar()
           
 double readDouble()
           
 float readFloat()
           
 void readFully(byte[] b)
           
 void readFully(byte[] b, int off, int len)
           
 void readFully(char[] c, int off, int len)
           
 void readFully(double[] d, int off, int len)
           
 void readFully(float[] f, int off, int len)
           
 void readFully(int[] i, int off, int len)
           
 void readFully(long[] l, int off, int len)
           
 void readFully(short[] s, int off, int len)
           
 int readInt()
           
 String readLine()
           
 long readLong()
           
 short readShort()
           
 int readUnsignedByte()
           
 long readUnsignedInt()
           
 int readUnsignedShort()
           
 String readUTF()
           
 void reset()
           
 void seek(long pos)
           
 void setBitOffset(int bitOffset)
           
 void setByteOrder(ByteOrder byteOrder)
           
 int skipBytes(int n)
           
 long skipBytes(long n)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RawImageInputStream

public RawImageInputStream(ImageInputStream source,
                           ImageTypeSpecifier type,
                           long[] imageOffsets,
                           Dimension[] imageDimensions)
Constructor.

Parameters:
source - The ImageInputStream containing all the raw images.
type - The ImageTypeSpecifier for all the images in the stream.
imageOffsets - The position of the first sample for each image in the stream.
imageDimensions - The image size for each image in the stream.
Throws:
IllegalArgumentException - If the sizes of imageOffsets and imageDimensions are different or if either array is null.

RawImageInputStream

public RawImageInputStream(ImageInputStream source,
                           SampleModel sampleModel,
                           long[] imageOffsets,
                           Dimension[] imageDimensions)
Constructor.

This constructor is the same as RawImageInputStream(ImageInputStream,ImageTypeSpecifier, long[],Dimension[]) except that a SampleModel is supplied instead of an ImageTypeSpecifier. This constructor creates a ColorModel for the supplied SampleModel and then creates an ImageTypeSpecifier.

Suitable ColorModels are guaranteed to exist for all instances of ComponentSampleModel. For 1- and 3- banded SampleModels, the ColorModel will be opaque. For 2- and 4-banded SampleModels, the output will use alpha transparency which is not premultiplied. 1- and 2-banded data will use a grayscale ColorSpace, and 3- and 4-banded data a sRGB ColorSpace. Data with 5 or more bands will use a ColorSpace which satisfies compatibility constraints but is merely a placeholder and does not perform correct color conversion to and from the C.I.E. XYZ and sRGB color spaces.

An instance of DirectColorModel will be created for instances of SinglePixelPackedSampleModel with no more than 4 bands.

An instance of IndexColorModel will be created for instances of MultiPixelPackedSampleModel. The colormap will be a grayscale ramp with 1 << numberOfBits entries ranging from zero to at most 255.

Parameters:
source - The ImageInputStream containing all the raw images.
sampleModel - The SampleModel for all the images in the stream.
imageOffsets - The position of the first sample for each image in the stream.
imageDimensions - The image size for each image in the stream.
Throws:
IllegalArgumentException - If sampleModel is null.
IllegalArgumentException - If the sizes of imageOffsets and imageDimensions are different or if either array is null.
IllegalArgumentException - If it is not possible to create a ColorModel from the supplied SampleModel.

RawImageInputStream

public RawImageInputStream(ImageInputStream source,
                           InputSource xmlSource)
                    throws SAXException,
                           IOException
Constructor. The xmlSource must adhere to the following DTD:
<!DOCTYPE "com_sun_media_imageio_stream_raw_1.0" [

  <!ELEMENT com_sun_media_imageio_stream_raw_1.0
    (byteOrder?, offset?, width?, height?,
     (ComponentSampleModel |
      MultiPixelPackedSampleModel |
      SinglePixelPackedSampleModel),
     (ComponentColorModel |
      DirectColorModel |
      IndexColorModel)?)>

    <!ATTLIST com_sun_media_imageio_stream_raw_1.0
      xmlns CDATA #FIXED "http://com/sun/media/imageio">

  <!ELEMENT byteOrder (#PCDATA)>
    <!-- Byte order of data stream -->
    <!-- Either "NETWORK" or "REVERSE" -->
    <!-- Data type: String -->

  <!ELEMENT offset (#PCDATA)>
    <!-- Byte offset to the image data in the stream -->
    <!-- Data type: long -->

  <!ELEMENT width (#PCDATA)>
    <!-- Image width; default value is SampleModel width -->
    <!-- Data type: int -->

  <!ELEMENT height (#PCDATA)>
    <!-- Image height; default value is SampleModel height -->
    <!-- Data type: int -->

  <!ELEMENT ComponentSampleModel EMPTY>
    <!-- ComponentSampleModel -->

    <!ATTLIST ComponentSampleModel
      dataType (BYTE | USHORT | SHORT | INT | FLOAT | DOUBLE) #REQUIRED
        <!-- Data type: String -->
      w              CDATA #REQUIRED
        <!-- SampleModel width -->
        <!-- Data type: int -->
      h              CDATA #REQUIRED
        <!-- SampleModel height -->
        <!-- Data type: int -->
      pixelStride    CDATA "1"
        <!-- SampleModel pixel stride -->
        <!-- Data type: int -->
      scanlineStride CDATA #REQUIRED
        <!-- SampleModel line stride -->
        <!-- Data type: int -->
      bankIndices    CDATA #IMPLIED
        <!-- SampleModel bank indices -->
        <!-- Data type: int array -->
      bandOffsets    CDATA #REQUIRED>
        <!-- SampleModel band offsets -->
        <!-- Data type: int array -->

  <!ELEMENT MultiPixelPackedSampleModel EMPTY>
    <!-- MultiPixelPackedSampleModel -->

    <!ATTLIST MultiPixelPackedSampleModel
      dataType       (BYTE | USHORT | INT) #REQUIRED
        <!-- Data type: String -->
      w              CDATA #REQUIRED
        <!-- SampleModel width -->
        <!-- Data type: int -->
      h              CDATA #REQUIRED
        <!-- SampleModel height -->
        <!-- Data type: int -->
      numberOfBits   CDATA #REQUIRED
        <!-- Number of bits per pixel -->
        <!-- Data type: int -->
      scanlineStride CDATA #REQUIRED
        <!-- SampleModel line stride -->
        <!-- Data type: int -->
      dataBitOffset  CDATA "0">
        <!-- Offset to first valid bit in a line -->
        <!-- Data type: int -->

  <!ELEMENT SinglePixelPackedSampleModel EMPTY>
    <!-- SinglePixelPackedSampleModel -->

    <!ATTLIST SinglePixelPackedSampleModel
      dataType       (BYTE | USHORT | INT) #REQUIRED
        <!-- Data type: String -->
      w              CDATA #REQUIRED
        <!-- SampleModel width -->
        <!-- Data type: int -->
      h              CDATA #REQUIRED
        <!-- SampleModel height -->
        <!-- Data type: int -->
      scanlineStride CDATA #REQUIRED
        <!-- SampleModel line stride -->
        <!-- Data type: int -->
      bitMasks       CDATA #REQUIRED>
        <!-- Masks indicating RGBA positions -->
        <!-- Data type: int -->

  <!ELEMENT ComponentColorModel EMPTY>
    <!-- ComponentColorModel -->

    <!ATTLIST ComponentColorModel
      colorSpace (CIEXYZ | GRAY | LINEAR_RGB | PYCC | sRGB | URL)
                     #REQUIRED
        <!-- A string representing a predefined ColorSpace or a URI
                representing the location of any ICC profile from which
                a ColorSpace may be created. -->
        <!-- Data type: String -->
      bits                 CDATA          #IMPLIED
        <!-- Number of bits per color component -->
        <!-- Data type: int -->
      hasAlpha             (true | false) #REQUIRED
        <!-- Whether an alpha channel is present -->
        <!-- Data type: boolean -->
      isAlphaPremultiplied (true | false) #REQUIRED
        <!-- Whether any alpha channel is premultiplied -->
        <!-- Data type: boolean -->
      transparency         (BITMASK | OPAQUE | TRANSLUCENT) #REQUIRED
        <!-- The type of transparency -->
      transferType (BYTE | USHORT | SHORT | INT | FLOAT | DOUBLE)
                     #REQUIRED>
        <!-- The data transfer type -->

  <!ELEMENT DirectColorModel EMPTY>
    <!-- DirectColorModel -->

    <!ATTLIST DirectColorModel
      colorSpace           (LINEAR_RGB | sRGB | URL) #IMPLIED
        <!-- A string representing a predefined RGB ColorSpace or a
                URL representing the location of any ICC profile from
                which an RGB ColorSpace may be created. -->
        <!-- Data type: String -->
      bits       CDATA #REQUIRED
        <!-- Number of bits per color component -->
        <!-- Data type: int -->
      rmask      CDATA #REQUIRED
        <!-- Bitmask of the red component -->
        <!-- Data type: int -->
      gmask      CDATA #REQUIRED
        <!-- Bitmask of the grenn component -->
        <!-- Data type: int -->
      bmask      CDATA #REQUIRED
        <!-- Bitmask of the blue component -->
        <!-- Data type: int -->
      amask      CDATA "0">
        <!-- Bitmask of the alpha component -->
        <!-- Data type: int -->

  <!ELEMENT IndexColorModel EMPTY>
    <!-- IndexColorModel -->

    <!ATTLIST IndexColorModel
      bits CDATA #REQUIRED
        <!-- Number of bits per color component -->
        <!-- Data type: int -->
      size CDATA #REQUIRED
        <!-- Number of elements in the colormap -->
        <!-- Data type: int -->
      r    CDATA #REQUIRED
        <!-- Red elements of the colormap -->
        <!-- Data type: byte array -->
      g    CDATA #REQUIRED
        <!-- Green elements of the colormap -->
        <!-- Data type: byte array -->
      b    CDATA #REQUIRED
        <!-- Blue elements of the colormap -->
        <!-- Data type: byte array -->
      a    CDATA #IMPLIED>
        <!-- Alpha elements of the colormap -->
        <!-- Data type: byte array -->
]>

Parameters:
source - The ImageInputStream containing all the raw images.
xmlSource - The org.xml.sax.InputSource to provide the xml document in which the stream structure is defined.
Throws:
RuntimeException - If the parse configuration isn't correct.
IllegalArgumentException - If the number of "width" elements isn't the same as the number of "height" elements.
SAXException - If one is thrown in parsing.
IOException - If one is thrown in parsing, or creating color space from a URL.
Method Detail

getImageType

public ImageTypeSpecifier getImageType()
Retrieves the image type.

Returns:
the image type

getImageOffset

public long getImageOffset(int imageIndex)
Retrieves the image offset of the imageIndexth image.

Parameters:
imageIndex - the index of the image of interest.
Returns:
the offset in the stream to the specified image.
Throws:
IllegalArgumentException - If the provided parameter is out of range.

getImageDimension

public Dimension getImageDimension(int imageIndex)
Retrieves the dimnsion of the imageIndexth image.

Parameters:
imageIndex - the index of the image of interest.
Returns:
the size of the specified image.
Throws:
IllegalArgumentException - If the provided parameter is out of rangle.

getNumImages

public int getNumImages()
Retrieves the number of images in the ImageInputStream.

Returns:
the number of image in the stream.

setByteOrder

public void setByteOrder(ByteOrder byteOrder)
Specified by:
setByteOrder in interface ImageInputStream

getByteOrder

public ByteOrder getByteOrder()
Specified by:
getByteOrder in interface ImageInputStream

read

public int read()
         throws IOException
Specified by:
read in interface ImageInputStream
Throws:
IOException

read

public int read(byte[] b)
         throws IOException
Specified by:
read in interface ImageInputStream
Throws:
IOException

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException
Specified by:
read in interface ImageInputStream
Throws:
IOException

readBytes

public void readBytes(IIOByteBuffer buf,
                      int len)
               throws IOException
Specified by:
readBytes in interface ImageInputStream
Throws:
IOException

readBoolean

public boolean readBoolean()
                    throws IOException
Specified by:
readBoolean in interface ImageInputStream
Throws:
IOException

readByte

public byte readByte()
              throws IOException
Specified by:
readByte in interface ImageInputStream
Throws:
IOException

readUnsignedByte

public int readUnsignedByte()
                     throws IOException
Specified by:
readUnsignedByte in interface ImageInputStream
Throws:
IOException

readShort

public short readShort()
                throws IOException
Specified by:
readShort in interface ImageInputStream
Throws:
IOException

readUnsignedShort

public int readUnsignedShort()
                      throws IOException
Specified by:
readUnsignedShort in interface ImageInputStream
Throws:
IOException

readChar

public char readChar()
              throws IOException
Specified by:
readChar in interface ImageInputStream
Throws:
IOException

readInt

public int readInt()
            throws IOException
Specified by:
readInt in interface ImageInputStream
Throws:
IOException

readUnsignedInt

public long readUnsignedInt()
                     throws IOException
Specified by:
readUnsignedInt in interface ImageInputStream
Throws:
IOException

readLong

public long readLong()
              throws IOException
Specified by:
readLong in interface ImageInputStream
Throws:
IOException

readFloat

public float readFloat()
                throws IOException
Specified by:
readFloat in interface ImageInputStream
Throws:
IOException

readDouble

public double readDouble()
                  throws IOException
Specified by:
readDouble in interface ImageInputStream
Throws:
IOException

readLine

public String readLine()
                throws IOException
Specified by:
readLine in interface ImageInputStream
Throws:
IOException

readUTF

public String readUTF()
               throws IOException
Specified by:
readUTF in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(byte[] b,
                      int off,
                      int len)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(byte[] b)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(short[] s,
                      int off,
                      int len)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(char[] c,
                      int off,
                      int len)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(int[] i,
                      int off,
                      int len)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(long[] l,
                      int off,
                      int len)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(float[] f,
                      int off,
                      int len)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

readFully

public void readFully(double[] d,
                      int off,
                      int len)
               throws IOException
Specified by:
readFully in interface ImageInputStream
Throws:
IOException

getStreamPosition

public long getStreamPosition()
                       throws IOException
Specified by:
getStreamPosition in interface ImageInputStream
Throws:
IOException

getBitOffset

public int getBitOffset()
                 throws IOException
Specified by:
getBitOffset in interface ImageInputStream
Throws:
IOException

setBitOffset

public void setBitOffset(int bitOffset)
                  throws IOException
Specified by:
setBitOffset in interface ImageInputStream
Throws:
IOException

readBit

public int readBit()
            throws IOException
Specified by:
readBit in interface ImageInputStream
Throws:
IOException

readBits

public long readBits(int numBits)
              throws IOException
Specified by:
readBits in interface ImageInputStream
Throws:
IOException

length

public long length()
            throws IOException
Specified by:
length in interface ImageInputStream
Throws:
IOException

skipBytes

public int skipBytes(int n)
              throws IOException
Specified by:
skipBytes in interface ImageInputStream
Throws:
IOException

skipBytes

public long skipBytes(long n)
               throws IOException
Specified by:
skipBytes in interface ImageInputStream
Throws:
IOException

seek

public void seek(long pos)
          throws IOException
Specified by:
seek in interface ImageInputStream
Throws:
IOException

mark

public void mark()
Specified by:
mark in interface ImageInputStream

reset

public void reset()
           throws IOException
Specified by:
reset in interface ImageInputStream
Throws:
IOException

flushBefore

public void flushBefore(long pos)
                 throws IOException
Specified by:
flushBefore in interface ImageInputStream
Throws:
IOException

flush

public void flush()
           throws IOException
Specified by:
flush in interface ImageInputStream
Throws:
IOException

getFlushedPosition

public long getFlushedPosition()
Specified by:
getFlushedPosition in interface ImageInputStream

isCached

public boolean isCached()
Specified by:
isCached in interface ImageInputStream

isCachedMemory

public boolean isCachedMemory()
Specified by:
isCachedMemory in interface ImageInputStream

isCachedFile

public boolean isCachedFile()
Specified by:
isCachedFile in interface ImageInputStream

close

public void close()
           throws IOException
Specified by:
close in interface ImageInputStream
Throws:
IOException