// Copyright 2007 The Closure Library Authors. All Rights Reserved.
//
// 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.

/**
 * @fileoverview Emoji implementation.
 *
 */

goog.provide('goog.ui.emoji.Emoji');



/**
 * Creates an emoji.
 *
 * A simple wrapper for an emoji.
 *
 * @param {string} url URL pointing to the source image for the emoji.
 * @param {string} id The id of the emoji, e.g., 'std.1'.
 * @param {number=} opt_height The height of the emoji, if undefined the
 *     natural height of the emoji is used.
 * @param {number=} opt_width The width of the emoji, if undefined the natural
 *     width of the emoji is used.
 * @param {string=} opt_altText The alt text for the emoji image, eg. the
 *     unicode character representation of the emoji.
 * @constructor
 * @final
 */
goog.ui.emoji.Emoji = function(url, id, opt_height, opt_width, opt_altText) {
  /**
   * The URL pointing to the source image for the emoji
   *
   * @type {string}
   * @private
   */
  this.url_ = url;

  /**
   * The id of the emoji
   *
   * @type {string}
   * @private
   */
  this.id_ = id;

  /**
   * The height of the emoji
   *
   * @type {?number}
   * @private
   */
  this.height_ = opt_height || null;

  /**
   * The width of the emoji
   *
   * @type {?number}
   * @private
   */
  this.width_ = opt_width || null;

  /**
   * The unicode of the emoji
   *
   * @type {?string}
   * @private
   */
  this.altText_ = opt_altText || null;
};


/**
 * The name of the goomoji attribute, used for emoji image elements.
 * @type {string}
 * @deprecated Use goog.ui.emoji.Emoji.DATA_ATTRIBUTE instead.
 */
goog.ui.emoji.Emoji.ATTRIBUTE = 'goomoji';


/**
 * The name of the goomoji data-attribute, used for emoji image elements. Data
 * attributes are the preferred way in HTML5 to set custom attributes.
 * @type {string}
 */
goog.ui.emoji.Emoji.DATA_ATTRIBUTE = 'data-' + goog.ui.emoji.Emoji.ATTRIBUTE;


/**
 * @return {string} The URL for this emoji.
 */
goog.ui.emoji.Emoji.prototype.getUrl = function() {
  return this.url_;
};


/**
 * @return {string} The id of this emoji.
 */
goog.ui.emoji.Emoji.prototype.getId = function() {
  return this.id_;
};


/**
 * @return {?number} The height of this emoji.
 */
goog.ui.emoji.Emoji.prototype.getHeight = function() {
  return this.height_;
};


/**
 * @return {?number} The width of this emoji.
 */
goog.ui.emoji.Emoji.prototype.getWidth = function() {
  return this.width_;
};


/**
 * @return {?string} The alt text for the emoji image, eg. the unicode character
 *     representation of the emoji.
 */
goog.ui.emoji.Emoji.prototype.getAltText = function() {
  return this.altText_;
};
