Skip to content

Commit

Permalink
Add weight parameter to invert function
Browse files Browse the repository at this point in the history
Fixes #2072
Closes #2190
Spec sass/sass-spec#1043
  • Loading branch information
mgreter authored and xzyfer committed Dec 30, 2016
1 parent 20b0f9a commit 0d216b5
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions src/functions.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -285,13 +285,7 @@ namespace Sass {
BUILT_IN(blue)
{ return SASS_MEMORY_NEW(Number, pstate, ARG("$color", Color)->b()); }

Signature mix_sig = "mix($color-1, $color-2, $weight: 50%)";
BUILT_IN(mix)
{
Color_Ptr color1 = ARG("$color-1", Color);
Color_Ptr color2 = ARG("$color-2", Color);
Number_Ptr weight = ARGR("$weight", Number, 0, 100);

Color* colormix(Context& ctx, ParserState& pstate, Color* color1, Color* color2, Number* weight) {
double p = weight->value()/100;
double w = 2*p - 1;
double a = color1->a() - color2->a();
Expand All @@ -307,6 +301,16 @@ namespace Sass {
color1->a()*p + color2->a()*(1-p));
}

Signature mix_sig = "mix($color-1, $color-2, $weight: 50%)";
BUILT_IN(mix)
{
Color_Obj color1 = ARG("$color-1", Color);
Color_Obj color2 = ARG("$color-2", Color);
Number_Obj weight = ARGR("$weight", Number, 0, 100);
return colormix(ctx, pstate, &color1, &color2, &weight);

}

////////////////
// HSL FUNCTIONS
////////////////
Expand Down Expand Up @@ -596,7 +600,7 @@ namespace Sass {
pstate);
}

Signature invert_sig = "invert($color)";
Signature invert_sig = "invert($color, $weight: 100%)";
BUILT_IN(invert)
{
// CSS3 filter function overload: pass literal through directly
Expand All @@ -605,13 +609,15 @@ namespace Sass {
return SASS_MEMORY_NEW(String_Quoted, pstate, "invert(" + amount->to_string(ctx.c_options) + ")");
}

Number_Obj weight = ARGR("$weight", Number, 0, 100);
Color_Ptr rgb_color = ARG("$color", Color);
return SASS_MEMORY_NEW(Color,
Color_Obj inv = SASS_MEMORY_NEW(Color,
pstate,
255 - rgb_color->r(),
255 - rgb_color->g(),
255 - rgb_color->b(),
rgb_color->a());
return colormix(ctx, pstate, &inv, rgb_color, &weight);
}

////////////////////
Expand Down

0 comments on commit 0d216b5

Please sign in to comment.