New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add monitor profile and softproofing #3029
Conversation
…, but display it below the monitor profile to indicate that this is the only place where it is used.
…d add a method to load profile lists from arbitrary directories.
… rendering intent and extend the preferences to provide a default profile and intent for the editor panel.
profile for the output profile will only be shown when the new softproof toggle button (bottom of the preview in the Editor panel) will be on.
output profile rendering intent + soft-proof button. DCP profile GUI switched from 2x2 array to a single column.
I'll try to continue where we left off:
And some small and more or less inconsequential stuff:
|
Just something you might want to use in the future: If you want to temporarily block signals without the possibility to forget unblocking them, using a RAII helper like
which can then be used like
|
Nice idea, I'll add it to guiutils.cc. |
Maybe you could use this commit instead of the wheel function, i.e. make the pop-up button switch the selected entry cyclically when clicked, for similarly simple access to this? (The commit is larger than necessary since it begins to battle long compile times by reducing unnecessary header inter-dependencies and tries to resolve some of the open points in the common pop-up base.) |
… the next entry when clicked and also do some miscellaneous code clean-ups including forward declarations.
The softproofing branch has been updated:
I'll make a separate patch in master for the ConnectionBlocker class. If the changes are fine for you, I'd like to commit ASAP. |
@Hombre57 If you add the absolute rendering intent to the pop-up button, it should probably also be added to the preferences dialog? I also don't think any of the issues I raised in my first comment are addressed, either by implemented changes or by rejecting the suggestions? And one question concerning the basic work flow: Why do we need the separate soft proof button? What is the difference to choosing So I am sorry, but I don't think this should be merged yet. Not because of technicalities that probably just bug me and nobody else, but because I am not yet convinced that the pieces fit together. Maybe I just don't understand how the soft proof button is intended, but then could you try to explain? Thanks. |
@Hombre57 Also, as I understand, an output profile is very often chosen (and embedded in the output file) even if no soft proofing in the sense of previewing the effect of printer technology on a computer monitor is done. This is necessary to have predictable results after passing on developed images and will usually be one of the standard RGB profiles like sRGB, Adobe RGB or eciRGBv2. |
I'll add that.
The workflow is :
Before, this branch, RT did theoretically work as if the soft-proof button was always on. Other software have a similar button to activate soft-proofing on demand, so here it is, but we could revert to the previous version, where it's always on.
By toggling the soft-proof button, it'll use the
I don't know how to use the
The ICM panel, as all tool panel, should be used to set parameters that will have a consequence on the output image. The soft-proof button, monitor profile and monitor rendering intent will only affect the preview when editing the image. But I agree that we should maybe have soft-proofing enabled as before, this has to be discussed.
See above.
Okay, will revert that.
Don't really know, I'll let @Beep6581 answer to this.
Because I'm an old style programmer, and thought that making a typdef was mandatory to use the contracted syntax (i.e. "RenderingIntent" instead of "enum RenderingIntent"). But I was wrong. Was it possible before C++11 ?
Ah, missed that too :). I'll fix that.
I'll follow the advice given in the link pointed out by @Beep6581 and only do that locally. I would be very grateful if you could to that as well to avoid problem on other's side. Hard reseting seem to be a last resort solution, after some tweaking because of a bad move (i.e. pulling a rebased branch). I can also delete your branches locally and recreate it instead of pulling or resetting, but others may not have the info.
What do you recommend then ? |
I think the current way of doing things w.r.t. to the output profile is fine, we just do not need the soft proof button or internal flag IMHO, at least not in its current form. Soft proofing is a strict subset of applying an output profile AFAIU, it really means to use a profile to emulate the effect of printer technology (subtractive colour mixture) using a computer monitor (additive colour mixture). Hence, also to keep this PR smaller, I would recommend to just remove it. (Later on we can add it as an option to enable LCMS' internal soft proof flag, but then it will also influence the output AFAIU (since it is applied to the output transform) and should hence be stored persistently in the processing parameters and be handled in the ICM panel.
Yes, it is definitely the same in C++98 (C++11 only added enum classes to the mix with stricter scoping and conversion rules). Developers coming from a C background often
I am perfectly fine with not putting it in the processing parameters, but then we should not abuse the processing parameter change events to signal that these properties have been changed. We should just trigger the necessary computations in the setter methods of the image processing coordinators. Also since the soft proof button in its current form, disables the output profile completely it does affect the final image output. As indicated above, I think there is more to the output profile than soft proofing, I'd even say its canonical use is not soft proofing, but rather to properly convert from a larger working profile to smaller output profile, e.g. to sRGB. |
Regarding soft-proofing. We must make sure that we implement things in a way which makes sense from a user's perspective. User interface items should do what they say they do and should not magically change roles which the user can only learn about from some hidden paragraph in RawPedia. I have mulled this over in my head for a while and it basically comes down to the fact that the output profile should not be used for the printer profile because the printer profile used for soft-proofing must not contribute to the saved image and so it is not an output profile, it is not part of the output image.
If we agree on that, there remains the question: where does the user specify the printer profile? Well it should not be in the toolbox because it does not affect the saved image. That leaves us three choices:
|
I'll make something that is not elegant, but I'll let someone else finish this branch ( @adamreichold ? ). More on the reasons later on. |
@Beep6581 @Hombre57 I agree with the previous comment on a separate tab for monitor and printer profile. However, since this is getting very much out of hand, I think we should try to wrap something useful up and push that out to our users before we make more plans. Hence, I would suggest we strictly limit this issue and pull request to
Anything else should be tackled in separate issues and pull requests IMHO. This way, users get a chance to tell us what they actually want and we get the chance to actually finish parts of this without getting bogged down by ever more complicated reviews that touch ever more issues. |
I wanted easy monitor profile and rendering intent selection, and I'd be very happy if that got committed to master (along with the icons from #2744 (comment) ) and if master was merged into gtk3. I do think subsequently moving these things to a new notebook tab as I wrote above is a necessity, but it would be nice to be able to use this feature in the meanwhile. As a side-note, once this is committed and master is merged into gtk3, I would like to upload a new build to Coverity to scan for issues in light of recent changes. |
@Hombre57 Does this mean you want this adopted? If so, I would offer to try to boil it down to the reduced scope and make it ready for merging. Or do you want to finish it yourself with the reduced scope? We could then merge this and begin to experiment on a more complete solution for soft proofing using the separate ICM preview properties tab? |
I mean that you can take it over and make what you want with it. I'm also "plussing" the idea of a dedicated tab for the monitor profile and printer profile. |
…to mix this with the output profile handling.
… monitor profile using processing parameter change events.
I went through it again and removed the soft proof button and flag. Hence, this is now reduced to having the output profile intent stored persistently in the processing parameters and modifiable via the ICM panel and the monitor profile and intent being selectable in the preferences and editor panel. I did change the various technicalities I was anxious about and tried to trigger the monitor transform changes directly instead of via processing parameter change events but failed so far to implement this cleanly. I also left the current change events as is, even though I think we do not need separate events for output profile and intent. Personally, I think we should now merge this to begin testing and gathering user feedback. Adding the preview ICM tab seems like a logical next step that can build upon this after merging. Cleaning up the event handling is probably something best done after implementing full soft proofing when we know exactly which kinds of events with which effects on the pipeline we need. @Beep6581 Can you give the branch another test and merge if you are satisfied? @Hombre57 Can you explain why you wanted to give away the branch in the end? It seems like the review was quite frustrating for you? Is there something that you think that we generally or I specifically should do different in such situations? |
I tested preview, saving and PP3, and it appears to be working correctly with one bug. When I open a previously edited photo (i.e. one with a PP3 assigned), save a partial PP3 of the "Color management settings", then change just the output profile's rendering intent and save a new partial PP3, the saved PP3s are identical. They lack the |
…ure the default output intent is relative colorimetric everywhere instead of perceptual as to not change the previous behaviour.
@Beep6581 Seems like the output intent was just missing from |
…oofing Add easy selection of monitor profile and rendering intent, closes #2744
Fix confirmed, branch merged. Feel free to delete it if it's not needed. |
No description provided.