Project

General

Profile

Bug #11783

print view doesn't repopulate export intent combobox

Added by Dan Torop over 1 year ago. Updated over 1 year ago.

Status:
Fixed
Priority:
Low
Assignee:
-
Category:
Printing
Target version:
Start date:
10/24/2017
Due date:
% Done:

100%

Affected Version:
git master branch
System:
Debian
bitness:
64-bit
hardware architecture:
amd64/x86

Description

Upon changing the export intent combobox, print_settings.c records its value in plugins/print/print/iccintent (and plugins/lighttable/export/iccintent). But the next time that combobox is created, it will always revert to its default value of "image settings".

This appears to be fixable by replacing

dt_bauhaus_combobox_set(d->intent, 0);

with

d->v_intent = dt_conf_get_int("plugins/print/print/iccintent");
dt_bauhaus_combobox_set(d->intent, d->v_intent);

in gui_init().

Meantime, in gui_reset(), printer intent is set to plugins/print/print/iccintent (the stored export intent value). I'm wondering if instead it should be set to 0.

Associated revisions

Revision 787d9537
Added by Dan Torop over 1 year ago

print: properly restore export intent

Previously this always reverted to "image settings". Furthermore, on
print settings reset, set print intent to perceptual rather than
an (off by one) value of export intent.

Fixes #11783.

History

#1 Updated by Dan Torop over 1 year ago

TEST CASE 1

  1. Open print view
  2. Set intent under "print settings" section to "relative colorimetric"
  3. Restart darktable
  4. Open print view
  5. Intent under "print settings" section is back to "image settings", though other settings are retained. Expected value should be "relative colorimetric".

TEST CASE 2

  1. Open print view
  2. Set intent under "print settings" section to "saturation"
  3. Click reset parameters button above print settings panel
  4. Choose a profile from the dropdown in the "printer" section
  5. The intent will be "absolute colorimetric", expected value should be "perceptual" (or some other standard reset value)

ADDITIONAL NOTE

Changing the export intent alters configuration values plugins/lighttable/export/iccintent and plugins/print/print/iccintent. The former actually changes the export intent. I haven't tested, but I wonder if this can cause more trouble in a case such as:

  1. In lighttable view set intent in export panel to "perceptual"
  2. Switch to print view
  3. Set intent in print settings panel to "saturation"
  4. Switch to lighttable view
  5. Export panel still shows intent as "perceptual", but will an exported image have saturation intent?
  6. Furthermore, change intent in export panel to "relative colorimetric"
  7. Switch to print view
  8. Print settings panel still shows intent as "saturation", but will export have "relative colorimetric" intent?

If this case fails, it may be best to temporarily set plugins/lighttable/export/iccintent before printing, or better yet make a way to pass intent directly to the export code.

#2 Updated by Tobias Ellinghaus over 1 year ago

If this case fails, it may be best to temporarily set plugins/lighttable/export/iccintent before printing, or better yet make a way to pass intent directly to the export code.

Using the config for message passing in a running dt has to stop, it's not thread safe and slow. We will have to remove those one by one without breaking things on the way, so I am not sure if it's the right thing to do at the moment.

#3 Updated by Dan Torop over 1 year ago

Tobias Ellinghaus wrote:

Using the config for message passing in a running dt has to stop, it's not thread safe and slow. We will have to remove those one by one without breaking things on the way, so I am not sure if it's the right thing to do at the moment.

Another case this would cause trouble would be if during a background export job of many images the user went into print settings and changed the profile/intent. This would cause all succeeding exports in that series to produce unexpected results.

An awful hack would be to set up another pixelpipe type, DT_DEV_PIXELPIPE_PRINT, with its own profile/intent conf overrides in colorout iop. But certainly not worth all that invasive work for a bad solution to an edge case. Otherwise, there would have to be a way to set up a pixelpipe with an optional override profile/intent? But I agree, seems tricky to do at the moment.

Regardless, I made a branch with a quick fix to the immediate problem.

#4 Updated by Dan Torop over 1 year ago

I created a separate bug #11787 for the config leak problem. PR 1547 has a fix to restore the intent combobox.

#5 Updated by Anonymous over 1 year ago

  • Status changed from New to Fixed
  • % Done changed from 0 to 100

#6 Updated by Roman Lebedev over 1 year ago

  • Target version set to 2.4.0

Also available in: Atom PDF