private async void ScrollViewer_ViewChanged(object sender, ScrollViewerViewChangedEventArgs e) { if (e.IsIntermediate) { return; } // Use width instead of height in vertical mode if (Data.UseVerticalReader) { if (ScrollViewer.CurrentAnchor is ReaderImage image) { var index = ReaderVertical.GetElementIndex(ScrollViewer.CurrentAnchor); Data.ReaderIndex = index; var width = (int)Math.Round(ScrollViewer.ExtentWidth); await image.ResizeWidth(width); (ReaderVertical.TryGetElement(index + 1) as ReaderImage)?.ResizeWidth(width); (ReaderVertical.TryGetElement(index + 2) as ReaderImage)?.ResizeWidth(width); } } else { await ReaderImage.ResizeHeight((int)Math.Round(ScrollViewer.ExtentHeight)); } }
private async Task ShowReader(int page = 0) { if (Data.ShowReader) { var readerSet = Data.ArchiveImagesReader.FirstOrDefault(s => s.Page >= page); if (readerSet == null) { return; } var index = Data.ArchiveImagesReader.IndexOf(readerSet); Data.ReaderIndex = index; if (Data.UseVerticalReader) { await Task.Delay(100); var element = ReaderVertical.GetOrCreateElement(index); element.UpdateLayout(); element.StartBringIntoView(new BringIntoViewOptions { AnimationDesired = false, VerticalAlignmentRatio = 0f }); } else { await ChangePage(); } if (Service.Platform.AnimationsEnabled) { await FadeIn.StartAsync(ScrollViewer); } else { ScrollViewer.SetVisualOpacity(1); } FocusReader(); } else { if (Service.Platform.AnimationsEnabled) { await ImagesGrid.FadeInAsync(); } else { ImagesGrid.SetVisualOpacity(1); } } }
private async void OpenReader(int page, object item = null) { if (_transition) { return; } _transition = true; var readerSet = Data.ArchiveImagesReader.FirstOrDefault(s => s.Page >= page); if (readerSet == null) { return; } var index = Data.ArchiveImagesReader.IndexOf(readerSet); if (Service.Platform.AnimationsEnabled && item != null && !Data.UseVerticalReader) { var image = ImagesGrid.ContainerFromItem(item).FindDescendant("Thumbnail"); if (!(image.ActualWidth == 0 || image.ActualHeight == 0)) { var anim = ConnectedAnimationService.GetForCurrentView().PrepareToAnimate(GetOpenTarget(readerSet, page), image); anim.Configuration = new BasicConnectedAnimationConfiguration(); } } Data.ShowReader = true; Data.ReaderIndex = index; if (Data.UseVerticalReader) { await Task.Delay(100); var element = ReaderVertical.GetOrCreateElement(index); element.UpdateLayout(); element.StartBringIntoView(new BringIntoViewOptions { AnimationDesired = false, VerticalAlignmentRatio = 0f }); } else { await ChangePage(); } if (Data.Archive.isnew) { _wasNew = true; } if (Service.Platform.AnimationsEnabled) { FadeIn.Start(ReaderBackground); await FadeIn.StartAsync(ScrollViewer); } else { ReaderBackground.SetVisualOpacity(1); ScrollViewer.SetVisualOpacity(1); } _focus = true; FocusReader(); _transition = false; }