Jaysyn904 5914ed2ab5 Updated Release Archive
Updated Release Archive.  Fixed Mage-killer prereqs.  Removed old LETO & ConvoCC related files.  Added organized spell scroll store.  Fixed Gloura spellbook. Various TLK fixes.  Reorganized Repo.  Removed invalid user folders. Added DocGen back in.
2023-08-22 10:00:21 -04:00

227 lines
7.9 KiB
Java

package com.realityinteractive.imageio.tga;
/*
* TGAImageReaderSpi.java
* Copyright (c) 2003 Reality Interactive, Inc.
* See bottom of file for license and warranty information.
* Created on Sep 26, 2003
*/
import java.io.IOException;
import java.util.Locale;
import javax.imageio.ImageReader;
import javax.imageio.spi.ImageReaderSpi;
import javax.imageio.stream.ImageInputStream;
/**
* <p>A service provider for reading TGA images. Only {@link javax.imageio.stream.ImageInputStream}
* input types are allowed. See {@link com.realityinteractive.imageio.tga.TGAImageReader}
* for supported features.</p>
*
* @author Rob Grzywinski <a href="mailto:rgrzywinski@realityinteractive.com">rgrzywinski@realityinteractive.com</a>
* @version $Id: TGAImageReaderSpi.java,v 1.1 2005/04/12 11:23:53 ornedan Exp $
* @since 1.0
*/
public class TGAImageReaderSpi extends ImageReaderSpi
{
// =========================================================================
// NOTE: these should be package (default protected) as it is used
// frequently elsewhere
/**
* <p>The vendor name: Reality Interactive, Inc.</p>
*/
static final String VENDOR_NAME = "Reality Interactive, Inc.";
/**
* <p>The plugin version number.</p>
*/
static final String VERSION = "1.00";
/**
* <p>The class name for the TGA image reader.</p>
*/
static final String READER_CLASSNAME =
"com.realityinteractive.imageio.tga.TGAImageReader";
/**
* <p>The format names.</p>
*/
static final String[] FORMAT_NAMES = { "tga", "targa" };
/**
* <p>The canonical suffix names.</p>
*/
static final String[] SUFFIXES = { "tga", "targa" };
/**
* <p>The supported mime types.</p>
*/
static final String[] MIME_TYPES =
{ "application/tga", "application/x-tga", "application/x-targa",
"image/tga", "image/x-tga", "image/targa", "image/x-targa" };
/**
* <p>This is a read-only TGA plugin.</p>
*/
static final String[] WRITER_SPI_CLASSNAMES = null;
/**
* <p>The standard stream metadata format is not supported.</p>
*/
static final boolean SUPPORTS_STANDARD_STREAM_METADATA_FORMAT = false;
/**
* <p>There is no "native" stream metadata formats supported by the TGA
* plugin.</p>
*/
static final String NATIVE_STREAM_METADATA_FORMAT_NAME = null;
/**
* <p>There is no "native" stream metadata formats supported by the TGA
* plugin.</p>
*/
static final String NATIVE_STREAM_METADATA_FORMAT_CLASSNAME = null;
/**
* <p>There are no stream metadata formats other than the standard.</p>
*/
static final String[] EXTRA_STREAM_METADATA_FORMAT_NAMES = null;
/**
* <p>There are no stream metadata formats other than the standard.</p>
*/
static final String[] EXTRA_STREAM_METADATA_FORMAT_CLASSNAMES = null;
/**
* <p>The standard image metadata format is not supported.</p>
*/
static final boolean SUPPORTS_STANDARD_IMAGE_METADATA_FORMAT = false;
/**
* <p>There are no "native" image metadata formats supported by the TGA
* plugin.</p>
*/
static final String NATIVE_IMAGE_METADATA_FORMAT_NAME = null;
/**
* <p>There are no "native" image metadata formats supported by the TGA
* plugin.</p>
*/
static final String NATIVE_IMAGE_METADATA_FORMAT_CLASSNAME = null;
/**
* <p>There are no image metadata formats supported other than the standard.</p>
*/
static final String[] EXTRA_IMAGE_METADATA_FORMAT_NAMES = null;
/**
* <p>There are no image metadata formats supported other than the standard.</p>
*/
static final String[] EXTRA_IMAGE_METADATA_FORMAT_CLASSNAMES = null;
// =========================================================================
/**
* <p>Constructs an {@link javax.imageio.spi.ImageReaderSpi} that accepts
* {@link javax.imageio.stream.ImageInputStream} as its input type.</p>
*
* @see javax.imageio.spi.ImageReaderSpi#ImageReaderSpi()
*/
public TGAImageReaderSpi()
{
super(VENDOR_NAME, VERSION, FORMAT_NAMES, SUFFIXES, MIME_TYPES,
READER_CLASSNAME,
ImageReaderSpi.STANDARD_INPUT_TYPE,
WRITER_SPI_CLASSNAMES,
SUPPORTS_STANDARD_STREAM_METADATA_FORMAT,
NATIVE_STREAM_METADATA_FORMAT_NAME,
NATIVE_STREAM_METADATA_FORMAT_CLASSNAME,
EXTRA_STREAM_METADATA_FORMAT_NAMES,
EXTRA_STREAM_METADATA_FORMAT_CLASSNAMES,
SUPPORTS_STANDARD_IMAGE_METADATA_FORMAT,
NATIVE_IMAGE_METADATA_FORMAT_NAME,
NATIVE_IMAGE_METADATA_FORMAT_CLASSNAME,
EXTRA_IMAGE_METADATA_FORMAT_NAMES,
EXTRA_IMAGE_METADATA_FORMAT_CLASSNAMES);
}
/**
* @see javax.imageio.spi.ImageReaderSpi#canDecodeInput(java.lang.Object)
*/
public boolean canDecodeInput(final Object source)
throws IOException
{
// NOTE: the input source must be left in the same state as it started
// at (mark() and reset() should be used on ImageInputStream)
// ensure that the input type is a ImageInputStream as that is all that
// is supported
if(!(source instanceof ImageInputStream))
return false;
/* else -- source is a ImageInputStream */
// cast to ImageInputStream for convenience
final ImageInputStream inputStream = (ImageInputStream)source;
try
{
// set a mark at the current position so that the stream can be reset
inputStream.mark();
// there's no ideidentifiable header on a TGA file so a punt must
// occur. This will attempt to read the image type and if it is
// not known or allowed then false is returned.
// NOTE: 1.0.0 only supports un/compressed true color
inputStream.readUnsignedByte(); // idLength
inputStream.readUnsignedByte(); // has color map
final int imageType = inputStream.readUnsignedByte();
if( (imageType != TGAConstants.TRUE_COLOR) &&
(imageType != TGAConstants.RLE_TRUE_COLOR) &&
(imageType != TGAConstants.COLOR_MAP) &&
(imageType != TGAConstants.RLE_COLOR_MAP) )
{
return false;
} /* else -- it's *possible* (though not known) that this is a TGA */
return true;
} finally
{
// reset so that the ImageInputStream is put back where it was
inputStream.reset();
}
}
/**
* @see javax.imageio.spi.ImageReaderSpi#createReaderInstance(java.lang.Object)
*/
public ImageReader createReaderInstance(final Object extension)
throws IOException
{
// construct and return an ImageReader using this SPI
return new TGAImageReader(this);
}
/**
* @see javax.imageio.spi.IIOServiceProvider#getDescription(java.util.Locale)
*/
public String getDescription(final Locale locale)
{
return "TGA"; // FIXME: localize
}
}
// =============================================================================
/*
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/