# Source: bemap-model/bemap-icon.js

    /**
     * BeNomad BeMap JavaScript API - Icon class
     */

    /**
     * @classdesc
     * Base class for icon.
     * @public
     * @constructor
     * @param {object} options See below the available values.
     * @param {String} options.src Source of the image. It can be an URL or an folder path.
     * @param {double} options.anchorX .
     * @param {double} options.anchorY .
     * @param {String} options.anchorXUnits Units of the anchorX.
     * @param {String} options.anchorYUnits Units of the anchorY.
     * @param {float} options.opacity a number between 0 and 1 to define the opacity of the icon. 1 to full opacity and 0 to full transparency.
     */
    bemap.Icon = function(options) {
        var opts = options || {};

        /**
         * @type {object}
         * @protected
         */
        this.native = null;

        /**
         * @type {String}
         * @protected
         */
        this.src = opts.src ? opts.src : 'http://openlayers.org/en/v3.18.2/examples/data/icon.png';

        /**
         * @type {double}
         * @protected
         */
        this.width = opts.width ? opts.width : null;

        /**
         * @type {double}
         * @protected
         */
        this.height = opts.height ? opts.height : null;

        /**
         * @type {double}
         * @protected
         */
        this.anchorX = opts.anchorX ? opts.anchorX : 0.5;

        /**
         * @type {double}
         * @protected
         */
        this.anchorY = opts.anchorY ? opts.anchorY : 1;

        /**
         * @type {String}
         * @protected
         */
        this.anchorXUnits = opts.anchorXUnits ? opts.anchorXUnits : 'fraction';

        /**
         * {String}
         * @protected
         */
        this.anchorYUnits = opts.anchorYUnits ? opts.anchorYUnits : 'fraction';

        /**
         * @type {float}
         * @protected
         */
        this.opacity = opts.opacity ? opts.opacity : 0;

        /**
         * @type {float}
         * @protected
         */
        this.scale = opts.scale ? opts.scale : 1;
    };

    /**
     * Return the Source of the image.
     * @public
     * @return {String} Return the source of the image.
     */
    bemap.Icon.prototype.getSrc = function() {
        return this.src;
    };

    /**
     * Set the Source of the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setSrc = function(src) {
        this.src = src;
        return this;
    };

    /**
     * Return the width of the image.
     * @public
     * @return {double} Return the width of the image.
     */
    bemap.Icon.prototype.getWidth = function() {
        return this.width;
    };

    /**
     * Set the width of the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setWidth = function(width) {
        this.width = width;
        return this;
    };

    /**
     * Return the height of the image.
     * @public
     * @return {double} Return the height of the image.
     */
    bemap.Icon.prototype.getHeight = function() {
        return this.height;
    };

    /**
     * Set the height of the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setHeight = function(height) {
        this.height = height;
        return this;
    };

    /**
     * Return the horizontale anchor of the image.
     * @public
     * @return {double} Return the horizontale anchor of the image.
     */
    bemap.Icon.prototype.getAnchorX = function() {
        return this.anchorX;
    };

    /**
     * Set the horizontale anchor of the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setAnchorX = function(anchorX) {
        this.anchorX = anchorX;
        return this;
    };

    /**
     * Return the verticale anchor of the image.
     * @public
     * @return {double} Return the verticale anchor of the image.
     */
    bemap.Icon.prototype.getAnchorY = function() {
        return this.anchorY;
    };

    /**
     * Set the verticale anchor of the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setAnchorY = function(anchorY) {
        this.anchorY = anchorY;
        return this;
    };

    /**
     * Return the units horizontale anchor of the image.
     * @public
     * @return {String} Return the units horizontale anchor of the image.
     */
    bemap.Icon.prototype.getAnchorXUnits = function() {
        return this.anchorXUnits;
    };

    /**
     * Set the horizontale anchor units the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setAnchorXUnits = function(anchorXUnits) {
        this.anchorXUnits = anchorXUnits;
        return this;
    };

    /**
     * Return the units verticale anchor of the image.
     * @public
     * @return {String} Return the units verticale anchor of the image.
     */
    bemap.Icon.prototype.getAnchorYUnits = function() {
        return this.anchorYUnits;
    };

    /**
     * Set the vertical anchor units the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setAnchorYUnits = function(anchorYUnits) {
        this.anchorYUnits = anchorYUnits;
        return this;
    };

    /**
     * Return the opacity the image.
     * @public
     * @return {float} Return the opacity of the image.
     */
    bemap.Icon.prototype.getOpacity = function() {
        return this.opacity;
    };

    /**
     * Set the opacity of the image.
     * @public
     * @return {bemap.Icon} Return this.
     */
    bemap.Icon.prototype.setOpacity = function(opacity) {
        this.opacity = opacity;
        return this;
    };