Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(106)

Unified Diff: src/core/SkComposeShader.cpp

Issue 267923005: remove unneeded SkShader::validContext (Closed) Base URL: https://skia.googlecode.com/svn/trunk
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/core/SkComposeShader.cpp
diff --git a/src/core/SkComposeShader.cpp b/src/core/SkComposeShader.cpp
index df8215c1a223b5449a3b26edf93214faf4978b6a..fef9e3652769d9e5916a80b855e4dc46d1c5d013 100644
--- a/src/core/SkComposeShader.cpp
+++ b/src/core/SkComposeShader.cpp
@@ -73,36 +73,7 @@ void SkComposeShader::flatten(SkWriteBuffer& buffer) const {
buffer.writeFlattenable(fMode);
}
-/* We call validContext/createContext on our two worker shaders.
- However, we always let them see opaque alpha, and if the paint
- really is translucent, then we apply that after the fact.
-
- */
-bool SkComposeShader::validContext(const ContextRec& rec, SkMatrix* totalInverse) const {
- if (!this->INHERITED::validContext(rec, totalInverse)) {
- return false;
- }
-
- // we preconcat our localMatrix (if any) with the device matrix
- // before calling our sub-shaders
-
- SkMatrix tmpM;
- tmpM.setConcat(*rec.fMatrix, this->getLocalMatrix());
-
- ContextRec newRec(rec);
- newRec.fMatrix = &tmpM;
-
- return fShaderA->validContext(newRec) && fShaderB->validContext(newRec);
-}
-
-SkShader::Context* SkComposeShader::createContext(const ContextRec& rec, void* storage) const {
- if (!this->validContext(rec)) {
- return NULL;
- }
-
- // TODO : must fix this to not "cheat" and modify fPaint
scroggo 2014/05/05 14:01:19 Did this get fixed? It seems like this may change
reed1 2014/05/05 15:10:01 Dang, good catch! Fill fix/restore
- SkAutoAlphaRestore restore(const_cast<SkPaint*>(rec.fPaint), 0xFF);
-
+SkShader::Context* SkComposeShader::onCreateContext(const ContextRec& rec, void* storage) const {
char* aStorage = (char*) storage + sizeof(ComposeShaderContext);
char* bStorage = aStorage + fShaderA->contextSize();
@@ -117,11 +88,9 @@ SkShader::Context* SkComposeShader::createContext(const ContextRec& rec, void* s
SkShader::Context* contextA = fShaderA->createContext(newRec, aStorage);
SkShader::Context* contextB = fShaderB->createContext(newRec, bStorage);
-
- // Both functions must succeed; otherwise validContext should have returned
- // false.
- SkASSERT(contextA);
- SkASSERT(contextB);
+ if (!contextA || !contextB) {
scroggo 2014/05/05 14:01:19 If exactly one of these is NULL, we need to call t
reed1 2014/05/05 15:10:01 Doh! Good catch. Will fix.
+ return NULL;
+ }
return SkNEW_PLACEMENT_ARGS(storage, ComposeShaderContext, (*this, rec, contextA, contextB));
}

Powered by Google App Engine
This is Rietveld 408576698