summaryrefslogtreecommitdiffstats
path: root/libs/hwui
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2012-07-13 12:21:32 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2012-07-13 12:21:32 -0700
commit489041dd4192e594f2180ea7bff705894ab4031d (patch)
treea049cbbf0db529aff9476ce5073f6a69793d83cc /libs/hwui
parent899274ca3921df41796fecd7674cadceef783593 (diff)
parent9c0b188e4231bcb967234f3646c178d22d8a9f50 (diff)
downloadframeworks_base-489041dd4192e594f2180ea7bff705894ab4031d.zip
frameworks_base-489041dd4192e594f2180ea7bff705894ab4031d.tar.gz
frameworks_base-489041dd4192e594f2180ea7bff705894ab4031d.tar.bz2
Merge "Text shadow alpha handling incorrect"
Diffstat (limited to 'libs/hwui')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp20
-rw-r--r--libs/hwui/OpenGLRenderer.h1
2 files changed, 5 insertions, 16 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index a755320..933d012 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -1148,7 +1148,6 @@ void OpenGLRenderer::setupDrawColor(int color) {
void OpenGLRenderer::setupDrawColor(int color, int alpha) {
mColorA = alpha / 255.0f;
- mColorA *= mSnapshot->alpha;
// Second divide of a by 255 is an optimization, allowing us to simply multiply
// the rgb values by a instead of also dividing by 255
const float a = mColorA / 255.0f;
@@ -1180,15 +1179,6 @@ void OpenGLRenderer::setupDrawColor(float r, float g, float b, float a) {
mSetShaderColor = mDescription.setColor(r, g, b, a);
}
-void OpenGLRenderer::setupDrawAlpha8Color(float r, float g, float b, float a) {
- mColorA = a;
- mColorR = r;
- mColorG = g;
- mColorB = b;
- mColorSet = true;
- mSetShaderColor = mDescription.setAlpha8Color(r, g, b, a);
-}
-
void OpenGLRenderer::setupDrawShader() {
if (mShader) {
mShader->describe(mDescription, mCaches.extensions);
@@ -1770,7 +1760,7 @@ void OpenGLRenderer::drawAARect(float left, float top, float right, float bottom
setupDraw();
setupDrawNoTexture();
setupDrawAALine();
- setupDrawColor(color);
+ setupDrawColor(color, ((color >> 24) & 0xFF) * mSnapshot->alpha);
setupDrawColorFilter();
setupDrawShader();
setupDrawBlending(true, mode);
@@ -2266,7 +2256,7 @@ status_t OpenGLRenderer::drawRect(float left, float top, float right, float bott
status_t OpenGLRenderer::drawPosText(const char* text, int bytesCount, int count,
const float* positions, SkPaint* paint) {
if (text == NULL || count == 0 || mSnapshot->isIgnored() ||
- (paint->getAlpha() == 0 && paint->getXfermode() == NULL)) {
+ (paint->getAlpha() * mSnapshot->alpha == 0 && paint->getXfermode() == NULL)) {
return DrawGlInfo::kStatusDone;
}
@@ -2339,7 +2329,7 @@ status_t OpenGLRenderer::drawPosText(const char* text, int bytesCount, int count
status_t OpenGLRenderer::drawText(const char* text, int bytesCount, int count,
float x, float y, SkPaint* paint, float length) {
if (text == NULL || count == 0 || mSnapshot->isIgnored() ||
- (paint->getAlpha() == 0 && paint->getXfermode() == NULL)) {
+ (paint->getAlpha() * mSnapshot->alpha == 0 && paint->getXfermode() == NULL)) {
return DrawGlInfo::kStatusDone;
}
@@ -2392,7 +2382,7 @@ status_t OpenGLRenderer::drawText(const char* text, int bytesCount, int count,
const float sx = oldX - shadow->left + mShadowDx;
const float sy = oldY - shadow->top + mShadowDy;
- const int shadowAlpha = ((mShadowColor >> 24) & 0xFF);
+ const int shadowAlpha = ((mShadowColor >> 24) & 0xFF) * mSnapshot->alpha;
int shadowColor = mShadowColor;
if (mShader) {
shadowColor = 0xffffffff;
@@ -2791,7 +2781,7 @@ void OpenGLRenderer::drawColorRect(float left, float top, float right, float bot
setupDraw();
setupDrawNoTexture();
- setupDrawColor(color);
+ setupDrawColor(color, ((color >> 24) & 0xFF) * mSnapshot->alpha);
setupDrawShader();
setupDrawColorFilter();
setupDrawBlending(mode);
diff --git a/libs/hwui/OpenGLRenderer.h b/libs/hwui/OpenGLRenderer.h
index b342f50..7aac87c 100644
--- a/libs/hwui/OpenGLRenderer.h
+++ b/libs/hwui/OpenGLRenderer.h
@@ -537,7 +537,6 @@ private:
void setupDrawColor(int color, int alpha);
void setupDrawColor(float r, float g, float b, float a);
void setupDrawAlpha8Color(int color, int alpha);
- void setupDrawAlpha8Color(float r, float g, float b, float a);
void setupDrawShader();
void setupDrawColorFilter();
void setupDrawBlending(SkXfermode::Mode mode = SkXfermode::kSrcOver_Mode,