lib/functions/rgba.js
function rgba(red, green, blue, alpha){
  switch (arguments.length) {
    case 1:
      utils.assertColor(red);
      return red.rgba;
    case 2:
      utils.assertColor(red);
      var color = red.rgba;
      utils.assertType(green, 'unit', 'alpha');
      alpha = green.clone();
      if ('%' == alpha.type) alpha.val /= 100;
      return new nodes.RGBA(
          color.r
        , color.g
        , color.b
        , alpha.val);
    default:
      utils.assertType(red, 'unit', 'red');
      utils.assertType(green, 'unit', 'green');
      utils.assertType(blue, 'unit', 'blue');
      utils.assertType(alpha, 'unit', 'alpha');
      var r = '%' == red.type ? Math.round(red.val * 2.55) : red.val
        , g = '%' == green.type ? Math.round(green.val * 2.55) : green.val
        , b = '%' == blue.type ? Math.round(blue.val * 2.55) : blue.val;

      alpha = alpha.clone();
      if (alpha && '%' == alpha.type) alpha.val /= 100;
      return new nodes.RGBA(
          r
        , g
        , b
        , alpha.val);
  }
}
function rgba(red, green, blue, alpha){
  switch (arguments.length) {
    case 1:
      utils.assertColor(red);
      return red.rgba;
    case 2:
      utils.assertColor(red);
      var color = red.rgba;
      utils.assertType(green, 'unit', 'alpha');
      alpha = green.clone();
      if ('%' == alpha.type) alpha.val /= 100;
      return new nodes.RGBA(
          color.r
        , color.g
        , color.b
        , alpha.val);
    default:
      utils.assertType(red, 'unit', 'red');
      utils.assertType(green, 'unit', 'green');
      utils.assertType(blue, 'unit', 'blue');
      utils.assertType(alpha, 'unit', 'alpha');
      var r = '%' == red.type ? Math.round(red.val * 2.55) : red.val
        , g = '%' == green.type ? Math.round(green.val * 2.55) : green.val
        , b = '%' == blue.type ? Math.round(blue.val * 2.55) : blue.val;

      alpha = alpha.clone();
      if (alpha && '%' == alpha.type) alpha.val /= 100;
      return new nodes.RGBA(
          r
        , g
        , b
        , alpha.val);
  }
}
function rgba ( red , green , blue , alpha ) { switch ( arguments . length ) { case 1 : utils . assertColor ( red ) ; return red . rgba ; case 2 : utils . assertColor ( red ) ; var color = red . rgba ; utils . assertType ( green , 'unit' , 'alpha' ) ; alpha = green . clone ( ) ; if ( '%' == alpha . type ) alpha . val /= 100 ; return new nodes . RGBA ( color . r , color . g , color . b , alpha . val ) ; default : utils . assertType ( red , 'unit' , 'red' ) ; utils . assertType ( green , 'unit' , 'green' ) ; utils . assertType ( blue , 'unit' , 'blue' ) ; utils . assertType ( alpha , 'unit' , 'alpha' ) ; var r = '%' == red . type ? Math . round ( red . val * 2.55 ) : red . val , g = '%' == green . type ? Math . round ( green . val * 2.55 ) : green . val , b = '%' == blue . type ? Math . round ( blue . val * 2.55 ) : blue . val ; alpha = alpha . clone ( ) ; if ( alpha && '%' == alpha . type ) alpha . val /= 100 ; return new nodes . RGBA ( r , g , b , alpha . val ) ; } }
Return a `RGBA` from the r,g,b,a channels.

Examples:

rgba(255,0,0,0.5)
// => rgba(255,0,0,0.5)

rgba(255,0,0,1)
// => #ff0000

rgba(#ffcc00, 50%)
// rgba(255,204,0,0.5)

@param {Unit|RGBA|HSLA} red
@param {Unit} green
@param {Unit} blue
@param {Unit} alpha
@return {RGBA}
@api public
Return a RGBA from the r g b a channels .