From 6b6e8d35bbdf45a831522e475f3bb3b6e2eda87b Mon Sep 17 00:00:00 2001 From: Luigi Rosso Date: Mon, 15 Jun 2020 09:01:37 -0700 Subject: [PATCH] Adding support for image filtering in CanvasKit backend. (flutter/engine#19035) --- .../lib/src/engine/compositor/painting.dart | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/engine/src/flutter/lib/web_ui/lib/src/engine/compositor/painting.dart b/engine/src/flutter/lib/web_ui/lib/src/engine/compositor/painting.dart index 194de530713..203e8662de6 100644 --- a/engine/src/flutter/lib/web_ui/lib/src/engine/compositor/painting.dart +++ b/engine/src/flutter/lib/web_ui/lib/src/engine/compositor/painting.dart @@ -190,12 +190,31 @@ class SkPaint extends SkiaObject implements ui.Paint { ui.MaskFilter _maskFilter; - // TODO(yjbanov): implement @override ui.FilterQuality get filterQuality => _filterQuality; @override set filterQuality(ui.FilterQuality value) { _filterQuality = value; + _syncFilterQuality(skiaObject); + } + + void _syncFilterQuality(js.JsObject object) { + js.JsObject skFilterQuality; + switch (_filterQuality) { + case ui.FilterQuality.none: + skFilterQuality = canvasKit['FilterQuality']['None']; + break; + case ui.FilterQuality.low: + skFilterQuality = canvasKit['FilterQuality']['Low']; + break; + case ui.FilterQuality.medium: + skFilterQuality = canvasKit['FilterQuality']['Medium']; + break; + case ui.FilterQuality.high: + skFilterQuality = canvasKit['FilterQuality']['High']; + break; + } + object.callMethod('setFilterQuality', [skFilterQuality]); } ui.FilterQuality _filterQuality = ui.FilterQuality.none; @@ -268,6 +287,7 @@ class SkPaint extends SkiaObject implements ui.Paint { _syncMaskFilter(obj); _syncColorFilter(obj); _syncImageFilter(obj); + _syncFilterQuality(obj); return obj; } }