You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ImageReaderFactory.java 1.7KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /*
  2. * $Id$
  3. * Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  4. * For details on use and redistribution please refer to the
  5. * LICENSE file included with these sources.
  6. */
  7. package org.apache.fop.image.analyser;
  8. // Java
  9. import java.io.InputStream;
  10. import java.io.BufferedInputStream;
  11. import java.io.IOException;
  12. import java.util.ArrayList;
  13. import org.apache.fop.fo.FOUserAgent;
  14. /**
  15. * Factory for ImageReader objects.
  16. * @author Pankaj Narula
  17. * @version 1.0
  18. */
  19. public class ImageReaderFactory {
  20. static protected ArrayList formats = new ArrayList();
  21. static {
  22. formats.add(new JPEGReader());
  23. formats.add(new BMPReader());
  24. formats.add(new GIFReader());
  25. formats.add(new PNGReader());
  26. formats.add(new TIFFReader());
  27. formats.add(new EPSReader());
  28. formats.add(new SVGReader());
  29. };
  30. // TODO - a way to add other readers
  31. /**
  32. * ImageReader maker.
  33. * @param in image input stream
  34. * @return ImageReader object
  35. * image type is not supported
  36. */
  37. static public ImageReader make(String uri, InputStream in,
  38. FOUserAgent ua) {
  39. ImageReader reader;
  40. BufferedInputStream bis = new BufferedInputStream(in);
  41. try {
  42. for (int count = 0; count < formats.size(); count++) {
  43. reader = (ImageReader) formats.get(count);
  44. if (reader.verifySignature(uri, bis, ua)) {
  45. return reader;
  46. }
  47. }
  48. } catch (IOException ex) {
  49. ua.getLogger().error(
  50. "Error while recovering Image Informations (" +
  51. uri + ") : " + ex.getMessage());
  52. }
  53. return null;
  54. }
  55. }