diff --git a/lib/ui/painting.dart b/lib/ui/painting.dart index 84e5769b2a68e..fd3786f626680 100644 --- a/lib/ui/painting.dart +++ b/lib/ui/painting.dart @@ -2493,9 +2493,64 @@ class ColorFilter { _matrix = null, _type = _TypeMode; - /// Construct a color filter that transforms a color by a 4x5 matrix. The - /// matrix is in row-major order and the translation column is specified in - /// unnormalized, 0...255, space. + /// Construct a color filter that transforms a color by a 4x5 matrix. + /// + /// Every pixel's color value, repsented as an `[R, G, B, A]`, is matrix + /// multiplied to create a new color: + /// + /// ``` + /// | R' | | a00 a01 a02 a03 a04 | | R | + /// | G' | = | a10 a11 a22 a33 a44 | * | G | + /// | B' | | a20 a21 a22 a33 a44 | | B | + /// | A' | | a30 a31 a22 a33 a44 | | A | + /// ``` + /// + /// The matrix is in row-major order and the translation column is specified + /// in unnormalized, 0...255, space. For example, the identity matrix is: + /// + /// ``` + /// const ColorMatrix identity = ColorFilter.matrix([ + /// 1, 0, 0, 0, 0, + /// 0, 1, 0, 0, 0, + /// 0, 0, 1, 0, 0, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` + /// + /// ## Examples + /// + /// An inversion color matrix: + /// + /// ``` + /// const ColorFilter invert = ColorFilter.matrix([ + /// -1, 0, 0, 0, 255, + /// 0, -1, 0, 0, 255, + /// 0, 0, -1, 0, 255, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` + /// + /// A sepia-toned color matrix (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#sepiaEquivalent)): + /// + /// ``` + /// const ColorFilter sepia = ColorFilter.matrix([ + /// 0.393, 0.769, 0.189, 0, 0, + /// 0.349, 0.686, 0.168, 0, 0, + /// 0.272, 0.534, 0.131, 0, 0, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` + /// + /// A greyscale color filter (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#grayscaleEquivalent)): + /// + /// ``` + /// const ColorFilter greyscale = ColorFilter.matrix([ + /// 0.2126, 0.7152, 0.0722, 0, 0, + /// 0.2126, 0.7152, 0.0722, 0, 0, + /// 0.2126, 0.7152, 0.0722, 0, 0, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` const ColorFilter.matrix(List matrix) : _color = null, _blendMode = null, diff --git a/lib/web_ui/lib/src/ui/painting.dart b/lib/web_ui/lib/src/ui/painting.dart index 09190abbff289..071ff6b0c1147 100644 --- a/lib/web_ui/lib/src/ui/painting.dart +++ b/lib/web_ui/lib/src/ui/painting.dart @@ -1400,9 +1400,64 @@ class ColorFilter { : _color = color, _blendMode = blendMode; - /// Construct a color filter that transforms a color by a 4x5 matrix. The - /// matrix is in row-major order and the translation column is specified in - /// unnormalized, 0...255, space. + /// Construct a color filter that transforms a color by a 4x5 matrix. + /// + /// Every pixel's color value, repsented as an `[R, G, B, A]`, is matrix + /// multiplied to create a new color: + /// + /// ``` + /// | R' | | a00 a01 a02 a03 a04 | | R | + /// | G' | = | a10 a11 a22 a33 a44 | * | G | + /// | B' | | a20 a21 a22 a33 a44 | | B | + /// | A' | | a30 a31 a22 a33 a44 | | A | + /// ``` + /// + /// The matrix is in row-major order and the translation column is specified + /// in unnormalized, 0...255, space. For example, the identity matrix is: + /// + /// ``` + /// const ColorMatrix identity = ColorFilter.matrix([ + /// 1, 0, 0, 0, 0, + /// 0, 1, 0, 0, 0, + /// 0, 0, 1, 0, 0, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` + /// + /// ## Examples + /// + /// An inversion color matrix: + /// + /// ``` + /// const ColorFilter invert = ColorFilter.matrix([ + /// -1, 0, 0, 0, 255, + /// 0, -1, 0, 0, 255, + /// 0, 0, -1, 0, 255, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` + /// + /// A sepia-toned color matrix (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#sepiaEquivalent)): + /// + /// ``` + /// const ColorFilter sepia = ColorFilter.matrix([ + /// 0.393, 0.769, 0.189, 0, 0, + /// 0.349, 0.686, 0.168, 0, 0, + /// 0.272, 0.534, 0.131, 0, 0, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` + /// + /// A greyscale color filter (values based on the [Filter Effects Spec](https://www.w3.org/TR/filter-effects-1/#grayscaleEquivalent)): + /// + /// ``` + /// const ColorFilter greyscale = ColorFilter.matrix([ + /// 0.2126, 0.7152, 0.0722, 0, 0, + /// 0.2126, 0.7152, 0.0722, 0, 0, + /// 0.2126, 0.7152, 0.0722, 0, 0, + /// 0, 0, 0, 1, 0, + /// ]); + /// ``` const ColorFilter.matrix(List matrix) : _color = null, _blendMode = null;