toString() {
    function pad(n) {
      return n < 16
        ? '0' + n.toString(16)
        : n.toString(16);
    }

    // special case for transparent named color
    if ('transparent' == this.name)
      return this.name;

    if (1 == this.a) {
      var r = pad(this.r)
        , g = pad(this.g)
        , b = pad(this.b);

      // Compress
      if (r[0] == r[1] && g[0] == g[1] && b[0] == b[1]) {
        return '#' + r[0] + g[0] + b[0];
      } else {
        return '#' + r + g + b;
      }
    } else {
      return 'rgba('
        + this.r + ','
        + this.g + ','
        + this.b + ','
        + (+this.a.toFixed(3)) + ')';
    }
  }
Return #nnnnnn, #nnn, or rgba(n,n,n,n) string representation of the color.

@return {String}
@api public