From f9764a4f532561f6e2e985ff3b25112f1132ce44 Mon Sep 17 00:00:00 2001 From: Romain Guy Date: Fri, 16 Jul 2010 23:13:33 -0700 Subject: 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 --- libs/hwui/OpenGLRenderer.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'libs/hwui/OpenGLRenderer.cpp') diff --git a/libs/hwui/OpenGLRenderer.cpp b/libs/hwui/OpenGLRenderer.cpp index 143156331293..731862b1469e 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; -- cgit v1.2.3-59-g8ed1b