New class to simplify rasterization.

skia::PaintSimplifier subclasses SkDrawFilter to reduce the quality of draws. The intent is to be able to place less of a burden on the rasterizer during Android flings or other situations where we need a lot of pixels but they won't spend long on screen.

This CL does not actually invoke the PaintSimplifier. The code is extracted from https://codereview.chromium.org/12210081/; deciding when to simplify will be a separate CL.

BUG=174945
TBR=reed

Review URL: https://chromiumcodereview.appspot.com/12207157

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@182475 0039d316-1c4b-4281-b951-d872f2087c98
parent 8ebd5682
// 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"
namespace skia {
PaintSimplifier::PaintSimplifier()
: INHERITED() {
}
PaintSimplifier::~PaintSimplifier() {
}
bool PaintSimplifier::filter(SkPaint* paint, Type type) {
// 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->setFilterBitmap(false);
paint->setMaskFilter(NULL);
// Uncomment this line to shade simplified tiles pink during debugging.
//paint->setColor(SkColorSetRGB(255, 127, 127));
return true;
}
} // namespace skia
// 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.
#ifndef SKIA_EXT_PAINT_SIMPLIFIER_H
#define SKIA_EXT_PAINT_SIMPLIFIER_H
#include "base/values.h"
#include "third_party/skia/include/core/SkDrawFilter.h"
class SkPaint;
namespace skia {
/*
When installed on a SkCanvas, reduces the quality of all draws
to that canvas. This improves rasterization speed during flings.
We turn off blurs, filters, and antialiasing *except for* text.
*/
class SK_API PaintSimplifier : public SkDrawFilter {
public:
PaintSimplifier();
virtual ~PaintSimplifier();
virtual bool filter(SkPaint*, Type) OVERRIDE;
private:
typedef SkDrawFilter INHERITED;
};
} // namespace skia
#endif // SKIA_EXT_PAINT_SIMPLIFIER_H
......@@ -168,6 +168,8 @@
'ext/lazy_pixel_ref.cc',
'ext/lazy_pixel_ref.h',
'ext/SkThread_chrome.cc',
'ext/paint_simplifier.cc',
'ext/paint_simplifier.h',
'ext/platform_canvas.cc',
'ext/platform_canvas.h',
'ext/platform_device.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment