Index: src/pdf/SkPDFDevice.cpp |
diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp |
index 736c50b9a6d8b0151ca8fbd7c1f445b545078883..8509de86fc01669fee2b43ab0298286fdb8a50b1 100644 |
--- a/src/pdf/SkPDFDevice.cpp |
+++ b/src/pdf/SkPDFDevice.cpp |
@@ -8,6 +8,7 @@ |
#include "SkPDFDevice.h" |
#include "SkAnnotation.h" |
+#include "SkBitmapDevice.h" |
#include "SkColor.h" |
#include "SkClipStack.h" |
#include "SkData.h" |
@@ -567,6 +568,15 @@ void GraphicStackState::updateDrawingState(const GraphicStateEntry& state) { |
} |
SkBaseDevice* SkPDFDevice::onCreateDevice(const SkImageInfo& info, Usage usage) { |
+ // PDF does not support image filters, so render them on CPU. |
+ // Note that this rendering is done at "screen" resolution (100dpi), not |
+ // printer resolution. |
+ // FIXME: It may be possible to express some filters natively using PDF |
+ // to improve quality and file size (http://skbug.com/3043) |
+ if (kImageFilter_Usage == usage) { |
+ return SkBitmapDevice::Create(info); |
+ } |
+ |
SkMatrix initialTransform; |
initialTransform.reset(); |
SkISize size = SkISize::Make(info.width(), info.height()); |