Guerra24 / LRReader

A feature-complete reader and client for LANraragi
GNU General Public License v3.0
88 stars 5 forks source link

Reader animation setting. #25

Closed Giftora closed 2 years ago

Giftora commented 2 years ago

Hi I have been testing out LRReader and its wonderful. The only issue I have had is that the animation on changing pages makes it more difficult to read or flip pages quickly.

I am not familiar with UWP apps but the animation seems to be defined in this file ReaderImage.xaml.cs.

I tried to removed the animation but the images are still slow to display Is the fade there to hide some sort of processing?

If image display is an issue using hardware acceleration could be a solution (if its not already using the gpu). https://github.com/kanryu/quickviewer Is another project that has implemented an ultra fast archive viewer but they have some implementation issues. I would be interested in implementing some faster image processing if it is an issue.

Guerra24 commented 2 years ago

Hi!

Yes, the fade is there to hide the page change. Images are cached in their compressed form and when you change page it decodes the image, that is the delay you're seeing. This could be addressed with a more aggressive caching that would hold the final decoded and filtered image. I'm not sure if this is possible at all but will check.

This delay might be higher in the nightly builds due to them using the new thumbnail api thus not pre-caching the full pages until you actually open them in the reader.

I was suggested switching to SkiaSharp for the image decoding and processing but decided not to due to the reader being very image-heavy and not using the native solutions would only introduce more in-between steps probably slowing down everything.

Giftora commented 2 years ago

Thanks for the quick reply.

Pre-caching the bitmap images could help. Allowing for a pre-cache setting that will cache some number of pages before and after the currently read page is common in other comic readers.

Looking into SkiaSharp it seems to use a canvas.
In my experience canvas based rendering methods have been very performant when paired with in memory images.

I can take a look at this in a bit if you would like.

I'm still remembering how to code in C# so please forgive any ignorance.

Guerra24 commented 2 years ago

Allowing for a pre-cache setting that will cache some number of pages before and after the currently read page is common in other comic readers.

This is something I need to add, not as a setting but as a relative value based on the amount of pages.

I can take a look at this in a bit if you would like.

Nah, don't bother. I'm not planning on switching.

I'm still remembering how to code in C# so please forgive any ignorance.

Don't worry, I used this to learn C# so there is that 😅 Just be aware some of the code is quite bad, it works but could be way better.