1. /*
  2. * @(#)DRIMarkerSegment.java 1.5 03/12/19
  3. *
  4. * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
  5. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
  6. */
  7. package com.sun.imageio.plugins.jpeg;
  8. import javax.imageio.metadata.IIOInvalidTreeException;
  9. import javax.imageio.metadata.IIOMetadataNode;
  10. import javax.imageio.stream.ImageOutputStream;
  11. import java.io.IOException;
  12. import org.w3c.dom.Node;
  13. /**
  14. * A DRI (Define Restart Interval) marker segment.
  15. */
  16. class DRIMarkerSegment extends MarkerSegment {
  17. /**
  18. * Restart interval, or 0 if none is specified.
  19. */
  20. int restartInterval = 0;
  21. DRIMarkerSegment(JPEGBuffer buffer)
  22. throws IOException {
  23. super(buffer);
  24. restartInterval = (buffer.buf[buffer.bufPtr++] & 0xff) << 8;
  25. restartInterval |= buffer.buf[buffer.bufPtr++] & 0xff;
  26. buffer.bufAvail -= length;
  27. }
  28. DRIMarkerSegment(Node node) throws IIOInvalidTreeException {
  29. super(JPEG.DRI);
  30. updateFromNativeNode(node, true);
  31. }
  32. IIOMetadataNode getNativeNode() {
  33. IIOMetadataNode node = new IIOMetadataNode("dri");
  34. node.setAttribute("interval", Integer.toString(restartInterval));
  35. return node;
  36. }
  37. void updateFromNativeNode(Node node, boolean fromScratch)
  38. throws IIOInvalidTreeException {
  39. restartInterval = getAttributeValue(node, null, "interval",
  40. 0, 65535, true);
  41. }
  42. /**
  43. * Writes the data for this segment to the stream in
  44. * valid JPEG format.
  45. */
  46. void write(ImageOutputStream ios) throws IOException {
  47. // We don't write DRI segments; the IJG library does.
  48. }
  49. void print() {
  50. printTag("DRI");
  51. System.out.println("Interval: "
  52. + Integer.toString(restartInterval));
  53. }
  54. }