All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.sanselan.formats.tga.TgaImageParser Maven / Gradle / Ivy

The newest version!
/*
 * 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.nawt.Dimension;
import java.nawt.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;

import com.google.code.appengine.awt.Dimension;
import com.google.code.appengine.awt.image.BufferedImage;

/*
 * 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;

//    @Override
//    public final 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;
    }

	@Override
	public ImageInfo getImageInfo(ByteSource byteSource, Map params)
			throws ImageReadException, IOException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public Dimension getImageSize(ByteSource byteSource, Map params)
			throws ImageReadException, IOException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public String getXmpXml(ByteSource byteSource, Map params)
			throws ImageReadException, IOException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public byte[] getICCProfileBytes(ByteSource byteSource, Map params)
			throws ImageReadException, IOException {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public BufferedImage getBufferedImage(ByteSource byteSource, Map params)
			throws ImageReadException, IOException {
		// TODO Auto-generated method stub
		return null;
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy