Example #1
0
        private void AddPartialResult(RenderFinishedEventArgs result)
        {
            lock (this)
            {
                _contentPanel.SetMinimumWidth((int)(result.TotalWidth * _displayDensity));
                _contentPanel.SetMinimumHeight((int)(result.TotalHeight * _displayDensity));

                if (result.RenderResult != null)
                {
                    using (var image = (SKImage)result.RenderResult)
                    {
                        byte[] imageBytes;
                        using (var data = image.Encode(SKEncodedImageFormat.Png, 100))
                        {
                            imageBytes = data.ToArray();
                        }

                        var view = new ImageView(Context);
                        view.SetMinimumWidth((int)(result.Width * _displayDensity));
                        view.SetMinimumHeight((int)(result.Height * _displayDensity));
                        view.SetMaxWidth((int)(result.Width * _displayDensity));
                        view.SetMaxHeight((int)(result.Width * _displayDensity));
                        view.SetImageBitmap(BitmapFactory.DecodeByteArray(imageBytes, 0, imageBytes.Length));

                        _contentPanel.AddView(view);
                    }
                }
            }
        }
 protected virtual void OnPartialRenderFinished(RenderFinishedEventArgs e)
 {
     if (PartialRenderFinished != null)
     {
         PartialRenderFinished(e);
     }
 }
Example #3
0
        private float PaintGroup(StaveGroup group, float totalHeight, ICanvas canvas)
        {
            // paint into canvas
            var height = group.Height + (GroupSpacing * Scale);

            canvas.BeginRender(Width, height);
            Renderer.Canvas.Color     = Renderer.RenderingResources.MainGlyphColor;
            Renderer.Canvas.TextAlign = TextAlign.Left;
            // NOTE: we use this negation trick to make the group paint itself to 0/0 coordinates
            // since we use partial drawing
            group.Paint(0, -group.Y, canvas);

            // calculate coordinates for next group
            totalHeight += height;

            var result = canvas.EndRender();
            var args   = new RenderFinishedEventArgs();

            args.TotalWidth          = Width;
            args.TotalHeight         = totalHeight;
            args.Width               = Width;
            args.Height              = height;
            args.RenderResult        = result;
            args.FirstMasterBarIndex = group.FirstBarIndex;
            args.LastMasterBarIndex  = group.LastBarIndex;

            Renderer.OnPartialRenderFinished(args);

            return(height);
        }
Example #4
0
        private void AddPartialResult(RenderFinishedEventArgs result)
        {
            ActualScoreWidth    = result.TotalWidth;
            ActualScoreHeight   = result.TotalHeight;
            _layoutPanel.Width  = (int)result.TotalWidth;
            _layoutPanel.Height = (int)result.TotalHeight;
            if (result.RenderResult != null)
            {
                var bitmap = result.RenderResult as Bitmap;
                if (bitmap == null)
                {
                    using (result.RenderResult as IDisposable)
                    {
                        bitmap = SkiaUtil.ToBitmap(result.RenderResult);
                    }
                }

                var pic = new PictureBox
                {
                    AutoSize    = false,
                    BackColor   = ForeColor,
                    Width       = (int)result.Width,
                    Height      = (int)result.Height,
                    Image       = bitmap,
                    Padding     = Padding.Empty,
                    Margin      = Padding.Empty,
                    BorderStyle = BorderStyle.None
                };
                _layoutPanel.Controls.Add(pic);
            }
        }
Example #5
0
        protected virtual void OnRenderFinished(RenderFinishedEventArgs obj)
        {
            var handler = RenderFinished;

            if (handler != null)
            {
                handler(obj);
            }
        }
Example #6
0
        protected virtual void OnPartialRenderFinished(RenderFinishedEventArgs obj)
        {
            Action <RenderFinishedEventArgs> handler = PartialRenderFinished;

            if (handler != null)
            {
                handler(obj);
            }
        }
Example #7
0
        protected virtual void OnRenderFinished(RenderFinishedEventArgs e)
        {
            EventHandler handler = RenderFinished;

            if (handler != null)
            {
                handler(this, EventArgs.Empty);
            }
        }
Example #8
0
 private void AddPartialResult(RenderFinishedEventArgs result)
 {
     lock (this)
     {
         Width  = (int)result.TotalWidth;
         Height = (int)result.TotalHeight;
         _images.Add((Image)result.RenderResult);
         Invalidate();
     }
 }
Example #9
0
        private void AppendRenderResult(RenderFinishedEventArgs result)
        {
            CanvasElement.style.width  = result.TotalWidth + "px";
            CanvasElement.style.height = result.TotalHeight + "px";

            if (result.RenderResult != null)
            {
                Node itemToAppend;
                if (@typeof(result.RenderResult) == "string")
                {
                    var partialResult = (HtmlDivElement)document.createElement("div");
                    partialResult.innerHTML = result.RenderResult.As <string>();
                    itemToAppend            = partialResult.firstChild;
                }
                else
                {
                    itemToAppend = (Node)result.RenderResult;
                }
                CanvasElement.appendChild(itemToAppend);
            }
        }
