/// <summary>
        /// REnder the given layout
        /// </summary>
        /// <param name="layout"></param>
        public void Render(IEnumerable<Pixel> pixelsToRender)
        {
            //Process only changed pixels. This will speed up the performance
            //All pixels with the same color are grouped
            List<List<Pixel>> ChangedPixels = pixelsToRender.Where(x=>x.IsChanged)
                                                .GroupBy(x => x.PixelColor)
                                                .Select(grp => grp.ToList()).ToList();

            string RenderOptions = "";

            for (int i=0; i<= ChangedPixels.Count -1; i++)
            {
                //To minimize the calls to the python webservice, all changed pixels and colors are
                //transferred in one batch. The string has following format:
                //ColorRed:ColorGreen:ColorBlue:pixel1,pixel2-Segment with new color
                RenderOptions += ChangedPixels[i].First().PixelColor.R.ToString() + ":";
                RenderOptions += ChangedPixels[i].First().PixelColor.G.ToString() + ":";
                RenderOptions += ChangedPixels[i].First().PixelColor.B.ToString() + ":";
                RenderOptions += String.Join(",", ChangedPixels[i].Select(x => x.PixelID)) + "-";
            }

            //Transfer the changed pixels in one batch to the python webservice
            //The layout is rendered immediately
            PixelService.setPixelAndRender Renderer = new PixelService.setPixelAndRender();
            Renderer.renderString = RenderOptions.TrimEnd('-');
            m_Application.setPixelAndRender(Renderer);
        }
예제 #2
0
 /// <remarks/>
 public void setPixelAndRenderAsync(setPixelAndRender setPixelAndRender1, object userState) {
     if ((this.setPixelAndRenderOperationCompleted == null)) {
         this.setPixelAndRenderOperationCompleted = new System.Threading.SendOrPostCallback(this.OnsetPixelAndRenderOperationCompleted);
     }
     this.InvokeAsync("setPixelAndRender", new object[] {
                 setPixelAndRender1}, this.setPixelAndRenderOperationCompleted, userState);
 }
예제 #3
0
 /// <remarks/>
 public void setPixelAndRenderAsync(setPixelAndRender setPixelAndRender1) {
     this.setPixelAndRenderAsync(setPixelAndRender1, null);
 }