| 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
|
|
|