[New feature] Display different image in second darkroom window

Hi all,

A few days ago I had asked this: Viewing two different images side by side in the darkroom without disrupting editing.

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.

Thanks, cheers

12 Likes

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?

1 Like

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.

2 Likes

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.

1 Like

I really like the idea. I hope you get it implemented.

1 Like

I’ve just watched the video more closely, so I think I now see how it works.

Image A is the main window
Image B is 2nd window

  • Image A and B will be the same in default state.
  • Pin image B, and that image will stay in its current state.
    – Image A can change to a different image or to a different state of the current image.
  • Unpin image B and it reverts to whatever image A is.
  • To revert to the previous image B, select it again in the filmstrip
    – Image A and B will both revert
  • Pin image B again if you want a different image for A

Point 4 above was the step I was a bit unsure about, but I think this is how it works…

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.

2 Likes

It sounds good.

Can one pin a snapshot of the same image, or does it have to be another image? I suppose duplicates count as “another image?”

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.

1 Like

I was wondering that too, that’s awesome!

1 Like

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.

This change enables that already. Even better, you can pin at any point of the editing process, no need to snapshot.

Or maybe I did not understand what you mean?

Well yes, it’s just a better UX for a very common task in photo editing, like editing tags in the lighttable instead of opening the XMP with vi :slight_smile:

1 Like

I mean a fully zoomable and panable snapshot.

Panning and zooming already works in the secondary window.

Does it work with your patch?

Yes, it does (see below)!

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.

1 Like