1. /*
  2. * @(#)OutputStreamImageOutputStreamSpi.java 1.8 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.spi;
  8. import java.io.File;
  9. import java.io.IOException;
  10. import java.io.OutputStream;
  11. import java.util.Locale;
  12. import javax.imageio.spi.ImageOutputStreamSpi;
  13. import javax.imageio.stream.ImageOutputStream;
  14. import javax.imageio.stream.FileCacheImageOutputStream;
  15. import javax.imageio.stream.MemoryCacheImageOutputStream;
  16. public class OutputStreamImageOutputStreamSpi extends ImageOutputStreamSpi {
  17. private static final String vendorName = "Sun Microsystems, Inc.";
  18. private static final String version = "1.0";
  19. private static final Class outputClass = OutputStream.class;
  20. public OutputStreamImageOutputStreamSpi() {
  21. super(vendorName, version, outputClass);
  22. }
  23. public String getDescription(Locale locale) {
  24. return "Service provider that instantiates an OutputStreamImageOutputStream from an OutputStream";
  25. }
  26. public boolean canUseCacheFile() {
  27. return true;
  28. }
  29. public boolean needsCacheFile() {
  30. return false;
  31. }
  32. public ImageOutputStream createOutputStreamInstance(Object output,
  33. boolean useCache,
  34. File cacheDir)
  35. throws IOException {
  36. if (output instanceof OutputStream) {
  37. OutputStream os = (OutputStream)output;
  38. if (useCache) {
  39. return new FileCacheImageOutputStream(os, cacheDir);
  40. } else {
  41. return new MemoryCacheImageOutputStream(os);
  42. }
  43. } else {
  44. throw new IllegalArgumentException();
  45. }
  46. }
  47. }