code: function () {
          var self = this, id = self._id, prefix = self.classPrefix;
          var icon = self.state.get('icon'), image, text = self.state.get('text'), textHtml = '';
  
          image = self.settings.image;
          if (image) {
            icon = 'none';
  
            // Support for [high dpi, low dpi] image sources
            if (typeof image != "string") {
              image = window.getSelection ? image[0] : image[1];
            }
  
            image = ' style="background-image: url(\'' + image + '\')"';
          } else {
            image = '';
          }
  
          if (text) {
            self.classes.add('btn-has-text');
            textHtml = '<span class="' + prefix + 'txt">' + self.encode(text) + '</span>';
          }
  
          icon = icon ? prefix + 'ico ' + prefix + 'i-' + icon : '';
  
          return (
            '<div id="' + id + '" class="' + self.classes + '" tabindex="-1" aria-labelledby="' + id + '">' +
            '<button role="presentation" type="button" tabindex="-1">' +
            (icon ? '<i class="' + icon + '"' + image + '></i>' : '') +
            textHtml +
            '</button>' +
            '</div>'
          );
        }
docs: Renders the control as a HTML string.
  
  @method renderHtml
  @return {String} HTML representing the control.