As it appeared that a good solution did not exist yet, I went ahead and sketched an implementation.
I added a pin toggle to the secondary window. When the toggle is on, the current image persists even if you start developing other photos. When the image is unpinned, the current behavior is restored.
See the demo below:
Also, resizing works:
If you would like to try it out, this is the branch:
If there is sufficient interest and no objection from the devs I can prepare a PR.
I like it! More functionality added to the 2nd window feature is welcome.
What about another image? I assume you could pin that?
But if you unpin it, and it reverts the current image, I guess you couldn’t then go back to the original pinned image?
This looks like a great improvement and more along the lines of what I intuitively thought that feature did. I think this will be useful for me when assessing sharpness / contrast / etc among similar shots of the same subject.
Sorry, I I didn’t understand what you mean. Like, pinning multiple images at once and keep them all in the second window? Or having multiple windows? Or something else?
For example, if you wanted to colour match from another image. So, the image in the 2nd window is completely different to the one you’re editing because it’s just serving as a reference/inspiration.
Yes, this is exactly what this change does. Opening the same image in anther window is supported already. This change makes it possible to keep image A open while you edit image B.
There are only two states: unpinned (default) and pinned.
In the unpinned state, the behavior is the same as without the change: when you load a different image in the main darkroom view, or when you edit the current image in the main view, the image displayed in the secondary view changes accordingly. That is, you have two in-sync views of the same image.
In the pinned state, the image in the secondary view stays the same (whatever image was pinned) even if you switch images in the main view. That is, the views can show different images. This is useful, for example, to compare different edits against a common reference.
When you pin an image you pin its current state in the darkroom. So you can pin any snapshot (or any point in the history for that matter) and continue editing the image to see the difference:
So yes, it can also be used as an alternative to the snapshot comparison tool (which I am not very fond of because it gets in the way of editing).
Yes, they do. You basically pin the current state of whatever you have in the main darkroom view.
This is equivalent to taking a screenshot and pasting it into any bitmap editor to keep it available (does ms paint still exist?). It saves a few clicks (maybe a lua script could help with this? @wpferguson) but with screenshots you can keep as many around as you want (or until it gets too confusing).
I have on my todo/wishlist to allow any snapshot to be shown in the 2nd window instead of side-by-side or overlaid. But to do this correctly will need some restructuring of the pipeline code. Which I’m mulling anyway for, many, other reasons, so this is just one more input in the design process. It may never happen, of course. Or it might result in an unlimited number of “2nd windows” each with their own fully zoomable/panable snapshot.
By the way, I also added a button (eye icon) to keep the 2nd window on top, for poor macOS users like myself who do not have the luxury of achieving this functionality via the window manager:
I may have misunderstood, but aren’t you zooming into a low-resolution image without recalculating? That would not really be suitable to compare the impact of fine grained effects locally.
To be clear; I’m not saying that this switch wouldn’t be a nice thing to have. It is just that if it works as I think it does (which is similar to the old way that snapshots were implemented) then people may have unreasonable expectations and be “disappointed”. So the eventual (“correct”) way of implementing it would be more complex. It is not unusual that we go through a couple of steps like that to get to a complete end result.
When you pin an image, it renders it at full scale (using dt_dev_image) and shows it in the second window. You then can zoom in/out and pan as you like.