Add continuous long-form comic reading mode - #275
Conversation
16fb428 to
cc6139a
Compare
- Disables changing to Fit Height & Fit All when in Continous Layout - Changing to Continous Layout when in to FIt Height or Fit All will reset to Fit Width
|
Nice work, I will happily merge the code. Changes I've made:
Bugs I've Found:
I will let you figure out these bugs since you probably know more about what is going on. |
|
Build Successful! You can find a link to the downloadable artifact below.
|
Okay, I'll take a look at those tomorrow and get back to you. |
ea1b7c1 to
37be9a9
Compare
|
Thanks for the detailed testing. I've prepared a follow-up on top of 37be9a9 that keeps a page-relative anchor in Continuous mode. Resizing the window, docking / undocking or switching between Original and Fit Width now preserves the same position within the current page. Also pages should no longer drift left and right. I tested the changes with a fixed size and mixed-size test comics. ComicRack persists only |
|
That looks great, seems to work fine. I will test the PR build for a couple days with my regular setup and see if anything popups.
The current page only seems enough IMHO. It's something to be expected already, although to a lesser extent than long form comics. I mean how long can a page get? Edit: Something I've just stumbled upon and I will leave here as a note to check on it later. Proposed Changed: ------------ ComicRack.Engine.Display.Forms/ComicDisplayControl.cs ------------
index 45d28f9a..03530737 100644
@@ -2558,14 +2558,9 @@ namespace cYo.Projects.ComicRack.Engine.Display.Forms
}
ImageFitMode imageDisplayMode = config.ImageDisplayMode;
bool fitOnlyIfOversized = config.FitOnlyIfOversized;
- if (imageDisplayMode == ImageFitMode.FitWidth || imageDisplayMode == ImageFitMode.FitWidthAdaptive)
- {
- fitOnlyIfOversized = false;
- }
- else if (imageDisplayMode == ImageFitMode.BestFit || imageDisplayMode == ImageFitMode.FitHeight || imageDisplayMode == ImageFitMode.Fit)
+ if (imageDisplayMode == ImageFitMode.BestFit || imageDisplayMode == ImageFitMode.FitHeight || imageDisplayMode == ImageFitMode.Fit)
{
imageDisplayMode = ImageFitMode.FitWidth;
- fitOnlyIfOversized = true;
}
// RTL still controls page navigation, but a vertical strip must not mirror
// its horizontal viewport. |
I agree, most likely not worth the extra effort.
Seems ok to remove the forced You could consider disabling Best Fit alongside with Fit Height and Fit All in Continuous mode. |
|
Just a Note: |
What this adds
This adds a fourth page layout, Long Form (Continuous), for webtoons, manhwa, and other comics made from vertically ordered images.
In this mode ComicRack treats the filtered book as one scrollable strip:
The mode is available from the existing Page Layout menus and can be assigned in keyboard shortcuts. Existing Single Page, Two Pages, and Adaptive behavior remains unchanged, as do saved rotation and page-margin settings outside continuous mode.
Implementation notes
The reader keeps lightweight geometry for the ordered pages, but decodes and renders only visible pages and their immediate neighbors through the existing page pool. It reuses the existing renderer, scrolling surface, fit controls, and navigation state rather than introducing a separate viewer.
Automatic webtoon detection, per-comic layout defaults, a dedicated icon, and translation updates are deliberately left out of this first pass.
Screenshots
Page Layout menu
Continuous Fit Width view
Continuous Original Size view
All three screenshots use a generated test comic and contain no personal desktop or library content.
Testing
Int32.MaxValue.Development note
This feature was developed iteratively with AI-assisted, or “vibe coded,” implementation, followed by a manual review of the final diff, a clean rebase onto
dev, focused geometry checks, and application-level testing in isolated profiles. I am calling that out plainly so reviewers know how the patch was produced; feedback on the viewer integration is welcome.Closes #54
Refs #223