diff options
| author | Romain Guy <romainguy@android.com> | 2010-07-16 23:13:33 -0700 |
|---|---|---|
| committer | Romain Guy <romainguy@android.com> | 2010-07-16 23:18:27 -0700 |
| commit | f9764a4f532561f6e2e985ff3b25112f1132ce44 (patch) | |
| tree | 910110cc35d1d3e2a48f000734ec50f6e53ced0f /libs/hwui/OpenGLRenderer.cpp | |
| parent | 7fac2e18339f765320d759e8d4c090f92431959e (diff) | |
| download | frameworks_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.cpp | 6 |
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; |
