Class Box
- java.lang.Object
-
- com.sun.media.imageioimpl.plugins.jpeg2000.Box
-
- Direct Known Subclasses:
BitsPerComponentBox,ChannelDefinitionBox,ColorSpecificationBox,ComponentMappingBox,DataEntryURLBox,FileTypeBox,HeaderBox,PaletteBox,ResolutionBox,SignatureBox,UUIDBox,UUIDListBox,XMLBox
public class Box extends java.lang.ObjectThis class is defined to create the box of JP2 file format. A box has a length, a type, an optional extra length and its content. The subclasses should explain the content information.
-
-
Field Summary
Fields Modifier and Type Field Description protected byte[]dataprotected longextraLengthprotected intlengthBox length, extra length, type and content data arrayprotected inttype
-
Constructor Summary
Constructors Constructor Description Box(int length, int type, byte[] data)Constructs aBoxinstance using the provided the box type and the box content in byte array format.Box(int length, int type, long extraLength, byte[] data)Constructs aBoxinstance using the provided the box type, the box extra length, and the box content in byte array format.Box(javax.imageio.stream.ImageInputStream iis, int pos)Constructs aBoxinstance from the providedImageInputStreamat the specified position.Box(org.w3c.dom.Node node)Constructs a Box from an "unknown" Node.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voidcompose()Composes the content byte array from the data elements.static voidcopyInt(byte[] data, int pos, int value)Copies that four bytes of an integer into the byte array.static BoxcreateBox(int type, org.w3c.dom.Node node)Creates aBoxobject with the providedtypebased on the provided Node object based on reflection.static java.lang.ObjectgetAttribute(org.w3c.dom.Node node, java.lang.String name)Extracts the value of the attribute from name.static java.lang.ClassgetBoxClass(int type)Returns the Box class for the box with the providedtype.protected static byte[]getByteArrayElementValue(org.w3c.dom.Node node)Gets the byte array from anIIOMetadataNode.protected static bytegetByteElementValue(org.w3c.dom.Node node)Gets its byte value from anIIOMetadataNode.byte[]getContent()Returns the box content in byte array.longgetExtraLength()Returns the box extra length.protected static int[]getIntArrayElementValue(org.w3c.dom.Node node)Gets the integer array from anIIOMetadataNode.protected static intgetIntElementValue(org.w3c.dom.Node node)Gets its integer value from anIIOMetadataNode.intgetLength()Returns the box length.static java.lang.StringgetName(int type)Returns the XML tag name defined in JP2 XML xsd/dtd for the box with the providedtype.javax.imageio.metadata.IIOMetadataNodegetNativeNode()Creates anIIOMetadataNodefrom this box.protected javax.imageio.metadata.IIOMetadataNodegetNativeNodeForSimpleBox()Creates anIIOMetadataNodefrom this box.protected static shortgetShortElementValue(org.w3c.dom.Node node)Gets its short value from anIIOMetadataNode.protected static java.lang.StringgetStringElementValue(org.w3c.dom.Node node)Gets itsStringvalue from anIIOMetadataNode.intgetType()Returns the box type.static java.lang.StringgetTypeByName(java.lang.String name)Returns the type String based on the provided name.static intgetTypeInt(java.lang.String s)Converts the box type from integer to string.static java.lang.StringgetTypeString(int type)Converts the box type from integer to string.protected voidparse(byte[] data)Parses the data elements from the byte array.static byte[]parseByteArray(java.lang.String value)Parses the byte array expressed by a string.protected static int[]parseIntArray(java.lang.String value)Parses the integer array expressed a string.voidread(javax.imageio.stream.ImageInputStream iis, int pos)Reads a box from theImageInputStreamvoidsetContent(byte[] data)Sets the box content.protected voidsetDefaultAttributes(javax.imageio.metadata.IIOMetadataNode node)Sets the default attributes, "Length", "Type", and "ExtraLength", to the providedIIOMetadataNode.voidsetExtraLength(long extraLength)Sets the box extra length length to the provided value.voidsetLength(int length)Sets the box length to the provided value.voidwrite(javax.imageio.stream.ImageOutputStream ios)Writes this box instance into aImageOutputStream.
-
-
-
Constructor Detail
-
Box
public Box(int length, int type, byte[] data)Constructs aBoxinstance using the provided the box type and the box content in byte array format.- Parameters:
length- The provided box length.type- The provided box type.data- The provided box content in a byte array.- Throws:
java.lang.IllegalArgumentException- If the length of the content byte array is not length - 8.
-
Box
public Box(int length, int type, long extraLength, byte[] data)Constructs aBoxinstance using the provided the box type, the box extra length, and the box content in byte array format. In this case, the length of the box is set to 1, which indicates the extra length is meaningful.- Parameters:
length- The provided box length.type- The provided box type.extraLength- The provided box extra length.data- The provided box content in a byte array.- Throws:
java.lang.IllegalArgumentException- If the length of the content byte array is not extra length - 16.
-
Box
public Box(javax.imageio.stream.ImageInputStream iis, int pos) throws java.io.IOExceptionConstructs aBoxinstance from the providedImageInputStreamat the specified position.- Parameters:
iis- TheImageInputStreamcontains the box.pos- The position from where to read the box.- Throws:
java.io.IOException- If any IOException is thrown in the called read methods.
-
Box
public Box(org.w3c.dom.Node node) throws javax.imageio.metadata.IIOInvalidTreeExceptionConstructs a Box from an "unknown" Node. This node has at least the attribute "Type", and may have the attribute "Length", "ExtraLength" and a child "Content". The child node content is a IIOMetaDataNode with a byte[] user object.- Throws:
javax.imageio.metadata.IIOInvalidTreeException
-
-
Method Detail
-
getName
public static java.lang.String getName(int type)
Returns the XML tag name defined in JP2 XML xsd/dtd for the box with the providedtype. If thetypeis not known, the string"unknown"is returned.
-
getBoxClass
public static java.lang.Class getBoxClass(int type)
Returns the Box class for the box with the providedtype.
-
getTypeByName
public static java.lang.String getTypeByName(java.lang.String name)
Returns the type String based on the provided name.
-
createBox
public static Box createBox(int type, org.w3c.dom.Node node) throws javax.imageio.metadata.IIOInvalidTreeException
Creates aBoxobject with the providedtypebased on the provided Node object based on reflection.- Throws:
javax.imageio.metadata.IIOInvalidTreeException
-
getAttribute
public static java.lang.Object getAttribute(org.w3c.dom.Node node, java.lang.String name)Extracts the value of the attribute from name.
-
parseByteArray
public static byte[] parseByteArray(java.lang.String value)
Parses the byte array expressed by a string.
-
parseIntArray
protected static int[] parseIntArray(java.lang.String value)
Parses the integer array expressed a string.
-
getStringElementValue
protected static java.lang.String getStringElementValue(org.w3c.dom.Node node)
Gets itsStringvalue from anIIOMetadataNode.
-
getByteElementValue
protected static byte getByteElementValue(org.w3c.dom.Node node)
Gets its byte value from anIIOMetadataNode.
-
getIntElementValue
protected static int getIntElementValue(org.w3c.dom.Node node)
Gets its integer value from anIIOMetadataNode.
-
getShortElementValue
protected static short getShortElementValue(org.w3c.dom.Node node)
Gets its short value from anIIOMetadataNode.
-
getByteArrayElementValue
protected static byte[] getByteArrayElementValue(org.w3c.dom.Node node)
Gets the byte array from anIIOMetadataNode.
-
getIntArrayElementValue
protected static int[] getIntArrayElementValue(org.w3c.dom.Node node)
Gets the integer array from anIIOMetadataNode.
-
copyInt
public static void copyInt(byte[] data, int pos, int value)Copies that four bytes of an integer into the byte array. Necessary for the subclasses to compose the content array from the data elements
-
getTypeString
public static java.lang.String getTypeString(int type)
Converts the box type from integer to string. This is necessary because type is defined as String in xsd/dtd and integer in the box classes.
-
getTypeInt
public static int getTypeInt(java.lang.String s)
Converts the box type from integer to string. This is necessary because type is defined as String in xsd/dtd and integer in the box classes.
-
getNativeNode
public javax.imageio.metadata.IIOMetadataNode getNativeNode()
Creates anIIOMetadataNodefrom this box. The format of this node is defined in the XML dtd and xsd for the JP2 image file.
-
getNativeNodeForSimpleBox
protected javax.imageio.metadata.IIOMetadataNode getNativeNodeForSimpleBox()
Creates anIIOMetadataNodefrom this box. The format of this node is defined in the XML dtd and xsd for the JP2 image file. This method is designed for the types of boxes whose XML tree only has 2 levels.
-
setDefaultAttributes
protected void setDefaultAttributes(javax.imageio.metadata.IIOMetadataNode node)
Sets the default attributes, "Length", "Type", and "ExtraLength", to the providedIIOMetadataNode.
-
getLength
public int getLength()
Returns the box length.
-
getType
public int getType()
Returns the box type.
-
getExtraLength
public long getExtraLength()
Returns the box extra length.
-
getContent
public byte[] getContent()
Returns the box content in byte array.
-
setLength
public void setLength(int length)
Sets the box length to the provided value.
-
setExtraLength
public void setExtraLength(long extraLength)
Sets the box extra length length to the provided value.
-
setContent
public void setContent(byte[] data)
Sets the box content. If the content length is not length -8 or extra length - 16, IllegalArgumentException will be thrown.
-
write
public void write(javax.imageio.stream.ImageOutputStream ios) throws java.io.IOExceptionWrites this box instance into aImageOutputStream.- Throws:
java.io.IOException
-
read
public void read(javax.imageio.stream.ImageInputStream iis, int pos) throws java.io.IOException
-
-