summaryrefslogtreecommitdiffstats
path: root/core/jni/android
diff options
context:
space:
mode:
authorRomain Guy <romainguy@google.com>2011-03-14 18:16:39 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-03-14 18:16:39 -0700
commitee7ace065f77b53a57cb6273b9f2f5d85caba90c (patch)
treef54744657dcd45c37587b454b3abc307755cb724 /core/jni/android
parenta5732aa275273edf9ae91340a440b3f2cd47c682 (diff)
parent7b5b6abf852c039983eded25ebe43a70fef5a4ab (diff)
downloadframeworks_base-ee7ace065f77b53a57cb6273b9f2f5d85caba90c.zip
frameworks_base-ee7ace065f77b53a57cb6273b9f2f5d85caba90c.tar.gz
frameworks_base-ee7ace065f77b53a57cb6273b9f2f5d85caba90c.tar.bz2
Merge "Fix rendering artifact in edge fades. Bug #4092053" into honeycomb-mr1
Diffstat (limited to 'core/jni/android')
-rw-r--r--core/jni/android/graphics/Shader.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/core/jni/android/graphics/Shader.cpp b/core/jni/android/graphics/Shader.cpp
index 0ea8225..7fdad10 100644
--- a/core/jni/android/graphics/Shader.cpp
+++ b/core/jni/android/graphics/Shader.cpp
@@ -119,7 +119,7 @@ static SkShader* LinearGradient_create1(JNIEnv* env, jobject o,
const jint* colorValues = env->GetIntArrayElements(colorArray, NULL);
SkAutoSTMalloc<8, SkScalar> storage(posArray ? count : 0);
- SkScalar* pos = NULL;
+ SkScalar* pos = NULL;
if (posArray) {
AutoJavaFloatArray autoPos(env, posArray, count);
@@ -164,7 +164,11 @@ static SkiaShader* LinearGradient_postCreate1(JNIEnv* env, jobject o, SkShader*
}
} else {
storedPositions[0] = 0.0f;
- storedPositions[1] = 1.0f;
+ const jfloat step = 1.0f / (count - 1);
+ for (size_t i = 1; i < count - 1; i++) {
+ storedPositions[i] = step * i;
+ }
+ storedPositions[count - 1] = 1.0f;
}
SkiaShader* skiaShader = new SkiaLinearGradientShader(storedBounds, storedColors,
@@ -289,7 +293,11 @@ static SkiaShader* RadialGradient_postCreate1(JNIEnv* env, jobject o, SkShader*
}
} else {
storedPositions[0] = 0.0f;
- storedPositions[1] = 1.0f;
+ const jfloat step = 1.0f / (count - 1);
+ for (size_t i = 1; i < count - 1; i++) {
+ storedPositions[i] = step * i;
+ }
+ storedPositions[count - 1] = 1.0f;
}
SkiaShader* skiaShader = new SkiaCircularGradientShader(x, y, radius, storedColors,
@@ -384,7 +392,11 @@ static SkiaShader* SweepGradient_postCreate1(JNIEnv* env, jobject o, SkShader* s
}
} else {
storedPositions[0] = 0.0f;
- storedPositions[1] = 1.0f;
+ const jfloat step = 1.0f / (count - 1);
+ for (size_t i = 1; i < count - 1; i++) {
+ storedPositions[i] = step * i;
+ }
+ storedPositions[count - 1] = 1.0f;
}
SkiaShader* skiaShader = new SkiaSweepGradientShader(x, y, storedColors, storedPositions, count,