summaryrefslogtreecommitdiffstats
path: root/libs/hwui/OpenGLRenderer.cpp
diff options
context:
space:
mode:
authorRomain Guy <romainguy@android.com>2010-07-16 23:13:33 -0700
committerRomain Guy <romainguy@android.com>2010-07-16 23:18:27 -0700
commitf9764a4f532561f6e2e985ff3b25112f1132ce44 (patch)
tree910110cc35d1d3e2a48f000734ec50f6e53ced0f /libs/hwui/OpenGLRenderer.cpp
parent7fac2e18339f765320d759e8d4c090f92431959e (diff)
downloadframeworks_base-f9764a4f532561f6e2e985ff3b25112f1132ce44.zip
frameworks_base-f9764a4f532561f6e2e985ff3b25112f1132ce44.tar.gz
frameworks_base-f9764a4f532561f6e2e985ff3b25112f1132ce44.tar.bz2
Add program for linear gradient.
This change adds a new DrawLinearGradientProgram class to enable the drawing of linear gradients. Two new vertex and fragment shaders are introduced, based on DrawTextureProgram's shaders. Change-Id: I885afc076bb6cef8cd3962ae21a086fa6a03bf96
Diffstat (limited to 'libs/hwui/OpenGLRenderer.cpp')
-rw-r--r--libs/hwui/OpenGLRenderer.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp
index 1431563..731862b 100644
--- a/libs/hwui/OpenGLRenderer.cpp
+++ b/libs/hwui/OpenGLRenderer.cpp
@@ -124,6 +124,7 @@ OpenGLRenderer::OpenGLRenderer():
mDrawColorProgram = new DrawColorProgram;
mDrawTextureProgram = new DrawTextureProgram;
+ mDrawLinearGradientProgram = new DrawLinearGradientProgram;
mCurrentProgram = mDrawTextureProgram;
mShader = kShaderNone;
@@ -521,6 +522,7 @@ void OpenGLRenderer::drawRect(float left, float top, float right, float bottom,
void OpenGLRenderer::resetShader() {
mShader = OpenGLRenderer::kShaderNone;
+ mShaderKey = NULL;
mShaderBlend = false;
mShaderTileX = SkShader::kClamp_TileMode;
mShaderTileY = SkShader::kClamp_TileMode;
@@ -536,9 +538,11 @@ void OpenGLRenderer::setupBitmapShader(SkBitmap* bitmap, SkShader::TileMode tile
mShaderMatrix = matrix;
}
-void OpenGLRenderer::setupLinearGradientShader(float* bounds, uint32_t* colors,
+void OpenGLRenderer::setupLinearGradientShader(SkShader* shader, float* bounds,uint32_t* colors,
float* positions, SkShader::TileMode tileMode, SkMatrix* matrix, bool hasAlpha) {
+ // TODO: We should use a struct to describe each shader
mShader = OpenGLRenderer::kShaderLinearGradient;
+ mShaderKey = shader;
mShaderBlend = hasAlpha;
mShaderTileX = tileMode;
mShaderTileY = tileMode;