diff options
Diffstat (limited to 'awt/java/awt/Image.java')
| -rw-r--r-- | awt/java/awt/Image.java | 203 |
1 files changed, 203 insertions, 0 deletions
diff --git a/awt/java/awt/Image.java b/awt/java/awt/Image.java new file mode 100644 index 0000000..c217e38 --- /dev/null +++ b/awt/java/awt/Image.java @@ -0,0 +1,203 @@ +/* + * 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. + */ +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 + * alghorithm. + * + * @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 reconstructered 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; + } +} + + |
