diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.android.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.android.cs index f87e26fdf..af3edb036 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.android.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.android.cs @@ -48,7 +48,7 @@ public static Stream GetImageStream(IList points, return stream; } - static Bitmap GetImageInternal(IList points, + static Bitmap? GetImageInternal(IList points, float lineWidth, Color strokeColor, Color backgroundColor) @@ -59,7 +59,7 @@ static Bitmap GetImageInternal(IList points, var drawingHeight = points.Max(p => p.Y) - minPointY; const int minSize = 1; if (drawingWidth < minSize || drawingHeight < minSize) - throw new Exception($"The image size should be at least {minSize} x {minSize}."); + return null; var image = Bitmap.CreateBitmap((int)drawingWidth, (int)drawingHeight, Bitmap.Config.Argb8888!)!; using var canvas = new Canvas(image); diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.gtk.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.gtk.cs index 15430f9f4..d01250160 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.gtk.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.gtk.cs @@ -50,7 +50,7 @@ public static Stream GetImageStream(IList points, } } - static Bitmap GetImageInternal(IList points, + static Bitmap? GetImageInternal(IList points, float lineWidth, Color strokeColor, Color backgroundColor) @@ -62,7 +62,7 @@ static Bitmap GetImageInternal(IList points, const int minSize = 1; if (drawingWidth < minSize || drawingHeight < minSize) { - throw new Exception($"The image size should be at least {minSize} x {minSize}."); + return null; } var bm = new Bitmap((int)drawingWidth, (int)drawingHeight); diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.ios.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.ios.cs index 3ba6dec6b..1493d2d0b 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.ios.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.ios.cs @@ -41,7 +41,7 @@ public static Stream GetImageStream(IList points, return resizedImage.AsJPEG().AsStream(); } - static UIImage GetImageInternal(IList points, + static UIImage? GetImageInternal(IList points, float lineWidth, Color strokeColor, Color backgroundColor) @@ -53,7 +53,7 @@ static UIImage GetImageInternal(IList points, const int minSize = 1; if (drawingWidth < minSize || drawingHeight < minSize) { - throw new Exception($"The image size should be at least {minSize} x {minSize}."); + return null; } var imageSize = new CGSize(drawingWidth, drawingHeight); diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.macos.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.macos.cs index b16c0a129..94e7ccc0b 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.macos.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.macos.cs @@ -32,10 +32,15 @@ public static Stream GetImageStream(IList points, } var image = GetImageInternal(points, lineWidth, strokeColor, backgroundColor); + if (image is null) + { + return Stream.Null; + } + return image.AsTiff().AsStream(); } - static NSImage GetImageInternal(IList points, + static NSImage? GetImageInternal(IList points, float lineWidth, Color strokeColor, Color backgroundColor) @@ -47,7 +52,7 @@ static NSImage GetImageInternal(IList points, const int minSize = 1; if (drawingWidth < minSize || drawingHeight < minSize) { - throw new Exception($"The image size should be at least {minSize} x {minSize}."); + return null; } var imageSize = new CGSize(drawingWidth, drawingHeight); diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.tizen.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.tizen.cs index dce7a1a7d..4bfc879fa 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.tizen.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.tizen.cs @@ -46,7 +46,7 @@ public static Stream GetImageStream(IList points, } } - static SKImage GetImageInternal(IList points, + static SKImage? GetImageInternal(IList points, float lineWidth, Color strokeColor, Color backgroundColor) @@ -58,7 +58,7 @@ static SKImage GetImageInternal(IList points, const int minSize = 1; if (drawingWidth < minSize || drawingHeight < minSize) { - throw new Exception($"The image size should be at least {minSize} x {minSize}."); + return null; } var bm = new SKBitmap((int)drawingWidth, (int)drawingHeight); diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.uwp.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.uwp.cs index fce76ff84..ca5b88d8c 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.uwp.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.uwp.cs @@ -50,7 +50,7 @@ public static Stream GetImageStream(IList points, } } - static CanvasRenderTarget GetImageInternal(IList points, + static CanvasRenderTarget? GetImageInternal(IList points, float lineWidth, Color lineColor, Color backgroundColor) @@ -62,7 +62,7 @@ static CanvasRenderTarget GetImageInternal(IList points, const int minSize = 1; if (drawingWidth < minSize || drawingHeight < minSize) { - throw new Exception($"The image size should be at least {minSize} x {minSize}."); + return null; } var device = CanvasDevice.GetSharedDevice(); diff --git a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.wpf.cs b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.wpf.cs index 1e57b82b7..34ba93587 100644 --- a/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.wpf.cs +++ b/src/CommunityToolkit/Xamarin.CommunityToolkit/Views/DrawingView/Service/DrawingViewService.wpf.cs @@ -35,6 +35,10 @@ public static Stream GetImageStream(IList points, } var image = GetImageInternal(points, lineWidth, strokeColor, backgroundColor); + if (image is null) + { + return Stream.Null; + } var resizedImage = MaxResizeImage(image, (float) imageSize.Width, (float) imageSize.Height); using (resizedImage) @@ -46,7 +50,7 @@ public static Stream GetImageStream(IList points, } } - static Bitmap GetImageInternal(ICollection points, + static Bitmap? GetImageInternal(ICollection points, float lineWidth, Color strokeColor, Color backgroundColor) @@ -58,7 +62,7 @@ static Bitmap GetImageInternal(ICollection points, const int minSize = 1; if (drawingWidth < minSize || drawingHeight < minSize) { - throw new Exception($"The image size should be at least {minSize} x {minSize}."); + return null; } var bm = new Bitmap((int) drawingWidth, (int) drawingHeight);