static jlong CreatePaintFlagsDF(JNIEnv* env, jobject clazz, jint clearFlags, jint setFlags) { 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 setFilterQuality), and keep track of which group(s), if // any, had the flag set. const bool turnFilteringOn = hadFiltering(setFlags); const bool turnFilteringOff = hadFiltering(clearFlags); SkDrawFilter* filter; if (turnFilteringOn) { // Turning filtering on overrides turning it off. filter = new CompatFlagsDrawFilter(clearFlags, setFlags, kLow_SkFilterQuality); } else if (turnFilteringOff) { filter = new CompatFlagsDrawFilter(clearFlags, setFlags, kNone_SkFilterQuality); } else { filter = new SkPaintFlagsDrawFilter(clearFlags, setFlags); } return reinterpret_cast<jlong>(filter); } else { return NULL; } }
Int64 CPaintFlagsDrawFilter::NativeConstructor( /* [in] */ Int32 clearFlags, /* [in] */ Int32 setFlags) { 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 // any, had the flag set. const bool turnFilteringOn = hadFiltering(setFlags); const bool turnFilteringOff = hadFiltering(clearFlags); SkDrawFilter* filter; if (turnFilteringOn) { // Turning filtering on overrides turning it off. filter = new CompatFlagsDrawFilter(clearFlags, setFlags, SkPaint::kLow_FilterLevel); } else if (turnFilteringOff) { filter = new CompatFlagsDrawFilter(clearFlags, setFlags, SkPaint::kNone_FilterLevel); } else { filter = new SkPaintFlagsDrawFilter(clearFlags, setFlags); } return reinterpret_cast<Int64>(filter); } return 0; }