text: /*
   * Copyright (c) 2000, 2004, Oracle and/or its affiliates. All rights reserved.
   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   *
   * This code is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License version 2 only, as
   * published by the Free Software Foundation.  Oracle designates this
   * particular file as subject to the "Classpath" exception as provided
   * by Oracle in the LICENSE file that accompanied this code.
   *
   * This code is distributed in the hope that it will be useful, but WITHOUT
   * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
   * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
   * version 2 for more details (a copy is included in the LICENSE file that
   * accompanied this code).
   *
   * You should have received a copy of the GNU General Public License version
   * 2 along with this work; if not, write to the Free Software Foundation,
   * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
   *
   * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
   * or visit www.oracle.com if you need additional information or have any
   * questions.
   */
  
  package com.sun.imageio.plugins.jpeg;
  
  import java.util.Locale;
  import javax.imageio.spi.ImageReaderSpi;
  import javax.imageio.stream.ImageInputStream;
  import javax.imageio.spi.IIORegistry;
  import javax.imageio.spi.ServiceRegistry;
  import java.io.IOException;
  import javax.imageio.ImageReader;
  import javax.imageio.IIOException;
  
  public class JPEGImageReaderSpi extends ImageReaderSpi {
  
      private static String [] writerSpiNames =
          {"com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi"};
  
      public JPEGImageReaderSpi() {
          super(JPEG.vendor,
                JPEG.version,
                JPEG.names,
                JPEG.suffixes,
                JPEG.MIMETypes,
                "com.sun.imageio.plugins.jpeg.JPEGImageReader",
                new Class<?>[] { ImageInputStream.class },
                writerSpiNames,
                true,
                JPEG.nativeStreamMetadataFormatName,
                JPEG.nativeStreamMetadataFormatClassName,
                null, null,
                true,
                JPEG.nativeImageMetadataFormatName,
                JPEG.nativeImageMetadataFormatClassName,
                null, null
                );
      }
  
      public String getDescription(Locale locale) {
          return "Standard JPEG Image Reader";
      }
  
      public boolean canDecodeInput(Object source) throws IOException {
          if (!(source instanceof ImageInputStream)) {
              return false;
          }
          ImageInputStream iis = (ImageInputStream) source;
          iis.mark();
          // If the first two bytes are a JPEG SOI marker, it's probably
          // a JPEG file.  If they aren't, it definitely isn't a JPEG file.
          int byte1 = iis.read();
          int byte2 = iis.read();
          iis.reset();
          if ((byte1 == 0xFF) && (byte2 == JPEG.SOI)) {
              return true;
          }
          return false;
      }
  
      public ImageReader createReaderInstance(Object extension)
          throws IIOException {
          return new JPEGImageReader(this);
      }
  
  }
  