01: /*
02: * $RCSfile: SignatureBox.java,v $
03: *
04: *
05: * Copyright (c) 2005 Sun Microsystems, Inc. All Rights Reserved.
06: *
07: * Redistribution and use in source and binary forms, with or without
08: * modification, are permitted provided that the following conditions
09: * are met:
10: *
11: * - Redistribution of source code must retain the above copyright
12: * notice, this list of conditions and the following disclaimer.
13: *
14: * - Redistribution in binary form must reproduce the above copyright
15: * notice, this list of conditions and the following disclaimer in
16: * the documentation and/or other materials provided with the
17: * distribution.
18: *
19: * Neither the name of Sun Microsystems, Inc. or the names of
20: * contributors may be used to endorse or promote products derived
21: * from this software without specific prior written permission.
22: *
23: * This software is provided "AS IS," without a warranty of any
24: * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND
25: * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY,
26: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY
27: * EXCLUDED. SUN MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL
28: * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF
29: * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS
30: * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR
31: * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL,
32: * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND
33: * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR
34: * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE
35: * POSSIBILITY OF SUCH DAMAGES.
36: *
37: * You acknowledge that this software is not designed or intended for
38: * use in the design, construction, operation or maintenance of any
39: * nuclear facility.
40: *
41: * $Revision: 1.1 $
42: * $Date: 2005/02/11 05:01:37 $
43: * $State: Exp $
44: */
45: package com.sun.media.imageioimpl.plugins.jpeg2000;
46:
47: import org.w3c.dom.Node;
48: import javax.imageio.metadata.IIOInvalidTreeException;
49: import javax.imageio.metadata.IIOMetadataNode;
50:
51: /** This class is defined to represent a Signature Box of JPEG JP2
52: * file format. This type of box has a fixed length of 12, a type of "jP "
53: * and a four byte content of 0x0D0A870A, which is used to detects of the
54: * common file transmission errors which substitutes <CR><LF> with <LF> or
55: * vice versa.
56: */
57: public class SignatureBox extends Box {
58: /** Constructs a <code>SignatureBox</code>. */
59: public SignatureBox() {
60: super (12, 0x6A502020, null);
61: }
62:
63: /** Constructs a <code>SignatureBox</code> based on the provided
64: * <code>org.w3c.dom.Node</code>.
65: */
66: public SignatureBox(Node node) throws IIOInvalidTreeException {
67: super (node);
68: }
69:
70: /** Constructs a <code>SignatureBox</code> based on the provided
71: * byte array.
72: */
73: public SignatureBox(byte[] data) throws IIOInvalidTreeException {
74: super (12, 0x6A502020, data);
75: }
76:
77: /** Creates an <code>IIOMetadataNode</code> from this signature
78: * box. The format of this node is defined in the XML dtd and xsd
79: * for the JP2 image file.
80: */
81: public IIOMetadataNode getNativeNode() {
82: IIOMetadataNode node = new IIOMetadataNode(Box
83: .getName(getType()));
84: setDefaultAttributes(node);
85: node.setAttribute("Signature", Integer.toString(0x0D0A870A));
86: return node;
87: }
88:
89: protected void compose() {
90: if (data != null)
91: return;
92: data = new byte[] { (byte) 0x0D, (byte) 0x0A, (byte) 0x87,
93: (byte) 0x0A };
94: }
95: }
|