Example #10
0
        private void AddPartialResult(RenderFinishedEventArgs result)
        {
            lock (this)
            {
                _contentPanel.WidthRequest  = result.TotalWidth;
                _contentPanel.HeightRequest = result.TotalHeight;

                if (result.RenderResult != null)
                {
                    using (var image = (SKImage)result.RenderResult)
                    {
                        _contentPanel.Children.Add(new Image
                        {
                            Source        = new SkImageSource(image),
                            WidthRequest  = result.Width,
                            HeightRequest = result.Height
                        });
                    }
                }
            }
        }
Example #11
0
 private void AddPartialResult(RenderFinishedEventArgs result)
 {
     lock (this)
     {
         Width  = result.TotalWidth;
         Height = result.TotalHeight;
         var    bitmap  = (Bitmap)result.RenderResult;
         IntPtr hBitmap = bitmap.GetHbitmap();
         try
         {
             PartialResults.Add(Imaging.CreateBitmapSourceFromHBitmap(
                                    hBitmap,
                                    IntPtr.Zero, Int32Rect.Empty,
                                    BitmapSizeOptions.FromWidthAndHeight(bitmap.Width, bitmap.Height)));
         }
         finally
         {
             DeleteObject(hBitmap);
         }
     }
 }
Example #12
0
 private void AddPartialResult(RenderFinishedEventArgs result)
 {
     ActualScoreWidth  = result.TotalWidth;
     ActualScoreHeight = result.TotalHeight;
     if (result.RenderResult != null)
     {
         var bitmap = result.RenderResult as Bitmap;
         if (bitmap != null)
         {
             using (bitmap)
             {
                 _images.Add(GdiImageSource.Create(bitmap));
             }
         }
         else
         {
             using (result.RenderResult as IDisposable)
             {
                 _images.Add(SkImageSource.Create(result.RenderResult));
             }
         }
     }
 }
Example #13
0
 protected virtual void OnRenderFinished(RenderFinishedEventArgs e)
 {
     RenderFinished?.Invoke(this, e);
 }
Example #14
0
        private void AppendRenderResult(RenderFinishedEventArgs result)
        {
            if (result != null)
            {
                CanvasElement.style.width  = result.TotalWidth + "px";
                CanvasElement.style.height = result.TotalHeight + "px";
            }


            if (result == null || result.RenderResult != null)
            {
                // the queue/dequeue like mechanism used here is to maintain the order within the setTimeout.
                // setTimeout allows to decouple the rendering from the JS processing a bit which makes the overall display faster.
                _renderResults.Add(result);

                setTimeout(() =>
                {
                    while (_renderResults.Count > 0)
                    {
                        var renderResult = _renderResults[0];
                        _renderResults.RemoveAt(0);

                        // null result indicates that the rendering finished
                        if (renderResult == null)
                        {
                            // so we remove elements that might be from a previous render session
                            while (CanvasElement.childElementCount > _totalResultCount)
                            {
                                CanvasElement.removeChild(CanvasElement.lastChild);
                            }
                        }
                        // NOTE: here we try to replace existing children
                        else
                        {
                            var body = renderResult.RenderResult;
                            if (@typeof(body) == "string")
                            {
                                HtmlElement placeholder;
                                if (_totalResultCount < CanvasElement.childElementCount)
                                {
                                    placeholder = CanvasElement.children[_totalResultCount].As <HtmlElement>();
                                }
                                else
                                {
                                    placeholder = document.createElement("div").As <HtmlElement>();
                                    CanvasElement.appendChild(placeholder);
                                }

                                placeholder.style.width   = renderResult.Width + "px";
                                placeholder.style.height  = renderResult.Height + "px";
                                placeholder.style.display = "inline-block";

                                if (IsElementInViewPort(placeholder) || Settings.DisableLazyLoading)
                                {
                                    placeholder.outerHTML = body.As <string>();
                                }
                                else
                                {
                                    placeholder.As <dynamic>().svg = body;
                                    placeholder.setAttribute("data-lazy", "true");
                                }
                            }
                            else
                            {
                                if (_totalResultCount < CanvasElement.childElementCount)
                                {
                                    CanvasElement.replaceChild(renderResult.RenderResult.As <Node>(), CanvasElement.children[_totalResultCount]);
                                }
                                else
                                {
                                    CanvasElement.appendChild(renderResult.RenderResult.As <Node>());
                                }
                            }
                            _totalResultCount++;
                        }
                    }
                }, 1);
            }
        }
Example #15
0
 protected virtual void OnPartialRenderFinished(RenderFinishedEventArgs e)
 {
     if (PartialRenderFinished != null)
     {
         PartialRenderFinished(e);
     }
 }
Example #16
0
        protected virtual void OnRenderFinished(RenderFinishedEventArgs e)
        {
            RoutedEventArgs newEventArgs = new RoutedEventArgs(RenderFinishedEvent);

            RaiseEvent(newEventArgs);
        }
Example #17
0
 protected virtual void OnPreRender(RenderFinishedEventArgs obj)
 {
     Action<RenderFinishedEventArgs> handler = PreRender;
     if (handler != null) handler(obj);
 }