Example #1
0
 public void SetUnfocus()
 {
     _isFocused = false;
     this.AbortAnimation("Animation");
     this.ScaleTo(1, 334);
     _storyboardReader?.Dispose();
     _storyboardReader = null;
     _previewBitmap    = null;
     InvalidateSurface();
 }
Example #2
0
 private static unsafe DllImports.SubBitmap GetFrame(SubSkBitmap subSkBitmap)
 {
     return(new DllImports.SubBitmap
     {
         rectLeft = subSkBitmap.SkRect.Left,
         rectRight = subSkBitmap.SkRect.Right,
         rectTop = subSkBitmap.SkRect.Top,
         rectBottom = subSkBitmap.SkRect.Bottom,
         bitmapWidth = subSkBitmap.Bitmap.Width,
         bitmapHeight = subSkBitmap.Bitmap.Height,
         bitmapInfoColorType = (int)SkiaUtils.ConvertToFormat(subSkBitmap.Bitmap.Info.ColorType),
         bitmapBytes = (byte *)subSkBitmap.Bitmap.GetPixels(),
         bitmapHash = subSkBitmap.SkRect.GetHashCode() % (int.MaxValue - 1) + 1 // let 0 be invalid hash value
     });
 }
Example #3
0
        public void ResetFocus()
        {
            try
            {
                _animationCts?.Cancel();
            }
            catch (ObjectDisposedException)
            {
            }

            _isFocused = false;
            this.AbortAnimation("ScaleTo");
            this.AbortAnimation("Animation");
            this.ScaleTo(1);
            _storyboardReader?.Dispose();
            _storyboardReader = null;
            _previewBitmap    = null;
            InvalidateSurface();
        }
Example #4
0
        public async void SetFocus()
        {
            _isFocused = true;
#pragma warning disable 4014
            this.ScaleTo(0.9);
#pragma warning restore 4014
            InvalidateSurface();

            if (ContentTilePreviewPath != null && _storyboardReader == null)
            {
                _storyboardReader = new StoryboardReader(Path.Combine(Application.Current.DirectoryInfo.Resource,
                                                                      ContentTilePreviewPath));
            }

            await Task.Delay(TimeSpan.FromMilliseconds(500));

            if (_storyboardReader == null || !_isFocused)
            {
                return;
            }

            var tilePreviewDuration = _storyboardReader.Duration();
            var animation           = new Animation
            {
                {
                    0, 1, new Animation(t =>
                    {
                        var position      = TimeSpan.FromMilliseconds(t);
                        var previewBitmap = _storyboardReader.GetFrame(position);
                        if (previewBitmap == null)
                        {
                            return;
                        }
                        _previewBitmap = previewBitmap;
                        InvalidateSurface();
                    }, 0,
                                        tilePreviewDuration.TotalMilliseconds)
                }
            };
            animation.Commit(this, "Animation", 1000 / 5, (uint)(tilePreviewDuration.TotalMilliseconds / 6), repeat: () => true);
        }
Example #5
0
        public async void SetFocus()
        {
            using (_animationCts = new CancellationTokenSource())
            {
                var token = _animationCts.Token;
                try
                {
                    _isFocused = true;
                    this.AbortAnimation("ScaleTo");
                    await this.ScaleTo(0.9);

                    if (!_isFocused)
                    {
                        return;
                    }

                    InvalidateSurface();

                    if (ContentTilePreviewPath == null)
                    {
                        return;
                    }

                    if (_storyboardReader == null)
                    {
                        _storyboardReader = new StoryboardReader(ContentTilePreviewPath,
                                                                 StoryboardReader.PreloadingStrategy.PreloadOnlyRemoteSources);
                    }

                    await Task.WhenAll(Task.Delay(500), _storyboardReader.LoadTask).WaitAsync(token);

                    if (_storyboardReader == null || !_isFocused)
                    {
                        return;
                    }

                    var tilePreviewDuration = _storyboardReader.Duration();
                    var animation           = new Animation
                    {
                        {
                            0, 1, new Animation(t =>
                            {
                                var position      = TimeSpan.FromMilliseconds(t);
                                var previewBitmap = _storyboardReader.GetFrame(position);
                                if (previewBitmap == null)
                                {
                                    return;
                                }
                                _previewBitmap = previewBitmap;
                                InvalidateSurface();
                            }, 0,
                                                tilePreviewDuration.TotalMilliseconds)
                        }
                    };
                    animation.Commit(this, "Animation", 1000 / 5, (uint)(tilePreviewDuration.TotalMilliseconds / 6),
                                     repeat: () => true);
                }
                catch (TaskCanceledException)
                {
                }
                catch (Exception ex)
                {
                    _logger.Error(ex);
                }
            }
        }