Index: src/pdf/SkPDFDevice.cpp |
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp |
index e3134f4ac397ddac9faf50f518a40fe53e74e7db..e90edb1408fa790592e2f0766305eb923e72d3b6 100644 |
--- a/src/pdf/SkPDFDevice.cpp |
+++ b/src/pdf/SkPDFDevice.cpp |
@@ -648,8 +648,16 @@ private: |
void init(const SkClipStack* clipStack, const SkRegion& clipRegion, |
const SkMatrix& matrix, const SkPaint& paint, bool hasText) { |
fDstFormXObject = NULL; |
- // Shape has to be flatten before we get here. |
- NOT_IMPLEMENTED(!matrix.hasPerspective(), false); |
+ if (matrix.hasPerspective() || |
+ (paint.getShader() && |
+ paint.getShader()->getLocalMatrix().hasPerspective())) { |
+ // Just report that PDF does not supports perspective |
+ // TODO(edisonn): update the shape when possible |
+ // or dump in an image otherwise |
+ NOT_IMPLEMENTED(true, false); |
+ return; |
+ } |
+ |
if (paint.getXfermode()) { |
paint.getXfermode()->asMode(&fXfermode); |
} |
@@ -697,8 +705,9 @@ SkPDFDevice::SkPDFDevice(const SkISize& pageSize, const SkISize& contentSize, |
fLastMarginContentEntry(NULL), |
fClipStack(NULL), |
fEncoder(NULL) { |
- // Just report that PDF does not supports perspective in the |
- // initial transform. |
+ // just report that PDF does not supports perspective |
+ // TODO(edisonn): update the shape when possible |
+ // or dump in an image otherwise |
NOT_IMPLEMENTED(initialTransform.hasPerspective(), true); |
// Skia generally uses the top left as the origin but PDF natively has the |