com.google.gwt.resources.client.ImageResource.java Source code

Java tutorial

Introduction

Here is the source code for com.google.gwt.resources.client.ImageResource.java

Source

/*
 * Copyright 2008 Google Inc.
 * 
 * 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.
 */
package com.google.gwt.resources.client;

import com.google.gwt.resources.ext.DefaultExtensions;
import com.google.gwt.resources.ext.ResourceGeneratorType;
import com.google.gwt.resources.rg.ImageResourceGenerator;
import com.google.gwt.safehtml.shared.SafeUri;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * Provides access to image resources at runtime.
 */
@DefaultExtensions(value = { ".png", ".jpg", ".gif", ".bmp" })
@ResourceGeneratorType(ImageResourceGenerator.class)
public interface ImageResource extends ResourcePrototype {

    /**
     * Specifies additional options to control how an image is bundled.
     */
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.METHOD)
    public @interface ImageOptions {
        /**
         * If <code>true</code>, the image will be flipped about the y-axis when
         * {@link com.google.gwt.i18n.client.LocaleInfo#isRTL()} returns
         * <code>true</code>. This is intended to be used by graphics that are
         * sensitive to layout direction, such as arrows and disclosure indicators.
         */
        boolean flipRtl() default false;

        /**
         * Set to a positive value to override the image's intrinsic height. The
         * image bundling code will scale the image to the desired height. If only
         * one of <code>width</code> or <code>height</code> are set, the aspect
         * ratio of the image will be maintained.
         */
        int height() default -1;

        /**
         * Set to {@code true} to require the ImageResource to be downloaded as a
         * separate resource at runtime. Specifically, this will disable the use of
         * {@code data:} URLs or other bundling optimizations for the image. This
         * can be used for infrequently-displayed images.
         */
        boolean preventInlining() default false;

        /**
         * This option affects the image bundling optimization to allow the image to
         * be used with the {@link CssResource} {@code @sprite} rule where
         * repetition of the image is desired.
         * 
         * @see "CssResource documentation"
         */
        // http://bugs.sun.com/view_bug.do?bug_id=6512707
        RepeatStyle repeatStyle() default com.google.gwt.resources.client.ImageResource.RepeatStyle.None;

        /**
         * Set to a positive value to override the image's intrinsic width. The
         * image bundling code will scale the image to the desired width. If only
         * one of <code>width</code> or <code>height</code> are set, the aspect
         * ratio of the image will be maintained.
         */
        int width() default -1;
    }

    /**
     * Indicates that an ImageResource should be bundled in such a way as to
     * support horizontal or vertical repetition.
     */
    public enum RepeatStyle {
        /**
         * The image is not intended to be tiled.
         */
        None,

        /**
         * The image is intended to be tiled horizontally.
         */
        Horizontal,

        /**
         * The image is intended to be tiled vertically.
         */
        Vertical,

        /**
         * The image is intended to be tiled both horizontally and vertically. Note
         * that this will prevent compositing of the particular image in most cases.
         */
        Both
    }

    /**
     * Returns the height of the image.
     */
    int getHeight();

    /**
     * Returns the horizontal position of the image within the composite image.
     */
    int getLeft();

    /**
     * Returns the URL for the composite image that contains the ImageResource.
     */
    SafeUri getSafeUri();

    /**
     * Returns the vertical position of the image within the composite image.
     */
    int getTop();

    /**
     * Returns the URL for the composite image that contains the ImageResource.
     * 
     * @deprecated Use {@link #getSafeUri()} instead.
     */
    @Deprecated
    String getURL();

    /**
     * Returns the width of the image.
     */
    int getWidth();

    /**
     * Return <code>true</code> if the image contains multiple frames.
     */
    boolean isAnimated();
}