Chromium Code Reviews| Index: src/gpu/GrAARectRenderer.cpp |
| =================================================================== |
| --- src/gpu/GrAARectRenderer.cpp (revision 9269) |
| +++ src/gpu/GrAARectRenderer.cpp (working copy) |
| @@ -10,6 +10,7 @@ |
| #include "GrGpu.h" |
| #include "gl/GrGLEffect.h" |
| #include "GrTBackendEffectFactory.h" |
| +#include "SkColorPriv.h" |
| SK_DEFINE_INST_COUNT(GrAARectRenderer) |
| @@ -389,6 +390,9 @@ |
| GrPoint* fan0Pos = reinterpret_cast<GrPoint*>(verts); |
| GrPoint* fan1Pos = reinterpret_cast<GrPoint*>(verts + 4 * vsize); |
| + SkScalar inset = SkMinScalar(devRect.width(), SK_Scalar1); |
| + inset = SK_ScalarHalf * SkMinScalar(inset, devRect.height()); |
| + |
| if (combinedMatrix.rectStaysRect()) { |
| // Temporarily #if'ed out. We don't want to pass in the devRect but |
| // right now it is computed in GrContext::apply_aa_to_rect and we don't |
| @@ -399,7 +403,7 @@ |
| #endif |
| set_inset_fan(fan0Pos, vsize, devRect, -SK_ScalarHalf, -SK_ScalarHalf); |
| - set_inset_fan(fan1Pos, vsize, devRect, SK_ScalarHalf, SK_ScalarHalf); |
| + set_inset_fan(fan1Pos, vsize, devRect, inset, inset); |
| } else { |
| // compute transformed (1, 0) and (0, 1) vectors |
| SkVector vec[2] = { |
| @@ -443,11 +447,27 @@ |
| *reinterpret_cast<GrColor*>(verts + i * vsize) = 0; |
| } |
| + int scale; |
| + if (inset < SK_ScalarHalf) { |
| + scale = SkScalarFloorToInt(512.0f * inset / (inset + SK_ScalarHalf)); |
| + SkASSERT(scale >= 0 && scale <= 255); |
| + } else { |
| + scale = 0xff; |
| + } |
| + |
| GrColor innerColor; |
| if (useVertexCoverage) { |
| - innerColor = 0xffffffff; |
| + innerColor = scale | (scale << 8) | (scale << 16) | (scale << 24); |
| } else { |
| - innerColor = target->getDrawState().getColor(); |
| + if (0xff == scale) { |
| + innerColor = target->getDrawState().getColor(); |
| + } else { |
| + GrColor temp = target->getDrawState().getColor(); |
| + innerColor = GrColorPackRGBA(SkAlphaMul(GrColorUnpackR(temp), scale), |
|
bsalomon
2013/05/24 18:42:01
Is this the same as SkColor2GrColor(SkAlphaMulQ(te
robertphillips
2013/05/24 19:20:20
Maybe ... done.
|
| + SkAlphaMul(GrColorUnpackG(temp), scale), |
| + SkAlphaMul(GrColorUnpackB(temp), scale), |
| + SkAlphaMul(GrColorUnpackA(temp), scale)); |
| + } |
| } |
| verts += 4 * vsize; |