diff options
author | Romain Guy <romainguy@google.com> | 2011-03-14 18:16:39 -0700 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2011-03-14 18:16:39 -0700 |
commit | ee7ace065f77b53a57cb6273b9f2f5d85caba90c (patch) | |
tree | f54744657dcd45c37587b454b3abc307755cb724 /core/jni/android | |
parent | a5732aa275273edf9ae91340a440b3f2cd47c682 (diff) | |
parent | 7b5b6abf852c039983eded25ebe43a70fef5a4ab (diff) | |
download | frameworks_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.cpp | 20 |
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, |