am 595b5bdf: am 603ce559: Merge "Apply ComposeShader\'s local matrix to children" into jb-mr2-dev

* commit '595b5bdf08ab315898b4af0c5c7033a912e004f7':
  Apply ComposeShader's local matrix to children
This commit is contained in:
Romain Guy
2013-03-19 02:37:23 +00:00
committed by Android Git Automerger
2 changed files with 19 additions and 4 deletions

View File

@@ -411,8 +411,14 @@ void SkiaComposeShader::describe(ProgramDescription& description, const Extensio
void SkiaComposeShader::setupProgram(Program* program, const mat4& modelView,
const Snapshot& snapshot, GLuint* textureUnit) {
mFirst->setupProgram(program, modelView, snapshot, textureUnit);
mSecond->setupProgram(program, modelView, snapshot, textureUnit);
// Apply this compose shader's local transform and pass it down to
// the child shaders. They will in turn apply their local transform
// to this matrix.
mat4 transform;
computeScreenSpaceMatrix(transform, modelView);
mFirst->setupProgram(program, transform, snapshot, textureUnit);
mSecond->setupProgram(program, transform, snapshot, textureUnit);
}
}; // namespace uirenderer

View File

@@ -57,6 +57,7 @@ public class MoreShadersActivity extends Activity {
private Paint mLargePaint;
private BitmapShader mScaled2Shader;
private ColorFilter mColorFilter;
private final Matrix mMtx1;
ShadersView(Context c) {
super(c);
@@ -70,7 +71,7 @@ public class MoreShadersActivity extends Activity {
mScaledShader = new BitmapShader(texture, Shader.TileMode.MIRROR,
Shader.TileMode.MIRROR);
Matrix m2 = new Matrix();
m2.setScale(0.5f, 0.5f);
m2.setScale(0.1f, 0.1f);
mScaledShader.setLocalMatrix(m2);
mScaled2Shader = new BitmapShader(texture, Shader.TileMode.MIRROR,
@@ -81,12 +82,20 @@ public class MoreShadersActivity extends Activity {
mHorGradient = new LinearGradient(0.0f, 0.0f, mDrawWidth, 0.0f,
Color.RED, 0x7f00ff00, Shader.TileMode.CLAMP);
Matrix m4 = new Matrix();
m4.setScale(0.5f, 0.5f);
mHorGradient.setLocalMatrix(m4);
mVertGradient = new LinearGradient(0.0f, 0.0f, 0.0f, mDrawHeight / 2.0f,
Color.YELLOW, Color.MAGENTA, Shader.TileMode.MIRROR);
mComposeShader = new ComposeShader(mScaledShader, mHorGradient,
PorterDuff.Mode.SRC_OVER);
mMtx1 = new Matrix();
mMtx1.setTranslate(mTexWidth / 2.0f, mTexHeight / 2.0f);
mMtx1.postRotate(45, 0, 0);
mComposeShader.setLocalMatrix(mMtx1);
mCompose2Shader = new ComposeShader(mHorGradient, mScaledShader,
PorterDuff.Mode.SRC_OUT);