Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a1ce8a4 authored by Mike Reed's avatar Mike Reed
Browse files

use SkFilterQuality instead of SkPaint::FilterLevel

Change-Id: I5d26869de746107b8a35a7a662236f993a824b0d
parent ee1f24ff
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -401,7 +401,7 @@ static jobject doDecode(JNIEnv* env, SkStreamRewindable* stream, jobject padding
        }

        SkPaint paint;
        paint.setFilterLevel(SkPaint::kLow_FilterLevel);
        paint.setFilterQuality(kLow_SkFilterQuality);

        SkCanvas canvas(*outputBitmap);
        canvas.scale(sx, sy);
+8 −8
Original line number Diff line number Diff line
@@ -32,23 +32,23 @@

namespace android {

// Custom version of SkPaintFlagsDrawFilter that also calls setFilterLevel.
// Custom version of SkPaintFlagsDrawFilter that also calls setFilterQuality.
class CompatFlagsDrawFilter : public SkPaintFlagsDrawFilter {
public:
    CompatFlagsDrawFilter(uint32_t clearFlags, uint32_t setFlags,
            SkPaint::FilterLevel desiredLevel)
            SkFilterQuality desiredQuality)
    : SkPaintFlagsDrawFilter(clearFlags, setFlags)
    , fDesiredLevel(desiredLevel) {
    , fDesiredQuality(desiredQuality) {
    }

    virtual bool filter(SkPaint* paint, Type type) {
        SkPaintFlagsDrawFilter::filter(paint, type);
        paint->setFilterLevel(fDesiredLevel);
        paint->setFilterQuality(fDesiredQuality);
        return true;
    }

private:
    const SkPaint::FilterLevel fDesiredLevel;
    const SkFilterQuality fDesiredQuality;
};

// Returns whether flags contains FILTER_BITMAP_FLAG. If flags does, remove it.
@@ -74,7 +74,7 @@ public:
        if (clearFlags | setFlags) {
            // Mask both groups of flags to remove FILTER_BITMAP_FLAG, which no
            // longer has a Skia equivalent flag (instead it corresponds to
            // calling setFilterLevel), and keep track of which group(s), if
            // calling setFilterQuality), and keep track of which group(s), if
            // any, had the flag set.
            const bool turnFilteringOn = hadFiltering(setFlags);
            const bool turnFilteringOff = hadFiltering(clearFlags);
@@ -83,10 +83,10 @@ public:
            if (turnFilteringOn) {
                // Turning filtering on overrides turning it off.
                filter = new CompatFlagsDrawFilter(clearFlags, setFlags,
                        SkPaint::kLow_FilterLevel);
                        kLow_SkFilterQuality);
            } else if (turnFilteringOff) {
                filter = new CompatFlagsDrawFilter(clearFlags, setFlags,
                        SkPaint::kNone_FilterLevel);
                        kNone_SkFilterQuality);
            } else {
                filter = new SkPaintFlagsDrawFilter(clearFlags, setFlags);
            }
+6 −6
Original line number Diff line number Diff line
@@ -132,7 +132,7 @@ public:
        Paint* nativePaint = getNativePaint(env, paint);
        uint32_t result = nativePaint->getFlags();
        result &= ~sFilterBitmapFlag; // Filtering no longer stored in this bit. Mask away.
        if (nativePaint->getFilterLevel() != Paint::kNone_FilterLevel) {
        if (nativePaint->getFilterQuality() != kNone_SkFilterQuality) {
            result |= sFilterBitmapFlag;
        }
        return static_cast<jint>(result);
@@ -142,9 +142,9 @@ public:
        NPE_CHECK_RETURN_VOID(env, paint);
        Paint* nativePaint = getNativePaint(env, paint);
        // Instead of modifying 0x02, change the filter level.
        nativePaint->setFilterLevel(flags & sFilterBitmapFlag
                ? Paint::kLow_FilterLevel
                : Paint::kNone_FilterLevel);
        nativePaint->setFilterQuality(flags & sFilterBitmapFlag
                ? kLow_SkFilterQuality
                : kNone_SkFilterQuality);
        // Don't pass through filter flag, which is no longer stored in paint's flags.
        flags &= ~sFilterBitmapFlag;
        // Use the existing value for 0x02.
@@ -197,8 +197,8 @@ public:

    static void setFilterBitmap(JNIEnv* env, jobject paint, jboolean filterBitmap) {
        NPE_CHECK_RETURN_VOID(env, paint);
        getNativePaint(env, paint)->setFilterLevel(
                filterBitmap ? Paint::kLow_FilterLevel : Paint::kNone_FilterLevel);
        getNativePaint(env, paint)->setFilterQuality(
                filterBitmap ? kLow_SkFilterQuality : kNone_SkFilterQuality);
    }

    static void setDither(JNIEnv* env, jobject paint, jboolean dither) {
+3 −3
Original line number Diff line number Diff line
@@ -320,7 +320,7 @@ static void drawBitmap(JNIEnv* env, jobject jcanvas, jlong canvasHandle, jlong b
            if (paint) {
                filteredPaint = *paint;
            }
            filteredPaint.setFilterLevel(Paint::kLow_FilterLevel);
            filteredPaint.setFilterQuality(kLow_SkFilterQuality);
            canvas->drawBitmap(*bitmap, left, top, &filteredPaint);
        } else {
            canvas->drawBitmap(*bitmap, left, top, paint);
@@ -335,7 +335,7 @@ static void drawBitmap(JNIEnv* env, jobject jcanvas, jlong canvasHandle, jlong b
        if (paint) {
            filteredPaint = *paint;
        }
        filteredPaint.setFilterLevel(Paint::kLow_FilterLevel);
        filteredPaint.setFilterQuality(kLow_SkFilterQuality);

        canvas->drawBitmap(*bitmap, 0, 0, &filteredPaint);
        canvas->restore();
@@ -363,7 +363,7 @@ static void drawBitmapRect(JNIEnv* env, jobject, jlong canvasHandle, jlong bitma
        if (paint) {
            filteredPaint = *paint;
        }
        filteredPaint.setFilterLevel(Paint::kLow_FilterLevel);
        filteredPaint.setFilterQuality(kLow_SkFilterQuality);
        canvas->drawBitmap(*bitmap, srcLeft, srcTop, srcRight, srcBottom,
                           dstLeft, dstTop, dstRight, dstBottom, &filteredPaint);
    } else {
+1 −1
Original line number Diff line number Diff line
@@ -38,7 +38,7 @@ public:
    }

    static inline GLenum getFilter(const SkPaint* paint) {
        if (!paint || paint->getFilterLevel() != SkPaint::kNone_FilterLevel) {
        if (!paint || paint->getFilterQuality() != kNone_SkFilterQuality) {
            return GL_LINEAR;
        }
        return GL_NEAREST;