diff options
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
| -rw-r--r-- | libs/hwui/OpenGLRenderer.cpp | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index b66c898..9f8b87c 100644 --- a/libs/hwui/OpenGLRenderer.cpp +++ b/libs/hwui/OpenGLRenderer.cpp @@ -1978,6 +1978,10 @@ status_t OpenGLRenderer::drawLines(float* points, int count, SkPaint* paint) { // Find the normal to the line vec2 n = (b - a).copyNormalized() * halfStrokeWidth; + float x = n.x; + n.x = -n.y; + n.y = x; + if (isHairLine) { if (isAA) { float wideningFactor; @@ -2002,14 +2006,10 @@ status_t OpenGLRenderer::drawLines(float* points, int count, SkPaint* paint) { float extendedNLength = extendedN.length(); // We need to set this value on the shader prior to drawing - boundaryWidthProportion = extendedNLength / (halfStrokeWidth + extendedNLength); + boundaryWidthProportion = .5 - extendedNLength / (halfStrokeWidth + extendedNLength); n += extendedN; } - float x = n.x; - n.x = -n.y; - n.y = x; - // aa lines expand the endpoint vertices to encompass the AA boundary if (isAA) { vec2 abVector = (b - a); @@ -2593,17 +2593,13 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain mCaches.activeTexture(0); - int alpha; - SkXfermode::Mode mode; - getAlphaAndMode(paint, &alpha, &mode); - - layer->setAlpha(alpha, mode); - if (CC_LIKELY(!layer->region.isEmpty())) { if (layer->region.isRect()) { composeLayerRect(layer, layer->regionRect); } else if (layer->mesh) { - const float a = alpha / 255.0f; + const float a = layer->getAlpha() / 255.0f; + SkiaColorFilter *oldFilter = mColorFilter; + mColorFilter = layer->getColorFilter(); setupDraw(); setupDrawWithTexture(); @@ -2633,6 +2629,8 @@ status_t OpenGLRenderer::drawLayer(Layer* layer, float x, float y, SkPaint* pain finishDrawTexture(); + mColorFilter = oldFilter; + #if DEBUG_LAYERS_AS_REGIONS drawRegionRects(layer->region); #endif |
