internal static async Task<ExtractedImageData> TryExtractImageDataFromHtml(IDataObject data, ProcessingTaskMonitor processingTaskMonitor, long taskMonitorPanel)
 {
     string[] formats = data.GetFormats();
     if (!formats.Contains("text/html"))
     {
         return new ExtractedImageData { Success = false };
     }
     var obj = data.GetData("text/html");
     string html = string.Empty;
     if (obj is string)
     {
         html = (string)obj;
     }
     else if (obj is MemoryStream)
     {
         MemoryStream ms = (MemoryStream)obj;
         byte[] buffer = new byte[ms.Length];
         ms.Read(buffer, 0, (int)ms.Length);
         if (buffer[1] == (byte)0)  // Detecting unicode
         {
             html = System.Text.Encoding.Unicode.GetString(buffer);
         }
         else
         {
             html = System.Text.Encoding.ASCII.GetString(buffer);
         }
     }
     Uri imageUri;
     if (TryExtractImageUri(html, out imageUri))
     {
         processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploading image from web...");
         var imageData = await TryExtractImageDataFromUri(imageUri);
         processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploaded");
         return imageData;
     }
     else
     {
         return new ExtractedImageData { Success = false };
     }
 }
        internal static async Task <ExtractedImageData> TryExtractImageDataFromHtml(IDataObject data, ProcessingTaskMonitor processingTaskMonitor, long taskMonitorPanel)
        {
            string[] formats = data.GetFormats();
            if (!formats.Contains("text/html"))
            {
                return(new ExtractedImageData {
                    Success = false
                });
            }
            var    obj  = data.GetData("text/html");
            string html = string.Empty;

            if (obj is string)
            {
                html = (string)obj;
            }
            else if (obj is MemoryStream)
            {
                MemoryStream ms     = (MemoryStream)obj;
                byte[]       buffer = new byte[ms.Length];
                ms.Read(buffer, 0, (int)ms.Length);
                if (buffer[1] == (byte)0)  // Detecting unicode
                {
                    html = System.Text.Encoding.Unicode.GetString(buffer);
                }
                else
                {
                    html = System.Text.Encoding.ASCII.GetString(buffer);
                }
            }
            Uri imageUri;

            if (TryExtractImageUri(html, out imageUri))
            {
                processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploading image from web...");
                var imageData = await TryExtractImageDataFromUri(imageUri);

                processingTaskMonitor.SetPanelText(taskMonitorPanel, "Uploaded");
                return(imageData);
            }
            else
            {
                return(new ExtractedImageData {
                    Success = false
                });
            }
        }