Chromium Code Reviews| Index: src/effects/gradients/SkGradientShader.cpp |
| diff --git a/src/effects/gradients/SkGradientShader.cpp b/src/effects/gradients/SkGradientShader.cpp |
| index 21bf8858b54d7fb0b3f4edf8fe4d8504be3c2963..24dd8ab57298a4622b266e879110a2b4149486f0 100644 |
| --- a/src/effects/gradients/SkGradientShader.cpp |
| +++ b/src/effects/gradients/SkGradientShader.cpp |
| @@ -251,6 +251,28 @@ bool SkGradientShaderBase::isOpaque() const { |
| return fColorsAreOpaque; |
| } |
| +static unsigned rndivbyte(unsigned numer, unsigned denom) { |
|
bungeman-skia
2014/08/21 14:15:43
rounded_divide?
It isn't totally clear that the '
reed1
2014/08/21 20:07:39
Done.
|
| + unsigned result = (numer + (denom >> 1)) / denom; |
| + SkASSERT(SkToU8(result) == result); |
| + return result; |
| +} |
| + |
| +bool SkGradientShaderBase::onAsLuminanceColor(SkColor* lum) const { |
| + // we just compute an average color |
| + int r = 0; |
| + int g = 0; |
| + int b = 0; |
| + const int n = fColorCount; |
| + for (int i = 0; i < n; ++i) { |
| + SkColor c = fOrigColors[i]; |
| + r += SkColorGetR(c); |
| + g += SkColorGetG(c); |
| + b += SkColorGetB(c); |
| + } |
| + *lum = SkColorSetRGB(rndivbyte(r, n),rndivbyte(g, n), rndivbyte(b, n)); |
| + return true; |
| +} |
| + |
| SkGradientShaderBase::GradientShaderBaseContext::GradientShaderBaseContext( |
| const SkGradientShaderBase& shader, const ContextRec& rec) |
| : INHERITED(shader, rec) |