| Index: skia/ext/paint_simplifier.cc
|
| diff --git a/skia/ext/paint_simplifier.cc b/skia/ext/paint_simplifier.cc
|
| index 8df91a888a42cd07eb8c650caa94c570c52b66a7..683f92ec00a1a7828ed1c28a325f282508689a11 100644
|
| --- a/skia/ext/paint_simplifier.cc
|
| +++ b/skia/ext/paint_simplifier.cc
|
| @@ -4,8 +4,23 @@
|
|
|
| #include "skia/ext/paint_simplifier.h"
|
| #include "third_party/skia/include/core/SkPaint.h"
|
| +#include "third_party/skia/include/core/SkShader.h"
|
|
|
| namespace skia {
|
| +namespace {
|
| +
|
| +bool PaintHasBitmap(const SkPaint &paint) {
|
| + SkShader* shader = paint.getShader();
|
| + if (!shader)
|
| + return false;
|
| +
|
| + if (shader->asAGradient(NULL) == SkShader::kNone_GradientType)
|
| + return false;
|
| +
|
| + return shader->asABitmap(NULL, NULL, NULL) != SkShader::kNone_BitmapType;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| PaintSimplifier::PaintSimplifier()
|
| : INHERITED() {
|
| @@ -17,6 +32,9 @@ PaintSimplifier::~PaintSimplifier() {
|
| }
|
|
|
| bool PaintSimplifier::filter(SkPaint* paint, Type type) {
|
| + // Bitmaps are expensive. Skip draw if type has a bitmap.
|
| + if (type == kBitmap_Type || PaintHasBitmap(*paint))
|
| + return false;
|
|
|
| // Preserve a modicum of text quality; black & white text is
|
| // just too blocky, even during a fling.
|
|
|