private static void AddJpegImage(ISketchData sketchData, ZipOutputStream zipStream)
        {
            var jpegEntry = new ZipEntry("sketch.jpeg")
            {
                DateTime = DateTime.UtcNow
            };

            zipStream.PutNextEntry(jpegEntry);

            using var memoryStream = new MemoryStream();
            InkRenderer.RenderImage(sketchData.Width, sketchData.Height, sketchData.BackgroundColor,
                                    sketchData.InkStrokes.ToList(), memoryStream, sketchData.Width);

            memoryStream.Seek(0, SeekOrigin.Begin);

            var buffer = new byte[4096];

            StreamUtils.Copy(memoryStream, zipStream, buffer);
        }
Example #2
0
        /// <summary>
        /// Update the sketch data
        /// </summary>
        /// <param name="sketchData">the sketch data</param>
        public async void SketchDataUpdated(ISketchData sketchData)
        {
            _ = sketchData ?? throw new ArgumentNullException(nameof(sketchData));

            // Title = sketchData.Name;

            var inkCanvasView = InkCanvas.GetInkCanvasView();

            Dispatcher.BeginInvokeOnMainThread(delegate
            {
                inkCanvasView.BackgroundColor = sketchData.BackgroundColor;
                InkCanvas.CanvasSize          = new Size(sketchData.Width, sketchData.Height);
                InkCanvas.GetInkCanvasView().InkPresenter.StrokeContainer.Clear();
                InkCanvas.GetInkCanvasView().InkPresenter.StrokeContainer.Add(sketchData.InkStrokes);

                inkCanvasView.InvalidateCanvas(false, true);
            });

            _viewModel.UndoManager.Reset();

            await UpdateWebViewAsync().ConfigureAwait(false);
        }