// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #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() { } 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. if (type != kText_Type) { paint->setAntiAlias(false); } paint->setSubpixelText(false); paint->setLCDRenderText(false); paint->setMaskFilter(NULL); // Uncomment this line to shade simplified tiles pink during debugging. //paint->setColor(SkColorSetRGB(255, 127, 127)); return true; } } // namespace skia