示例#1
0
        protected virtual async Task Render()
        {
            var bitmap  = default(WriteableBitmap);
            var success = default(bool);
            var info    = default(BitmapHelper.RenderInfo);

            await Windows.Invoke(() =>
            {
                bitmap  = this.Bitmap;
                success = bitmap.TryLock(LockTimeout);
                if (!success)
                {
                    return;
                }
                info = BitmapHelper.CreateRenderInfo(bitmap, this.Color);
            }).ConfigureAwait(false);

            if (!success)
            {
                //Failed to establish lock.
                this.Start();
                return;
            }

            Render(info, this.RendererData);

            await Windows.Invoke(() =>
            {
                bitmap.AddDirtyRect(new Int32Rect(0, 0, bitmap.PixelWidth, bitmap.PixelHeight));
                bitmap.Unlock();
            }).ConfigureAwait(false);

            this.Start();
        }
示例#2
0
        public async Task Clear()
        {
            var bitmap  = default(WriteableBitmap);
            var success = default(bool);
            var info    = default(BitmapHelper.RenderInfo);

            await Windows.Invoke(() =>
            {
                bitmap  = this.Bitmap;
                success = bitmap.TryLock(LockTimeout);
                if (!success)
                {
                    return;
                }
                info = BitmapHelper.CreateRenderInfo(bitmap, Colors.Transparent);
            }).ConfigureAwait(false);

            BitmapHelper.Clear(info);

            await Windows.Invoke(() =>
            {
                bitmap.AddDirtyRect(new Int32Rect(0, 0, bitmap.PixelWidth, bitmap.PixelHeight));
                bitmap.Unlock();
            }).ConfigureAwait(false);
        }
示例#3
0
        public async Task Render()
        {
            const byte SHADE = 30;

            var bitmap = default(WriteableBitmap);
                                 var success = default(bool);
                                 var waveRenderInfo  = default(BitmapHelper.RenderInfo);
                                 var powerRenderInfo = default(BitmapHelper.RenderInfo);

                                 if (this.RendererData == null)
            {
                return;
            }

                                 await Windows.Invoke(() =>
            {
                bitmap  = this.Bitmap;
                success = bitmap.TryLock(LockTimeout);
                if (!success)
                {
                    return;
                }
                if (this.Rms.Value)
                {
                    var colors      = this.Color.ToPair(SHADE);
                    waveRenderInfo  = BitmapHelper.CreateRenderInfo(bitmap, colors[0]);
                    powerRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, colors[1]);
                }
                else
                {
                    waveRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, this.Color);
                }
            }).ConfigureAwait(false);

                                 if (!success)
            {
                //No bitmap or failed to establish lock.
                return;
            }

                                 Render(
                                     this.RendererData,
                                     waveRenderInfo,
                                     powerRenderInfo,
                                     this.Rms.Value,
                                     WaveBarBehaviourConfiguration.GetMode(this.Mode.Value)
                                     );

                                 await Windows.Invoke(() =>
            {
                bitmap.AddDirtyRect(new Int32Rect(0, 0, bitmap.PixelWidth, bitmap.PixelHeight));
                bitmap.Unlock();
            }).ConfigureAwait(false);
        }
示例#4
0
 protected virtual Task Clear()
 {
     return(Windows.Invoke(() =>
     {
         if (!this.Bitmap.TryLock(LockTimeout))
         {
             return;
         }
         BitmapHelper.Clear(BitmapHelper.CreateRenderInfo(this.Bitmap, this.Color));
         this.Bitmap.AddDirtyRect(new Int32Rect(0, 0, this.Bitmap.PixelWidth, this.Bitmap.PixelHeight));
         this.Bitmap.Unlock();
     }));
 }
        protected virtual async Task Render()
        {
            const byte SHADE = 30;

            var bitmap          = default(WriteableBitmap);
            var success         = default(bool);
            var valueRenderInfo = default(BitmapHelper.RenderInfo);
            var rmsRenderInfo   = default(BitmapHelper.RenderInfo);
            var crestRenderInfo = default(BitmapHelper.RenderInfo);

            await Windows.Invoke(() =>
            {
                bitmap  = this.Bitmap;
                success = bitmap.TryLock(LockTimeout);
                if (!success)
                {
                    return;
                }
                if (this.ShowRms.Value)
                {
                    var colors      = this.Color.ToPair(SHADE);
                    valueRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, colors[0]);
                    rmsRenderInfo   = BitmapHelper.CreateRenderInfo(bitmap, colors[1]);
                    if (this.ShowCrestFactor.Value)
                    {
                        crestRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, Colors.Red);
                    }
                }
                else
                {
                    valueRenderInfo = BitmapHelper.CreateRenderInfo(bitmap, this.Color);
                }
            }).ConfigureAwait(false);

            if (!success)
            {
                //Failed to establish lock.
                this.Start();
                return;
            }

            Render(valueRenderInfo, rmsRenderInfo, crestRenderInfo, this.RendererData);

            await Windows.Invoke(() =>
            {
                bitmap.AddDirtyRect(new Int32Rect(0, 0, bitmap.PixelWidth, bitmap.PixelHeight));
                bitmap.Unlock();
            }).ConfigureAwait(false);

            this.Start();
        }