| /* |
| * 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. |
| */ |
| /** |
| * @author Igor V. Stolyarov |
| * @version $Revision$ |
| */ |
| |
| package java.awt; |
| |
| import java.awt.image.AreaAveragingScaleFilter; |
| import java.awt.image.FilteredImageSource; |
| import java.awt.image.ImageFilter; |
| import java.awt.image.ImageObserver; |
| import java.awt.image.ImageProducer; |
| import java.awt.image.ReplicateScaleFilter; |
| |
| import org.apache.harmony.awt.internal.nls.Messages; |
| |
| /** |
| * The Image abstract class represents the graphic images. |
| * |
| * @since Android 1.0 |
| */ |
| public abstract class Image { |
| |
| /** |
| * The UndefinedProperty object should be returned if property is not |
| * defined for a particular image. |
| */ |
| public static final Object UndefinedProperty = new Object(); // $NON-LOCK-1$ |
| |
| /** |
| * The Constant SCALE_DEFAULT indicates the default image scaling algorithm. |
| */ |
| public static final int SCALE_DEFAULT = 1; |
| |
| /** |
| * The Constant SCALE_FAST indicates an image scaling algorithm which places |
| * a higher priority on scaling speed than on the image's smoothness. |
| */ |
| public static final int SCALE_FAST = 2; |
| |
| /** |
| * The Constant SCALE_SMOOTH indicates an image scaling algorithm which |
| * places a higher priority on image smoothness than on scaling speed. |
| */ |
| public static final int SCALE_SMOOTH = 4; |
| |
| /** |
| * The Constant SCALE_REPLICATE indicates the image scaling algorithm in the |
| * ReplicateScaleFilter class. |
| */ |
| public static final int SCALE_REPLICATE = 8; |
| |
| /** |
| * The Constant SCALE_AREA_AVERAGING indicates the area averaging image |
| * scaling algorithm. |
| */ |
| public static final int SCALE_AREA_AVERAGING = 16; |
| |
| /** |
| * The acceleration priority indicates image acceleration. |
| */ |
| protected float accelerationPriority = 0.5f; |
| |
| /** |
| * The Constant capabilities. |
| */ |
| private static final ImageCapabilities capabilities = new ImageCapabilities(false); |
| |
| /** |
| * Gets the image property with the specified name. The UndefinedProperty |
| * object should be return if the property is not specified for this image. |
| * The return value should be null if the property is currently unknown yet |
| * and the specified ImageObserver is to be notified later. |
| * |
| * @param name |
| * the name of image's property. |
| * @param observer |
| * the ImageObserver. |
| * @return the Object which represents value of the specified property. |
| */ |
| public abstract Object getProperty(String name, ImageObserver observer); |
| |
| /** |
| * Gets the ImageProducer object which represents data of this Image. |
| * |
| * @return the ImageProducer object which represents data of this Image. |
| */ |
| public abstract ImageProducer getSource(); |
| |
| /** |
| * Gets the width of this image. The specified ImageObserver object is |
| * notified when the width of this image is available. |
| * |
| * @param observer |
| * the ImageObserver object which is is notified when the width |
| * of this image is available. |
| * @return the width of image, or -1 if the width of this image is not |
| * available. |
| */ |
| public abstract int getWidth(ImageObserver observer); |
| |
| /** |
| * Gets the height of this image. The specified ImageObserver object is |
| * notified when the height of this image is available. |
| * |
| * @param observer |
| * the ImageObserver object which is is notified when the height |
| * of this image is available. |
| * @return the height of image, or -1 if the height of this image is not |
| * available. |
| */ |
| public abstract int getHeight(ImageObserver observer); |
| |
| /** |
| * Gets the scaled instance of this Image. This method returns an Image |
| * object constructed from the source of this image with the specified |
| * width, height, and applied scaling algorithm. |
| * |
| * @param width |
| * the width of scaled Image. |
| * @param height |
| * the height of scaled Image. |
| * @param hints |
| * the constant which indicates scaling algorithm. |
| * @return the scaled Image. |
| */ |
| public Image getScaledInstance(int width, int height, int hints) { |
| ImageFilter filter; |
| if ((hints & (SCALE_SMOOTH | SCALE_AREA_AVERAGING)) != 0) { |
| filter = new AreaAveragingScaleFilter(width, height); |
| } else { |
| filter = new ReplicateScaleFilter(width, height); |
| } |
| ImageProducer producer = new FilteredImageSource(getSource(), filter); |
| return Toolkit.getDefaultToolkit().createImage(producer); |
| } |
| |
| /** |
| * Gets a Graphics object for rendering this image. This method can be used |
| * for off-screen images. |
| * |
| * @return a Graphics object for rendering to this image. |
| */ |
| public abstract Graphics getGraphics(); |
| |
| /** |
| * Flushes resources which are used by this Image object. This method resets |
| * the image to the reconstructed state from the image's source. |
| */ |
| public abstract void flush(); |
| |
| /** |
| * Gets the acceleration priority of this image. |
| * |
| * @return the acceleration priority of this image. |
| */ |
| public float getAccelerationPriority() { |
| return accelerationPriority; |
| } |
| |
| /** |
| * Sets the acceleration priority for this image. |
| * |
| * @param priority |
| * the new acceleration priority (value in the range 0-1). |
| */ |
| public void setAccelerationPriority(float priority) { |
| if (priority < 0 || priority > 1) { |
| // awt.10A=Priority must be a value between 0 and 1, inclusive |
| throw new IllegalArgumentException(Messages.getString("awt.10A")); //$NON-NLS-1$ |
| } |
| accelerationPriority = priority; |
| } |
| |
| /** |
| * Gets an ImageCapabilities object of this Image object for the specified |
| * GraphicsConfiguration. |
| * |
| * @param gc |
| * the specified GraphicsConfiguration object (null value means |
| * default GraphicsConfiguration). |
| * @return an ImageCapabilities object of this Image object for the |
| * specified GraphicsConfiguration. |
| */ |
| public ImageCapabilities getCapabilities(GraphicsConfiguration gc) { |
| // Note: common image is not accelerated. |
| return capabilities; |
| } |
| } |