protected virtual void OnRenderCompleted(RenderResult result)
        {
            if (result.IsSuccess)
            {
                completedRequest  = result.Request;
                completedBitmap   = result.CreateBitmap();
                bitmapInvalidated = false;

                InvalidateVisual();
                BackgroundRenderer.RaiseRenderingFinished(this);
            }
        }
 /// <summary>Constructs successul rendering result</summary>
 /// <param name="request">Source request</param>
 /// <param name="result">Rendered bitmap</param>
 public RenderResult(RenderRequest request, BitmapSource result)
 {
     this.request = request;
     pixelWidth   = result.PixelWidth;
     pixelHeight  = result.PixelHeight;
     stride       = result.PixelWidth * result.Format.BitsPerPixel / 8;
     dpiX         = result.DpiX;
     dpiY         = result.DpiY;
     palette      = result.Palette;
     format       = result.Format;
     pixels       = new byte[pixelHeight * stride];
     result.CopyPixels(pixels, stride, 0);
 }
Esempio n. 3
0
        protected virtual void OnRenderCompleted(RenderResult result)
        {
            if (IsDisposed)
            {
                return;
            }

            completedRequest  = result.Request;
            completedBitmap   = result.Bitmap;
            bitmapInvalidated = false;

            InvalidateVisual();
            BackgroundRenderer.RaiseRenderingFinished(this);
        }
Esempio n. 4
0
 private void RenderThreadFunc()
 {
     WaitHandle[] events = new WaitHandle[] { renderRequested, shutdownRequested };
     while (true)
     {
         lock (this)
         {
             activeRequest = null;
             if (pendingRequest != null)
             {
                 activeRequest  = pendingRequest;
                 pendingRequest = null;
             }
         }
         if (activeRequest == null)
         {
             WaitHandle.WaitAny(events);
             if (shutdownRequested.WaitOne(0))
             {
                 break;
             }
         }
         else
         {
             try
             {
                 BitmapSource result = (BitmapSource)RenderFrame(activeRequest.Visible, activeRequest.Output);
                 if (result != null && !IsDisposed)
                 {
                     Dispatcher.BeginInvoke(
                         new RenderCompletionHandler(OnRenderCompleted),
                         new RenderResult(activeRequest, result));
                 }
             }
             catch (Exception exc)
             {
                 Trace.WriteLine(String.Format("RenderRequest {0} failed: {1}", activeRequest.RequestID, exc.Message));
             }
         }
     }
 }
Esempio n. 5
0
        private void CreateRenderTask(DataRect visible, Rect output)
        {
            lock (this)
            {
                bitmapInvalidated = true;

                if (activeRequest != null)
                {
                    activeRequest.Cancel();
                }
                pendingRequest = new RenderRequest(nextRequestId++, visible, output);
                renderRequested.Set();
            }
            if (renderThread == null)
            {
                renderThread = new Thread(RenderThreadFunc);
                renderThread.IsBackground = true;
                renderThread.SetApartmentState(ApartmentState.STA);
                renderThread.Start();
            }
        }
 /// <summary>Constructs successul rendering result</summary>
 /// <param name="request">Source request</param>
 /// <param name="result">Rendered bitmap</param>
 public RenderResult(RenderRequest request, BitmapSource result)
 {
     this.request = request;
     pixelWidth = result.PixelWidth;
     pixelHeight = result.PixelHeight;
     stride = result.PixelWidth * result.Format.BitsPerPixel / 8;
     dpiX = result.DpiX;
     dpiY = result.DpiY;
     palette = result.Palette;
     format = result.Format;
     pixels = new byte[pixelHeight * stride];
     result.CopyPixels(pixels, stride, 0);
 }
 private void RenderThreadFunc()
 {
     WaitHandle[] events = new WaitHandle[] { renderRequested, shutdownRequested };
     while (true)
     {
         lock (this)
         {
             activeRequest = null;
             if (pendingRequest != null)
             {
                 activeRequest = pendingRequest;
                 pendingRequest = null;
             }
         }
         if (activeRequest == null)
         {
             WaitHandle.WaitAny(events);
             if (shutdownRequested.WaitOne(0))
                 break;
         }
         else
         {
             try
             {
                 BitmapSource result = (BitmapSource)RenderFrame(activeRequest.Visible, activeRequest.Output);
                 if (result != null)
                     Dispatcher.BeginInvoke(
                         new RenderCompletionHandler(OnRenderCompleted),
                         new RenderResult(activeRequest, result));
             }
             catch (Exception exc)
             {
                 Trace.WriteLine(String.Format("RenderRequest {0} failed: {1}", activeRequest.RequestID, exc.Message));
             }
         }
     }
 }
        private void CreateRenderTask(DataRect visible, Rect output)
        {
            lock (this)
            {
                bitmapInvalidated = true;

                if (activeRequest != null)
                    activeRequest.Cancel();
                pendingRequest = new RenderRequest(nextRequestId++, visible, output);
                renderRequested.Set();
            }
            if (renderThread == null)
            {
                renderThread = new Thread(RenderThreadFunc);
                renderThread.IsBackground = true;
                renderThread.SetApartmentState(ApartmentState.STA);
                renderThread.Start();
            }
        }
        protected virtual void OnRenderCompleted(RenderResult result)
        {
            if (result.IsSuccess)
            {
                completedRequest = result.Request;
                completedBitmap = result.CreateBitmap();
                bitmapInvalidated = false;

                InvalidateVisual();
                BackgroundRenderer.RaiseRenderingFinished(this);
            }
        }
Esempio n. 10
0
 /// <summary>Constructs successul rendering result</summary>
 /// <param name="request">Source request</param>
 /// <param name="result">Rendered bitmap</param>
 public RenderResult(RenderRequest request, BitmapSource result)
 {
     this.bitmap  = result;
     this.request = request;
     result.Freeze();
 }
Esempio n. 11
0
		/// <summary>Constructs successul rendering result</summary>
		/// <param name="request">Source request</param>
		/// <param name="result">Rendered bitmap</param>
		public RenderResult(RenderRequest request, BitmapSource result)
		{
            this.bitmap = result;
			this.request = request;
            result.Freeze();
		}
Esempio n. 12
0
		protected virtual void OnRenderCompleted(RenderResult result)
		{
            if (IsDisposed)
                return;

			completedRequest = result.Request;
			completedBitmap = result.Bitmap;
			bitmapInvalidated = false;

			InvalidateVisual();
			BackgroundRenderer.RaiseRenderingFinished(this);
		}