Chromium Code Reviews| Index: src/pdf/SkPDFDevice.cpp |
| diff --git a/src/pdf/SkPDFDevice.cpp b/src/pdf/SkPDFDevice.cpp |
| index 99f3ce1188d555dc2f797b128e8e66ef40a5f31a..52c8d2a3467c7b0be3dbdb315f954dd229d1bbbb 100644 |
| --- a/src/pdf/SkPDFDevice.cpp |
| +++ b/src/pdf/SkPDFDevice.cpp |
| @@ -566,13 +566,19 @@ void GraphicStackState::updateDrawingState(const GraphicStateEntry& state) { |
| } |
| } |
| -SkBaseDevice* SkPDFDevice::onCreateCompatibleDevice(const CreateInfo& cinfo) { |
| +bool not_supported_for_layers(const SkPaint& layerPaint) { |
|
hal.canary
2015/03/09 20:53:18
static bool not_supported_for_layers(
reed1
2015/03/09 21:03:10
Done.
|
| // 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 == cinfo.fUsage) { |
| + |
| + // TODO: should we return true if there is a colorfilter? |
| + return layerPaint.getImageFilter() != NULL; |
| +} |
| + |
| +SkBaseDevice* SkPDFDevice::onCreateDevice(const CreateInfo& cinfo, const SkPaint* layerPaint) { |
| + if (layerPaint && not_supported_for_layers(*layerPaint)) { |
| return SkBitmapDevice::Create(cinfo.fInfo); |
| } |
| SkISize size = SkISize::Make(cinfo.fInfo.width(), cinfo.fInfo.height()); |