001    package com.google.gwt.maps.client.overlays;
002    
003    import com.google.gwt.core.client.JavaScriptObject;
004    import com.google.gwt.maps.client.base.Point;
005    import com.google.gwt.maps.client.base.Size;
006    
007    /**
008     * A structure representing a Marker icon or shadow image.
009     * <br><br>
010     * See <a href="https://developers.google.com/maps/documentation/javascript/reference#MarkerImage">MarkerImage API Doc</a>
011     */
012    public class MarkerImage extends JavaScriptObject {
013    
014      /**
015       * A structure representing a Marker icon or shadow image.
016       */
017      protected MarkerImage() {}
018      
019      /**
020       * creates A structure representing a Marker icon or shadow image.
021       * @param url The URL of the image or sprite sheet.
022       * @return {@link MarkerImage}
023       */
024      public final static MarkerImage newInstance(String url) {
025        return createJso(url).cast();
026      }
027      
028      /**
029       * creates A structure representing a Marker icon or shadow image.
030       * @param url The URL of the image or sprite sheet.
031       * @param size The display size of the sprite or image. When using sprites, you must specify the sprite size. If the size is not provided, it will be set when the image loads.
032       * @return {@link MarkerImage}
033       */
034      public final static MarkerImage newInstance(String url, Size size) {
035        return createJso(url, size).cast();
036      }
037      
038      /**
039       * creates A structure representing a Marker icon or shadow image.
040       * @param url The URL of the image or sprite sheet.
041       * @param size The display size of the sprite or image. When using sprites, you must specify the sprite size. If the size is not provided, it will be set when the image loads.
042       * @param origin The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image (0, 0).
043       * @return {@link MarkerImage}
044       */
045      public final static MarkerImage newInstance(String url, Size size, Point origin) {
046        return createJso(url, size, origin).cast();
047      }
048      
049      /**
050       * creates A structure representing a Marker icon or shadow image.
051       * @param url The URL of the image or sprite sheet.
052       * @param size The display size of the sprite or image. When using sprites, you must specify the sprite size. If the size is not provided, it will be set when the image loads.
053       * @param origin The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image (0, 0).
054       * @param anchor The position at which to anchor an image in correspondance to the location of the marker on the map. By default, the anchor is located along the center point of the bottom of the image.
055       * @return {@link MarkerImage}
056       */
057      public final static MarkerImage newInstance(String url, Size size, Point origin, Point anchor) {
058        return createJso(url, size, origin, anchor).cast();
059      }
060      
061      /**
062       * creates A structure representing a Marker icon or shadow image.
063       * @param url The URL of the image or sprite sheet.
064       * @param size The display size of the sprite or image. When using sprites, you must specify the sprite size. If the size is not provided, it will be set when the image loads.
065       * @param origin The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image (0, 0).
066       * @param anchor The position at which to anchor an image in correspondance to the location of the marker on the map. By default, the anchor is located along the center point of the bottom of the image.
067       * @param scaledSize The size of the entire image after scaling, if any. Use this property to stretch/shrink an image or a sprite.
068       * @return {@link MarkerImage}
069       */
070      public final static MarkerImage newInstance(String url, Size size, Point origin, Point anchor, Size scaledSize) {
071        return createJso(url, size, origin, anchor, scaledSize).cast();
072      }
073      
074      private final static native JavaScriptObject createJso(String url) /*-{
075        return new $wnd.google.maps.MarkerImage(url);
076      }-*/;
077      
078      private final static native JavaScriptObject createJso(String url, Size size) /*-{
079        return new $wnd.google.maps.MarkerImage(url, size);
080      }-*/;
081      
082      private final static native JavaScriptObject createJso(String url, Size size, Point origin) /*-{
083        return new $wnd.google.maps.MarkerImage(url, size, origin);
084      }-*/;
085      
086      private final static native JavaScriptObject createJso(String url, Size size, Point origin, Point anchor) /*-{
087        return new $wnd.google.maps.MarkerImage(url, size, origin, anchor);
088      }-*/;
089      
090      private final static native JavaScriptObject createJso(String url, Size size, Point origin, Point anchor, Size scaledSize) /*-{
091        return new $wnd.google.maps.MarkerImage(url, size, origin, anchor, scaledSize);
092      }-*/;
093      
094      /**
095       * sets The position at which to anchor an image in correspondance to the location of the marker on the map. By default, the anchor is located along the center point of the bottom of the image.
096       * @param anchor
097       */
098      public final native void setAnchor(Point anchor) /*-{
099        this.anchor = anchor;
100      }-*/;
101      
102      /**
103       * gets The position at which to anchor an image in correspondance to the location of the marker on the map. By default, the anchor is located along the center point of the bottom of the image.
104       */
105      public final native Point getAnchor() /*-{
106        return this.anchor;
107      }-*/;
108      
109      /**
110       * sets The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image (0, 0).
111       * @param origin
112       */
113      public final native void setOrigin(Point origin) /*-{
114        this.origin = origin;
115      }-*/;
116      
117      /**
118       * gets The position of the image within a sprite, if any. By default, the origin is located at the top left corner of the image (0, 0).
119       */
120      public final native Point getOrigin() /*-{
121        return this.origin;
122      }-*/;
123      
124      /**
125       * sets The size of the entire image after scaling, if any. Use this property to stretch/shrink an image or a sprite.
126       * @param scaledSize
127       */
128      public final native void setScaledSize(Size scaledSize) /*-{
129        this.scaledSize = scaledSize;
130      }-*/;
131      
132      /**
133       * gets The size of the entire image after scaling, if any. Use this property to stretch/shrink an image or a sprite.
134       */
135      public final native Size getScaledSize() /*-{
136        return this.scaledSize;
137      }-*/;
138      
139      /**
140       * sets The display size of the sprite or image. When using sprites, you must specify the sprite size. If the size is not provided, it will be set when the image loads.
141       * @param size
142       */
143      public final native void setSize(Size size) /*-{
144        this.size = size;
145      }-*/;
146      
147      /**
148       * gets The display size of the sprite or image. When using sprites, you must specify the sprite size. If the size is not provided, it will be set when the image loads.
149       */
150      public final native Size getSize() /*-{
151        return this.size;
152      }-*/;
153      
154      /**
155       * sets The URL of the image or sprite sheet.
156       * @param url
157       */
158      public final native void setUrl(String url) /*-{
159        this.url = url;
160      }-*/;
161      
162      /**
163       * gets The URL of the image or sprite sheet.
164       */
165      public final native String getUrl() /*-{
166        return this.url;
167      }-*/;
168      
169    }