darktable-org / darktable

darktable is an open source photography workflow application and raw developer
https://www.darktable.org
GNU General Public License v3.0
9.68k stars 1.13k forks source link

Style with second instance of module overwrites first instance when applied #16375

Open wpferguson opened 7 months ago

wpferguson commented 7 months ago

Describe the bug

Creating a style from an image with two instances of a module and only selecting the second instance, causes the default instance to be overwritten when the style is applied instead of adding a second instance.

There is a work around. If you specify both instances of the module when creating the style then it works correctly.

Steps to reproduce

  1. Open an image with the default scene referred workflow and add a 2nd instance of tone equalizer and place it just below filmic_rgb. Set the second instance to tone curve soft. 2ndinstance

  2. Create a style from the image selecting only the second instance.
    createstyle

  3. Apply the style, then open the image and look at the module list.
    afterpaste

Expected behavior

Create the second instance and put it just below filmic_rgb.

Logfile | Screenshot | Screencast

No response

Commit

No response

Where did you obtain darktable from?

downloaded from www.darktable.org

darktable version

4.7.0+633~gb0e476554e

What OS are you using?

Linux

What is the version of your OS?

ubuntu 22.04

Describe your system?

No response

Are you using OpenCL GPU in darktable?

None

If yes, what is the GPU card and driver?

No response

Please provide additional context if applicable. You can attach files too, but might need to rename to .txt or .zip

No response

TurboGit commented 7 months ago

causes the default instance to be overwritten when the style is applied instead of adding a second instance.

Right, since you selected only one instance, in the style you have a single instance. Where should it be copied then?

Why a new instance should be created? There is no way to know the intent here, both could be ok (create a new instance or paste into the current one).

There is a work around. If you specify both instances of the module when creating the style then it works correctly.

Or if you hand-name the instance it should create a new instance I think.

wpferguson commented 7 months ago

I investigated this further, trying to come up with a better example, and perhaps understand the issue a little better :).

Let's say that I create an instance of the exposure module with the EV set to 0 and a parametric mask set to mask midtones. I name it midtones. I create a style with this exposure instance.

I import an image. I open the image and the default scene referred workflow is applied. I return to lighttable and then apply my exposure stye. I reopen the image in darkroom and I have 2 instances of exposure. Everything is good.

I import an image. I apply my exposure style. I open the image in darkroom and I have no scene referred default exposure adding 0.7EV because my midtone exposure module had already been applied.

So the issue is should an uninitialized image be initialized before pasting a style to it.

I don't know the "correct" answer to this.

The "work around" is to always include the modules you want to have present as well as what you want to add to ensure you get what you want. So maybe we just document?

TurboGit commented 7 months ago

So the issue is should an uninitialized image be initialized before pasting a style to it.

I don't know the "correct" answer to this.

I understand the scenario, but as you I'm really not sure of the wanted semantics here. Maybe someone will come with a strong argument in a direction...

github-actions[bot] commented 5 months ago

This issue has been marked as stale due to inactivity for the last 60 days. It will be automatically closed in 300 days if no update occurs. Please check if the master branch has fixed it and report again or close the issue.