FileDocCategorySizeDatePackage
COMMarkerSegment.javaAPI DocJava SE 5 API3920Fri Aug 26 14:54:42 BST 2005com.sun.imageio.plugins.jpeg

COMMarkerSegment

public class COMMarkerSegment extends MarkerSegment
A Comment marker segment. Retains an array of bytes representing the comment data as it is read from the stream. If the marker segment is constructed from a String, then local default encoding is assumed when creating the byte array. If the marker segment is created from an IIOMetadataNode, the user object, if present is assumed to be a byte array containing the comment data. If there is no user object then the comment attribute is used to create the byte array, again assuming the default local encoding.

Fields Summary
private static final String
ENCODING
Constructors Summary
COMMarkerSegment(JPEGBuffer buffer)
Constructs a marker segment from the given buffer, which contains data from an ImageInputStream. This is used when reading metadata from a stream.

        
                                 
        
        super(buffer);
        loadData(buffer);
    
COMMarkerSegment(String comment)
Constructs a marker segment from a String. This is used when modifying metadata from a non-native tree and when transcoding. The default encoding is used to construct the byte array.

        super(JPEG.COM);
        data = comment.getBytes(); // Default encoding
    
COMMarkerSegment(Node node)
Constructs a marker segment from a native tree node. If the node is an IIOMetadataNode and contains a user object, that object is used rather than the string attribute. If the string attribute is used, the default encoding is used.

        super(JPEG.COM);
        if (node instanceof IIOMetadataNode) {
            IIOMetadataNode ourNode = (IIOMetadataNode) node;
            data = (byte []) ourNode.getUserObject();
        }
        if (data == null) {
            String comment = 
                node.getAttributes().getNamedItem("comment").getNodeValue();
            if (comment != null) {
                data = comment.getBytes(); // Default encoding
            } else {
                throw new IIOInvalidTreeException("Empty comment node!", node);
            }
        }
    
Methods Summary
java.lang.StringgetComment()
Returns the array encoded as a String, using ISO-Latin-1 encoding. If an application needs another encoding, the data array must be consulted directly.

        try {
            return new String (data, ENCODING);
        } catch (UnsupportedEncodingException e) {}  // Won't happen
        return null;
    
javax.imageio.metadata.IIOMetadataNodegetNativeNode()
Returns an IIOMetadataNode containing the data array as a user object and a string encoded using ISO-8895-1, as an attribute.

        IIOMetadataNode node = new IIOMetadataNode("com");
        node.setAttribute("comment", getComment());
        if (data != null) {
            node.setUserObject(data.clone());
        }
        return node;
    
voidprint()

        printTag("COM");
        System.out.println("<" + getComment() + ">");
    
voidwrite(javax.imageio.stream.ImageOutputStream ios)
Writes the data for this segment to the stream in valid JPEG format, directly from the data array.

        length = 2 + data.length;
        writeTag(ios);
        ios.write(data);