From 8aa66b6f76f72b8e0a15323a932436ca462bf14d Mon Sep 17 00:00:00 2001 From: "vandebo@chromium.org" Date: Tue, 17 Apr 2012 20:37:37 +0000 Subject: Revert "[PDF] Handle failures of matrix inversion" while I investigate fixed point failures. This reverts commit r3711 Review URL: https://codereview.appspot.com/6050049 git-svn-id: http://skia.googlecode.com/svn/trunk@3712 2bbb7eff-a529-9590-31e7-b0007b416f81 --- src/pdf/SkPDFShader.cpp | 35 +++++++++++------------------------ 1 file changed, 11 insertions(+), 24 deletions(-) (limited to 'src/pdf/SkPDFShader.cpp') diff --git a/src/pdf/SkPDFShader.cpp b/src/pdf/SkPDFShader.cpp index 3d755ff7c0..3a559ba3d3 100644 --- a/src/pdf/SkPDFShader.cpp +++ b/src/pdf/SkPDFShader.cpp @@ -21,13 +21,12 @@ #include "SkThread.h" #include "SkTypes.h" -static bool transformBBox(const SkMatrix& matrix, SkRect* bbox) { +static void transformBBox(const SkMatrix& matrix, SkRect* bbox) { SkMatrix inverse; if (!matrix.invert(&inverse)) { - return false; + inverse.reset(); } inverse.mapRect(bbox); - return true; } static void unitToPointsMatrix(const SkPoint pts[2], SkMatrix* matrix) { @@ -310,7 +309,7 @@ public: fResources.unrefAll(); } - virtual bool isValid() { return fResources.count() > 0; } + bool isValid() { return fResources.count() > 0; } void getResources(SkTDArray* resourceList) { GetResourcesHelper(&fResources, resourceList); @@ -333,8 +332,6 @@ public: fResources.unrefAll(); } - virtual bool isValid() { return size() > 0; } - void getResources(SkTDArray* resourceList) { GetResourcesHelper(&fResources, resourceList); } @@ -370,24 +367,18 @@ SkPDFObject* SkPDFShader::GetPDFShader(const SkShader& shader, result->ref(); return result; } - - bool valid = false; // The PDFShader takes ownership of the shaderSate. if (shaderState.get()->fType == SkShader::kNone_GradientType) { - SkPDFImageShader* imageShader = - new SkPDFImageShader(shaderState.detach()); - valid = imageShader->isValid(); - result = imageShader; + result = new SkPDFImageShader(shaderState.detach()); } else { SkPDFFunctionShader* functionShader = new SkPDFFunctionShader(shaderState.detach()); - valid = functionShader->isValid(); + if (!functionShader->isValid()) { + delete functionShader; + return NULL; + } result = functionShader; } - if (!valid) { - delete result; - return NULL; - } entry.fPDFShader = result; CanonicalShaders().push(entry); return result; // return the reference that came from new. @@ -481,9 +472,7 @@ SkPDFFunctionShader::SkPDFFunctionShader(SkPDFShader::State* state) finalMatrix.preConcat(fState.get()->fShaderTransform); SkRect bbox; bbox.set(fState.get()->fBBox); - if (!transformBBox(finalMatrix, &bbox)) { - return; - } + transformBBox(finalMatrix, &bbox); SkRefPtr domain = new SkPDFArray; domain->unref(); // SkRefPtr and new both took a reference. @@ -501,7 +490,7 @@ SkPDFFunctionShader::SkPDFFunctionShader(SkPDFShader::State* state) SkShader::GradientInfo twoPointRadialInfo = *info; SkMatrix inverseMapperMatrix; if (!mapperMatrix.invert(&inverseMapperMatrix)) { - return; + inverseMapperMatrix.reset(); } inverseMapperMatrix.mapPoints(twoPointRadialInfo.fPoint, 2); twoPointRadialInfo.fRadius[0] = @@ -536,9 +525,7 @@ SkPDFImageShader::SkPDFImageShader(SkPDFShader::State* state) : fState(state) { finalMatrix.preConcat(fState.get()->fShaderTransform); SkRect surfaceBBox; surfaceBBox.set(fState.get()->fBBox); - if (!transformBBox(finalMatrix, &surfaceBBox)) { - return; - } + transformBBox(finalMatrix, &surfaceBBox); SkMatrix unflip; unflip.setTranslate(0, SkScalarRoundToScalar(surfaceBBox.height())); -- cgit v1.2.3