am c87972fc: am 5707b4c6: am e4c0e03b: Merge "Update HWUI paint filter to understand new location of skia bitmap filter preference" into lmp-dev

* commit 'c87972fceab38aaf1757cc756291f3a32064294e':
  Update HWUI paint filter to understand new location of skia bitmap filter preference
This commit is contained in:
Chris Craik
2014-09-12 19:22:25 +00:00
committed by Android Git Automerger

View File

@@ -54,10 +54,6 @@
namespace android {
namespace uirenderer {
///////////////////////////////////////////////////////////////////////////////
// Defines
///////////////////////////////////////////////////////////////////////////////
static GLenum getFilter(const SkPaint* paint) {
if (!paint || paint->getFilterLevel() != SkPaint::kNone_FilterLevel) {
return GL_LINEAR;
@@ -3044,21 +3040,35 @@ void OpenGLRenderer::resetPaintFilter() {
}
void OpenGLRenderer::setupPaintFilter(int clearBits, int setBits) {
// TODO: don't bother with boolean, it's redundant with clear/set bits
mDrawModifiers.mHasDrawFilter = true;
mDrawModifiers.mPaintFilterClearBits = clearBits & SkPaint::kAllFlags;
mDrawModifiers.mPaintFilterSetBits = setBits & SkPaint::kAllFlags;
}
const SkPaint* OpenGLRenderer::filterPaint(const SkPaint* paint) {
// TODO: use CompatFlagsDrawFilter here, and combine logic with android/graphics/DrawFilter.cpp
// to avoid clobbering 0x02 paint flag
// Equivalent to the Java Paint's FILTER_BITMAP_FLAG.
static const uint32_t sFilterBitmapFlag = 0x02;
if (CC_LIKELY(!mDrawModifiers.mHasDrawFilter || !paint)) {
return paint;
}
uint32_t flags = paint->getFlags();
const uint32_t clearBits = mDrawModifiers.mPaintFilterClearBits;
const uint32_t setBits = mDrawModifiers.mPaintFilterSetBits;
const uint32_t flags = (paint->getFlags() & ~clearBits) | setBits;
mFilteredPaint = *paint;
mFilteredPaint.setFlags((flags & ~mDrawModifiers.mPaintFilterClearBits) |
mDrawModifiers.mPaintFilterSetBits);
mFilteredPaint.setFlags(flags);
// check if paint filter trying to override bitmap filter
if ((clearBits | setBits) & sFilterBitmapFlag) {
mFilteredPaint.setFilterLevel(flags & sFilterBitmapFlag
? SkPaint::kLow_FilterLevel : SkPaint::kNone_FilterLevel);
}
return &mFilteredPaint;
}