///*
// * Licensed to the Apache Software Foundation (ASF) under one or more
// * contributor license agreements.  See the NOTICE file distributed with
// * this work for additional information regarding copyright ownership.
// * The ASF licenses this file to You under the Apache License, Version 2.0
// * (the "License"); you may not use this file except in compliance with
// * the License.  You may obtain a copy of the License at
// *
// *      http://www.apache.org/licenses/LICENSE-2.0
// *
// * Unless required by applicable law or agreed to in writing, software
// * distributed under the License is distributed on an "AS IS" BASIS,
// * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// * See the License for the specific language governing permissions and
// * limitations under the License.
// */
//package org.apache.sanselan.formats.tga;
//
//import java.awt.Dimension;
//import java.awt.image.BufferedImage;
//import java.io.File;
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.PrintWriter;
//import java.util.Map;
//import java.util.ArrayList;
//
//import org.apache.sanselan.ImageFormat;
//import org.apache.sanselan.ImageInfo;
//import org.apache.sanselan.ImageParser;
//import org.apache.sanselan.ImageReadException;
//import org.apache.sanselan.common.IImageMetadata;
//import org.apache.sanselan.common.byteSources.ByteSource;
//import org.apache.sanselan.util.Debug;
//
///*
// * This class is just a placeholder.  TGA format is not yet supported.
// */
//public class TgaImageParser extends ImageParser implements TgaConstants
//{
//	public TgaImageParser()
//	{
//		this.setByteOrder(BYTE_ORDER_INTEL);
//		setDebug(true);
//	}
//
//	public String getName()
//	{
//		return "Tga";
//	}
//
//	public String getDefaultExtension()
//	{
//		return DEFAULT_EXTENSION;
//	}
//
//	private static final String DEFAULT_EXTENSION = ".tga";
//
//	private static final String ACCEPTED_EXTENSIONS[] = {
//			".tga", ".tpic",
//	};
//
//	protected String[] getAcceptedExtensions()
//	{
//		return ACCEPTED_EXTENSIONS;
//	}
//
//	protected ImageFormat[] getAcceptedTypes()
//	{
//		return new ImageFormat[]{
//			ImageFormat.IMAGE_FORMAT_TGA, //
//		};
//	}
//
//	public IImageMetadata getMetadata(ByteSource byteSource, Map params)
//			throws ImageReadException, IOException
//	{
//		return null;
//	}
//
//	public byte[] getICCProfileBytes(ByteSource byteSource)
//			throws ImageReadException, IOException
//	{
//		return null;
//	}
//
//	private static final int TGA_FILE_HEADER_LENGTH = 18;
//
//	public Dimension getImageSize(ByteSource byteSource)
//			throws ImageReadException, IOException
//	{
////		int length = (int) byteSource.getLength();
////		if (length < TGA_FILE_HEADER_LENGTH)
////			return null;
//
//		InputStream is = byteSource.getInputStream();
//
//		is.skip(12);
//
//		int width = this.read2Bytes("image width", is, "image width");
//		int height = this.read2Bytes("image height", is, "image height");
//
//		return new Dimension(width, height);
//	}
//
//	private static final int TGA_FILE_FOOTER_LENGTH = 26;
//	private static final String TGA_FILE_FOOTER_SIGNATURE = "TRUEVISION-XFILE";
//
//	private final boolean isNewTGAFormat(ByteSource byteSource)
//			throws ImageReadException, IOException
//	{
//		int length = (int) byteSource.getLength();
//		if (length < TGA_FILE_FOOTER_LENGTH)
//			return true;
//
//		InputStream is = byteSource.getInputStream(length
//				- TGA_FILE_FOOTER_LENGTH);
//
//		byte bytes[] = this.readByteArray("tga_file_footer",
//				TGA_FILE_FOOTER_LENGTH, is, "tga_file_footer");
//
//		Debug.debug("bytes", bytes);
//
//		Debug.debug("kTGA_FILE_FOOTER_SIGNATURE", TGA_FILE_FOOTER_SIGNATURE);
//		Debug.debug("kTGA_FILE_FOOTER_SIGNATURE", TGA_FILE_FOOTER_SIGNATURE
//				.length());
//
//		return this.compareByteArrays(bytes, 8, TGA_FILE_FOOTER_SIGNATURE
//				.getBytes(), 0, TGA_FILE_FOOTER_SIGNATURE.length());
//	}
//
//	private static final int TGA_IMAGE_TYPE_NO_IMAGE = 0;
//	private static final int UNCOMPRESSED_COLOR_MAPPED = 1;
//	private static final int UNCOMPRESSED_RGB = 2;
//	private static final int UNCOMPRESSED_BLACK_AND_WHITE = 3;
//	private static final int COMPRESSED_COLOR_MAPPED_RLE = 9;
//	private static final int COMPRESSED_RGB_RLE = 10;
//	private static final int COMPRESSED_BLACK_AND_WHITE = 11;
//	private static final int COMPRESSED_COLOR_MAPPED_DATA_HUFFMAN_DELTA_RLE = 32;
//	private static final int COMPRESSED_COLOR_MAPPED_DATA_RLE = 33;
//
//	public ImageInfo getImageInfo(ByteSource byteSource)
//			throws ImageReadException, IOException
//	{
////		int length = (int) byteSource.getLength();
////		if (length < TGA_FILE_HEADER_LENGTH)
////			return null;
//
//		InputStream is = byteSource.getInputStream();
//
//		int id_string_length = this.readByte("id_string_length", is,
//				"id_string_length");
//		int color_map_type = this.readByte("color_map_type", is,
//				"color_map_type");
//		int image_type = this.readByte("image_type", is, "image_type");
//
//		int color_map_first_entry_index = this.read2Bytes(
//				"color_map_first_entry_index", is,
//				"color_map_first_entry_index");
//		int color_map_length = this.read2Bytes("color_map_length", is,
//				"color_map_length");
//		int color_map_entry_size = this.readByte("color_map_entry_size", is,
//				"color_map_entry_size");
//
//		int origin_x = this.read2Bytes("origin_x", is, "origin_x");
//		int origin_y = this.read2Bytes("origin_y", is, "origin_y");
//
//		int width = this.read2Bytes("image width", is, "image width");
//		int height = this.read2Bytes("image height", is, "image height");
//
//		int pixel_depth = this.readByte("pixel_depth", is, "pixel_depth");
//		int image_descriptor = this.readByte("image_descriptor", is,
//				"image_descriptor");
//		// charles
//
//		switch (image_type)
//		{
//			case UNCOMPRESSED_COLOR_MAPPED :
//				break;
//			case UNCOMPRESSED_RGB :
//				break;
//			case UNCOMPRESSED_BLACK_AND_WHITE :
//				break;
//			case COMPRESSED_COLOR_MAPPED_RLE :
//				break;
//			case COMPRESSED_RGB_RLE :
//				break;
//			case COMPRESSED_BLACK_AND_WHITE :
//				break;
//			case COMPRESSED_COLOR_MAPPED_DATA_HUFFMAN_DELTA_RLE :
//				break;
//			case COMPRESSED_COLOR_MAPPED_DATA_RLE :
//				break;
//
//			default :
//
//		}
//		String FormatDetails;
//		int BitsPerPixel;
//		ArrayList Comments;
//		ImageFormat Format = ImageFormat.IMAGE_FORMAT_TGA;
//		String FormatName = Format.name;
//		String MimeType = "image/tga";
//		int NumberOfImages = 1; // charles could have thumbnail(s).
//		int PhysicalHeightDpi;
//		float PhysicalHeightInch;
//		int PhysicalWidthDpi;
//		float PhysicalWidthInch;
//		boolean isProgressive = false;
//		boolean isTransparent = pixel_depth > 24;
//		boolean usesPalette;
//		int ColorType;
//
//		return null;
//		//		return new ImageInfo(FormatDetails, BitsPerPixel, Comments, Format,
//		//				FormatName, height, MimeType, NumberOfImages,
//		//				PhysicalHeightDpi, PhysicalHeightInch, PhysicalWidthDpi,
//		//				PhysicalWidthInch, width, isProgressive, isTransparent,
//		//				usesPalette, ColorType);
//
//		//		boolean is_new_tga_format = isNewTGAFormat(byteSource);
//		//		
//		//		Debug.debug("is_new_tga_format", is_new_tga_format);
//	}
//
//	public boolean dumpImageFile(PrintWriter pw, ByteSource byteSource)
//			throws ImageReadException, IOException
//	{
//		return false;
//	}
//
//	public BufferedImage getBufferedImage(ByteSource byteSource, Map params)
//			throws ImageReadException, IOException
//	{
//		return null;
//	}
//
//	//	public void writeImage(BufferedImage src, OutputStream os, Map params)
//	//			throws ImageWriteException, IOException
//	//	{
//	//		return false;
//	//	}
//
//	public boolean embedICCProfile(File src, File dst, byte profile[])
//	{
//		return false;
//	}
//
//}