Skip to content

Commit

Permalink
Tiff navigation improvements and refactor #190
Browse files Browse the repository at this point in the history
  • Loading branch information
Ruben2776 committed Feb 6, 2025
1 parent 8670c55 commit 31e08ba
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 14 deletions.
52 changes: 39 additions & 13 deletions src/PicView.Avalonia/Navigation/NavigationHelper.cs
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,19 @@ public static async Task Navigate(bool next, MainViewModel vm)
var navigateTo = next ? NavigateTo.Next : NavigateTo.Previous;
var nextIteration = vm.ImageIterator.GetIteration(vm.ImageIterator.CurrentIndex, navigateTo);
var currentFileName = vm.ImageIterator.ImagePaths[vm.ImageIterator.CurrentIndex];
if (!TiffManager.IsTiff(currentFileName) || vm.ImageIterator.IsReversed)
if (!TiffManager.IsTiff(currentFileName))
{
await CheckCancellationAndStartIterateToIndex(nextIteration, vm).ConfigureAwait(false);
return;
}
else
{
await TiffNavigation(vm, currentFileName, nextIteration).ConfigureAwait(false);
}
}

if (TiffNavigationInfo is null)
private static async Task TiffNavigation(MainViewModel vm, string currentFileName, int nextIteration)
{
if (TiffNavigationInfo is null && !vm.ImageIterator.IsReversed)
{
var tiffPages = await Task.FromResult(TiffManager.LoadTiffPages(currentFileName)).ConfigureAwait(false);
if (tiffPages.Count < 1)
Expand All @@ -80,25 +86,45 @@ public static async Task Navigate(bool next, MainViewModel vm)
}
TiffNavigationInfo = new TiffManager.TiffNavigationInfo
{
CurrentPage = 1, // Skip first page since it has already been shown
CurrentPage = 0,
PageCount = tiffPages.Count,
Pages = tiffPages
};
}
else
{
TiffNavigationInfo.CurrentPage += 1;
}

if (TiffNavigationInfo.CurrentPage >= TiffNavigationInfo.PageCount)

if (TiffNavigationInfo is null)
{
TiffNavigationInfo.Dispose();
TiffNavigationInfo = null;
await CheckCancellationAndStartIterateToIndex(nextIteration, vm).ConfigureAwait(false);
}
else
{
UpdateImage.SetTiffImage(TiffNavigationInfo, Path.GetFileName(currentFileName), vm);
if (vm.ImageIterator.IsReversed)
{
if (TiffNavigationInfo.CurrentPage - 1 <= 0)
{
await CheckCancellationAndStartIterateToIndex(vm.ImageIterator.CurrentIndex, vm).ConfigureAwait(false);
TiffNavigationInfo.Dispose();
TiffNavigationInfo = null;
return;
}

TiffNavigationInfo.CurrentPage -= 1;
}
else
{
TiffNavigationInfo.CurrentPage += 1;
}

if (TiffNavigationInfo.CurrentPage >= TiffNavigationInfo.PageCount || TiffNavigationInfo.CurrentPage <= 0)
{
await CheckCancellationAndStartIterateToIndex(nextIteration, vm).ConfigureAwait(false);
TiffNavigationInfo.Dispose();
TiffNavigationInfo = null;
}
else
{
UpdateImage.SetTiffImage(TiffNavigationInfo, Path.GetFileName(currentFileName), vm);
}
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/PicView.Avalonia/Navigation/UpdateImage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ public static void SetTiffImage(TiffManager.TiffNavigationInfo tiffNavigationInf
var width = source?.PixelSize.Width ?? 0;
var height = source?.PixelSize.Height ?? 0;

name = name.Insert(name.LastIndexOf('.'), $" [{tiffNavigationInfo.CurrentPage}/{tiffNavigationInfo.PageCount - 1}]");
name = name.Insert(name.LastIndexOf('.'), $" [{tiffNavigationInfo.CurrentPage + 1}/{tiffNavigationInfo.PageCount}]");

Dispatcher.UIThread.Invoke(() =>
{
Expand Down

0 comments on commit 31e08ba

Please sign in to comment.