@@ -40,6 +40,11 @@ abstract class CkImageFilter implements CkManagedSkImageFilterConvertible {
4040 factory CkImageFilter .matrix (
4141 {required Float64List matrix,
4242 required ui.FilterQuality filterQuality}) = _CkMatrixImageFilter ;
43+ factory CkImageFilter .dilate (
44+ {required double radiusX,
45+ required double radiusY}) = _CkDilateImageFilter ;
46+ factory CkImageFilter .erode (
47+ {required double radiusX, required double radiusY}) = _CkErodeImageFilter ;
4348 factory CkImageFilter .compose (
4449 {required CkImageFilter outer,
4550 required CkImageFilter inner}) = _CkComposeImageFilter ;
@@ -94,10 +99,9 @@ class _CkBlurImageFilter extends CkImageFilter {
9499 final SkImageFilter skImageFilter;
95100 if (sigmaX == 0 && sigmaY == 0 ) {
96101 skImageFilter = canvasKit.ImageFilter .MakeMatrixTransform (
97- toSkMatrixFromFloat32 (Matrix4 .identity ().storage),
98- toSkFilterOptions (ui.FilterQuality .none),
99- null
100- );
102+ toSkMatrixFromFloat32 (Matrix4 .identity ().storage),
103+ toSkFilterOptions (ui.FilterQuality .none),
104+ null );
101105 } else {
102106 skImageFilter = canvasKit.ImageFilter .MakeBlur (
103107 sigmaX,
@@ -146,7 +150,8 @@ class _CkMatrixImageFilter extends CkImageFilter {
146150 : matrix = Float64List .fromList (matrix),
147151 _transform = Matrix4 .fromFloat32List (toMatrix32 (matrix)),
148152 super ._() {
149- final SkImageFilter skImageFilter = canvasKit.ImageFilter .MakeMatrixTransform (
153+ final SkImageFilter skImageFilter =
154+ canvasKit.ImageFilter .MakeMatrixTransform (
150155 toSkMatrixFromFloat64 (matrix),
151156 toSkFilterOptions (filterQuality),
152157 null ,
@@ -185,6 +190,86 @@ class _CkMatrixImageFilter extends CkImageFilter {
185190 Matrix4 get transform => _transform;
186191}
187192
193+ class _CkDilateImageFilter extends CkImageFilter {
194+ _CkDilateImageFilter ({required this .radiusX, required this .radiusY})
195+ : super ._() {
196+ final SkImageFilter skImageFilter = canvasKit.ImageFilter .MakeDilate (
197+ radiusX,
198+ radiusY,
199+ null ,
200+ );
201+ _ref = UniqueRef <SkImageFilter >(this , skImageFilter, 'ImageFilter.dilate' );
202+ }
203+
204+ final double radiusX;
205+ final double radiusY;
206+
207+ late final UniqueRef <SkImageFilter > _ref;
208+
209+ @override
210+ void imageFilter (SkImageFilterBorrow borrow) {
211+ borrow (_ref.nativeObject);
212+ }
213+
214+ @override
215+ bool operator == (Object other) {
216+ if (runtimeType != other.runtimeType) {
217+ return false ;
218+ }
219+ return other is _CkDilateImageFilter &&
220+ other.radiusX == radiusX &&
221+ other.radiusY == radiusY;
222+ }
223+
224+ @override
225+ int get hashCode => Object .hash (radiusX, radiusY);
226+
227+ @override
228+ String toString () {
229+ return 'ImageFilter.dilate($radiusX , $radiusY )' ;
230+ }
231+ }
232+
233+ class _CkErodeImageFilter extends CkImageFilter {
234+ _CkErodeImageFilter ({required this .radiusX, required this .radiusY})
235+ : super ._() {
236+ final SkImageFilter skImageFilter = canvasKit.ImageFilter .MakeErode (
237+ radiusX,
238+ radiusY,
239+ null ,
240+ );
241+ _ref = UniqueRef <SkImageFilter >(this , skImageFilter, 'ImageFilter.erode' );
242+ }
243+
244+ final double radiusX;
245+ final double radiusY;
246+
247+ late final UniqueRef <SkImageFilter > _ref;
248+
249+ @override
250+ void imageFilter (SkImageFilterBorrow borrow) {
251+ borrow (_ref.nativeObject);
252+ }
253+
254+ @override
255+ bool operator == (Object other) {
256+ if (runtimeType != other.runtimeType) {
257+ return false ;
258+ }
259+ return other is _CkErodeImageFilter &&
260+ other.radiusX == radiusX &&
261+ other.radiusY == radiusY;
262+ }
263+
264+ @override
265+ int get hashCode => Object .hash (radiusX, radiusY);
266+
267+ @override
268+ String toString () {
269+ return 'ImageFilter.erode($radiusX , $radiusY )' ;
270+ }
271+ }
272+
188273class _CkComposeImageFilter extends CkImageFilter {
189274 _CkComposeImageFilter ({required this .outer, required this .inner})
190275 : super ._() {
0 commit comments