Skip to content

Commit a2c9f0c

Browse files
mgreterxzyfer
authored andcommitted
Add weight parameter to invert function
Fixes #2072 Closes #2190 Spec sass/sass-spec#1043
1 parent 8191bfa commit a2c9f0c

File tree

1 file changed

+15
-9
lines changed

1 file changed

+15
-9
lines changed

src/functions.cpp

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -285,13 +285,7 @@ namespace Sass {
285285
BUILT_IN(blue)
286286
{ return SASS_MEMORY_NEW(Number, pstate, ARG("$color", Color)->b()); }
287287

288-
Signature mix_sig = "mix($color-1, $color-2, $weight: 50%)";
289-
BUILT_IN(mix)
290-
{
291-
Color_Ptr color1 = ARG("$color-1", Color);
292-
Color_Ptr color2 = ARG("$color-2", Color);
293-
Number_Ptr weight = ARGR("$weight", Number, 0, 100);
294-
288+
Color* colormix(Context& ctx, ParserState& pstate, Color* color1, Color* color2, Number* weight) {
295289
double p = weight->value()/100;
296290
double w = 2*p - 1;
297291
double a = color1->a() - color2->a();
@@ -307,6 +301,16 @@ namespace Sass {
307301
color1->a()*p + color2->a()*(1-p));
308302
}
309303

304+
Signature mix_sig = "mix($color-1, $color-2, $weight: 50%)";
305+
BUILT_IN(mix)
306+
{
307+
Color_Obj color1 = ARG("$color-1", Color);
308+
Color_Obj color2 = ARG("$color-2", Color);
309+
Number_Obj weight = ARGR("$weight", Number, 0, 100);
310+
return colormix(ctx, pstate, &color1, &color2, &weight);
311+
312+
}
313+
310314
////////////////
311315
// HSL FUNCTIONS
312316
////////////////
@@ -596,7 +600,7 @@ namespace Sass {
596600
pstate);
597601
}
598602

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

612+
Number_Obj weight = ARGR("$weight", Number, 0, 100);
608613
Color_Ptr rgb_color = ARG("$color", Color);
609-
return SASS_MEMORY_NEW(Color,
614+
Color_Obj inv = SASS_MEMORY_NEW(Color,
610615
pstate,
611616
255 - rgb_color->r(),
612617
255 - rgb_color->g(),
613618
255 - rgb_color->b(),
614619
rgb_color->a());
620+
return colormix(ctx, pstate, &inv, rgb_color, &weight);
615621
}
616622

617623
////////////////////

0 commit comments

Comments
 (0)