blob: 153947cc9c14f87b7cf98ffc18893440597c83f1 [file] [log] [blame]
/*
* Copyright 1999-2005 The Apache Software Foundation.
*
* Licensed 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.
*/
/* $Id$ */
package org.apache.fop.image;
import java.io.InputStream;
import java.awt.color.ColorSpace;
import java.awt.color.ICC_Profile;
import java.awt.Color;
/**
* Fop image interface for loading images.
*
* @author Eric SCHAEFFER
*/
public interface FopImage {
/**
* Flag for loading dimensions.
*/
public static final int DIMENSIONS = 1;
/**
* Flag for loading original data.
*/
public static final int ORIGINAL_DATA = 2;
/**
* Flag for loading bitmap data.
*/
public static final int BITMAP = 4;
/**
* Get the mime type of this image.
* This is used so that when reading from the image it knows
* what type of image it is.
*
* @return the mime type string
*/
String getMimeType();
/**
* Load particular inforamtion for this image
* This must be called before attempting to get
* the information.
*
* @param type the type of loading required
* @return boolean true if the information could be loaded
*/
boolean load(int type);
/**
* Returns the image width.
* @return the width in pixels
*/
int getWidth();
/**
* Returns the image height.
* @return the height in pixels
*/
int getHeight();
/**
* @return the intrinsic image width (in millipoints)
*/
int getIntrinsicWidth();
/**
* @return the intrinsic image width (in millipoints)
*/
int getIntrinsicHeight();
/**
* @return the horizontal bitmap resolution (in dpi)
*/
double getHorizontalResolution();
/**
* @return the vertical bitmap resolution (in dpi)
*/
double getVerticalResolution();
/**
* Returns the color space of the image.
* @return the color space
*/
ColorSpace getColorSpace();
/**
* Returns the ICC profile.
* @return the ICC profile, null if none is available
*/
ICC_Profile getICCProfile();
/**
* Returns the number of bits per pixel for the image.
* @return the number of bits per pixel
*/
int getBitsPerPixel();
/**
* Indicates whether the image is transparent.
* @return True if it is transparent
*/
boolean isTransparent();
/**
* For transparent images. Returns the transparent color.
* @return the transparent color
*/
Color getTransparentColor();
/**
* Indicates whether the image has a Soft Mask (See section 7.5.4 in the
* PDF specs)
* @return True if a Soft Mask exists
*/
boolean hasSoftMask();
/**
* For images with a Soft Mask. Returns the Soft Mask as an array.
* @return the Soft Mask
*/
byte[] getSoftMask();
/**
* Returns the decoded and uncompressed image as a array of
* width * height * [colorspace-multiplicator] pixels.
* @return the bitmap
*/
byte[] getBitmaps();
/**
* Returns the size of the image.
* width * (bitsPerPixel / 8) * height, no ?
* @return the size
*/
int getBitmapsSize();
/**
* Returns the encoded/compressed image as an array of bytes.
* @return the raw image
*/
byte[] getRessourceBytes();
/**
* Returns the number of bytes of the raw image.
* @return the size in bytes
*/
int getRessourceBytesSize();
/**
* Image info class.
* Information loaded from analyser and passed to image object.
*/
public static class ImageInfo {
/** InputStream to load the image from */
public InputStream inputStream;
/** image width (in pixels) */
public int width;
/** image height (in pixels) */
public int height;
/** horizontal bitmap resolution (in dpi) */
public double dpiHorizontal = 72.0f;
/** vertical bitmap resolution (in dpi) */
public double dpiVertical = 72.0f;
/** implementation-specific data object (ex. a SVG DOM for SVG images) */
public Object data;
/** MIME type of the image */
public String mimeType;
/** implementation-specific String (ex. the namespace for XML-based images) */
public String str;
}
}