# Class AbstractMultiResolutionImage

java.lang.Object
java.awt.Image
java.awt.image.AbstractMultiResolutionImage

All Implemented Interfaces:
  `MultiResolutionImage`

Direct Known Subclasses:
  `BaseMultiResolutionImage`

public abstract class AbstractMultiResolutionImage extends Image implements MultiResolutionImage
This class provides default implementations of several `Image` methods for classes that want to implement the `MultiResolutionImage` interface. For example,

    public class CustomMultiResolutionImage extends AbstractMultiResolutionImage {

        final Image[] resolutionVariants;

        public CustomMultiResolutionImage(Image... resolutionVariants) {
             this.resolutionVariants = resolutionVariants;
        }

        public Image getResolutionVariant(
                double destImageWidth, double destImageHeight) {
            // return a resolution variant based on the given destination image size
        }

        public List<Image> getResolutionVariants() {
            return Collections.unmodifiableList(Arrays.asList(resolutionVariants));
        }

        protected Image getBaseImage() {
            return resolutionVariants[0];
        }
    }

Since:
  9
See Also:
  - `Image`
  - `MultiResolutionImage`

## Field Summary

### Fields declared in class Image

`accelerationPriority, SCALE_AREA_AVERAGING, SCALE_DEFAULT, SCALE_FAST, SCALE_REPLICATE, SCALE_SMOOTH, UndefinedProperty`
Modifier and Type
Field
Description
`protected float`
`accelerationPriority`
Priority for accelerating this image.
`static final int`
`SCALE_AREA_AVERAGING`
Use the Area Averaging image scaling algorithm.
`static final int`
`SCALE_DEFAULT`
Use the default image-scaling algorithm.
`static final int`
`SCALE_FAST`
Choose an image-scaling algorithm that gives higher priority to scaling speed than smoothness of the scaled image.
`static final int`
`SCALE_REPLICATE`
Use the image scaling algorithm embodied in the `ReplicateScaleFilter` class.
`static final int`
`SCALE_SMOOTH`
Choose an image-scaling algorithm that gives higher priority to image smoothness than scaling speed.
`static final Object`
`UndefinedProperty`
The `UndefinedProperty` object should be returned whenever a property which was not defined for a particular image is fetched.

## Constructor Summary

Constructors
Modifier
Constructor
Description
`protected`
`AbstractMultiResolutionImage()`
Constructor for subclasses to call.

## Method Summary

Modifier and Type
Method
Description
`protected abstract Image`
`getBaseImage()`
Return the base image representing the best version of the image for rendering at the default width and height.
`Graphics`
`getGraphics()`
As per the contract of the base `Image#getGraphics()` method, this implementation will always throw `UnsupportedOperationException` since only off-screen images can return a `Graphics` object.
`int`
`getHeight(ImageObserver observer)`
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getHeight(observer)`.
`Object`
`getProperty(String name, ImageObserver observer)`
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getProperty(name, observer)`.
`ImageProducer`
`getSource()`
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getSource()`.
`int`
`getWidth(ImageObserver observer)`
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getWidth(observer)`.

### Methods declared in class Image

`flush, getAccelerationPriority, getCapabilities, getScaledInstance, setAccelerationPriority`
Modifier and Type
Method
Description
`void`
`flush()`
Flushes all reconstructable resources being used by this Image object.
`float`
`getAccelerationPriority()`
Returns the current value of the acceleration priority hint.
`ImageCapabilities`
`getCapabilities(GraphicsConfiguration gc)`
Returns an ImageCapabilities object which can be inquired as to the capabilities of this Image on the specified GraphicsConfiguration.
`Image`
`getScaledInstance(int width, int height, int hints)`
Creates a scaled version of this image.
`void`
`setAccelerationPriority(float priority)`
Sets a hint for this image about how important acceleration is.

### Methods declared in class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`
Modifier and Type
Method
Description
`protected Object`
`clone()`
Creates and returns a copy of this object.
`boolean`
`equals(Object obj)`
Indicates whether some other object is "equal to" this one.
`protected void`
`finalize()`
Deprecated, for removal: This API element is subject to removal in a future version.
Finalization is deprecated and subject to removal in a future release.
`final Class<?>`
`getClass()`
Returns the runtime class of this `Object`.
`int`
`hashCode()`
Returns a hash code value for this object.
`final void`
`notify()`
Wakes up a single thread that is waiting on this object's monitor.
`final void`
`notifyAll()`
Wakes up all threads that are waiting on this object's monitor.
`String`
`toString()`
Returns a string representation of the object.
`final void`
`wait()`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted.
`final void`
`wait(long timeoutMillis)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.
`final void`
`wait(long timeoutMillis, int nanos)`
Causes the current thread to wait until it is awakened, typically by being notified or interrupted, or until a certain amount of real time has elapsed.

### Methods declared in interface MultiResolutionImage

`getResolutionVariant, getResolutionVariants`
Modifier and Type
Method
Description
`Image`
`getResolutionVariant(double destImageWidth, double destImageHeight)`
Gets a specific image that is the best variant to represent this logical image at the indicated size.
`List<Image>`
`getResolutionVariants()`
Gets a readable list of all resolution variants.

## Constructor Details

### AbstractMultiResolutionImage

protected AbstractMultiResolutionImage()
Constructor for subclasses to call.

## Method Details

### getWidth

public int getWidth(ImageObserver observer)
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getWidth(observer)`.

Specified by:
  `getWidth` in class `Image`
Parameters:
  `observer` - an object waiting for the image to be loaded.
Returns:
  the width of the base image, or -1 if the width is not yet known
Since:
  9
See Also:
  - `getBaseImage()`

### getHeight

public int getHeight(ImageObserver observer)
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getHeight(observer)`.

Specified by:
  `getHeight` in class `Image`
Parameters:
  `observer` - an object waiting for the image to be loaded.
Returns:
  the height of the base image, or -1 if the height is not yet known
Since:
  9
See Also:
  - `getBaseImage()`

### getSource

public ImageProducer getSource()
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getSource()`.

Specified by:
  `getSource` in class `Image`
Returns:
  the image producer that produces the pixels for the base image
Since:
  9
See Also:
  - `getBaseImage()`

### getGraphics

public Graphics getGraphics()
As per the contract of the base `Image#getGraphics()` method, this implementation will always throw `UnsupportedOperationException` since only off-screen images can return a `Graphics` object.

Specified by:
  `getGraphics` in class `Image`
Returns:
  throws `UnsupportedOperationException`
Throws:
  `UnsupportedOperationException` - this method is not supported
See Also:
  - `Graphics`
  - `Component.createImage(int, int)`

### getProperty

public Object getProperty(String name, ImageObserver observer)
This method simply delegates to the same method on the base image and it is equivalent to: `getBaseImage().getProperty(name, observer)`.

Specified by:
  `getProperty` in class `Image`
Parameters:
  `name` - a property name.
  `observer` - an object waiting for this image to be loaded.
Returns:
  the value of the named property in the base image
Since:
  9
See Also:
  - `getBaseImage()`

### getBaseImage

protected abstract Image getBaseImage()
Return the base image representing the best version of the image for rendering at the default width and height.

Returns:
  the base image of the set of multi-resolution images
Since:
  9