PLv6 Bug: Distortion / Constrain to image ... Incorrectly set by partial preset

@jorismak as I stated in the last post to @John-M I repeated the test before making the post.

So

  1. I ‘Restored’ an empty database and navigated to directory where I had been testing presets. That was the only directory that I opened.

  2. All four images had ‘Distortion’ = OFF but ‘Constrain’ = ON. So I used my preset and set ‘Constrain’ = OFF for all four images and that is all that preset does.

  3. I selected the first image and executed ‘3 - Neutral colors’ and ‘Constrain’ = ON.

  4. I repeated the test at 3 on the second image and captured the snapshots

Before:-

after

  1. I then set all to OFF, navigated to an empty directory and ‘Restored’ an empty database.

  2. I repeated the navigation and the test and it happens every time, i.e. it is a “feature” of PL6.8.0 in this case!

In fact all the DxO presets cause the ‘Constrain’ to be set but 1, 2 and 3 do that at the same time as setting ‘Distortion’ = ON. But 3, 4 and 5 do it without activating ‘Distortion’ at all.

My ‘(P) Constrain to Image(OFF)’ will “rectify” the situation if anyone feels it needs rectifying and that is all that Partial preset does

image

Personally I feel that I want ‘Distortion’=ON, ‘Constrain to Image’=ON and Keep Ratio’=ON or all settings = OFF

BUT the ‘(P)__Distortion(OFF)’ and (ON) only toggle the ‘Distortion’ setting and do nothing to the ‘Constrain’ etc…

Plus if ‘Constrain …’ is toggled OFF then ‘Keep Ratio’ is cleared as well but toggling ‘Constrain …’ back ON leaves ‘Keep Ratio’ = OFF, i.e. there is no memory of its previous setting so it cannot be restored!?

For completeness there should be a ‘(P) Constrain to Image(ON), KR(ON)’ added to my ‘Distortion’ Partial presets

image

that contains

Preset = {
Settings = {
Base = {
DistortionAnamorphosisKeepEntireImage = false,
DistortionKeepRatio = true,
}
,
Overrides = {
}
,
Version = "17.3",
}
,
Version = "11.0",
}

The presets for 4 and 5 contain no mention of “Distortion” whatsoever and 5 doesn’t even seem to have a physical embodiment in the presets files, they are “figments” of DxPL’s “imagination” not mine or my presets.

Yes - that’s correct … but;

No - that’s not the case.

The issue can be readily replicated using DxO-issued presetsas explained here.

But, DxO’s default presets are not partial presets. So they set everything back to default, including the ‘constrain to image’ flag on the Distortion module.

As a test, I open an image, I load the ‘5 - no correction’ preset. Everything is off.
I now set the horizon to like 20 degrees as a test. I create a partial preset containing only the horizon module.

No, I reset the image back to ‘5 - no correction’. I apply my partial preset, and the horizon module is applied. Fine, but not special.

I reset the image back to ‘5 - no correction’. I change the ‘constrain to image’ flag to off (since it’s enabled by default). I now apply my partial preset, and again the horizon module gets set as in the preset. But the ‘constrain to image’ is left off, it’s not touched.

So partial presets are working? If the preset doesn’t contain the ‘distortion’ module, it’s left alone.

The two I’ve referred to (DxO’s 3 - Neutral Colors & 4 - Black & White ) are partial presets.


Note: It’s the Distortion correction that’s being wrongly impacted - - NOT the “Horizon module” (as you refer to it).

See simple test here - using DxO’s partial presets.

  1. Before applying 3 - Neutral Colors
    image - Constrain to Image = False

  2. After applying 3 - Neutral Colors
    image - Constrain to Image now True

… despite there being no setting for DistortionAnamorphosisKeepEntireImage included in the 3 - Neutral Colors partial preset.

I’ve used the Horizon module as ‘some content for the preset’, but I’ve shown that the distortion / constrain-to-image flag is untouched while applying presets that do not contain it. I was not talking about a problem in the Horizon module. I was using the Horizon module as something to demonstrate that the Distortion-constrain-image option is untouched in such cases.

And yes, if I try to edit the 3-neutral-color preset (you can’t save it though), I see that the distortion module is not included, so something is weird that. True.

But it’s also true what I said, if you recreate a partial preset it works just fine. The built-in DxO ones are toggling that image, and it’s because it is under the hood, not really meant / treated as partial presets.

If you create a partial preset yourself, the distortion module is untouched if you apply it.

edit:
(that 3-neutral-color preset is marked as a system preset, and is not a partial preset. It will behave weird, just take that for granted. If you make a new preset, you don’t get this issue).

Also, in the preset editor you can ‘copy’ 3-neutral-color, so you get ‘Copy of 3 - Neutral color’.
Now, Close DXO PL, open the created preset in a text editor from your presets folder, and you’ll see there is a line in there now suddenly that reads like ‘DistortionAnamorphosisKeepEntireImage = false’. Remove that line, save the file, and restart DxO PL (or, after making changes, make sure you restart DxO PL). Now the preset won’t touch the ‘constrain to image’ flag.

If your entire bug report is why an internal DxO preset behaves not the way you want, then the answer is simply ‘It are system presets, they have extra behaviour you will not see in the file itself’ (like this one, re-applying defaults between different versions, etc…).

In the TS / OP of this thread, the problem was stated that they made a partial preset themselves, which causes this issue. I stand by my answer: recreate the partial preset and you should not have this issue.
If you want to apply one of the DxO supplied presets but have this setting untouched, duplicate the preset and remove this line from the duplicate to have the effect.

Thank you, @jorismak - - A number of your assumptions and assertions were incorrect - - but, your observations prompted me to look more closely at the 3 - Neutral Color preset (as an example of the issue) … and now I understand the root of the problem :+1:

Explaining your misunderstandings first;

1) A preset with parameter isSystem = True does not force interpretation of it as a full (non-partial) preset.

  • Instead, this is an indication to PL that it should not allow the user to delete this preset via the PRESET EDITOR … as can be seen by the little padlock icons in its list of presets.
    image - Padlock icon = DxO system preset = Cannot be deleted

  • You can confirm this for yourself by making a manual copy of the 3 - Neutral Color.preset file (from outside PL), and remove the line isSystem = True - - Now start PL and apply this manual-copy … the result will be exactly the same as for the original 3 - Neutral Color preset … except, that now, when viewed via the PRESET EDITOR, it will not be listed with the padlock-icon - and it can be deleted (by the PE).

2) The 3 - Neutral Color preset IS a partial preset - - as is the “4 - Black & White” preset … they both change some settings without affecting others.


It was your following observation that prompted my curiosity …

… since removing the parameter DistortionAnamorphosisKeepEntireImage could not have been the reason for the change in behaviour (because that effectively reverts the preset back to its original state) … there had to be another difference in the preset resulting from the copy … and I found it.

  • The original 3 - Neutral Color preset file has Version ranges assigned as;
    image

  • By copying this preset (via the PRESET EDITOR), the Version range is changed to;
    image


Conclusion follows …

TL:DNR - Summary;

  1. Unless the (upper-range) number listed within preset-files is Version = 17.3 (or greater, for later versions of PhotoLab), PL will not apply the correct setting for Distortion / Constrain to Image

  2. This predicament can “sneak-up” on unsuspecting users because an upgrade of PL does not (necessarily) result in an update of the Version = XX.X line in preset files.

Recommendation to savvy users;

  • Before applying a PL upgrade, rename your Presets folder (to force creation of a new one).

  • After the installation, rebuild any customisation you may have applied to the Presets folder - paying particular attention to the new Version # lines … and replacing any standard DxO presets with the latest versions.

@John-M , are you sure that the version numbers change the effect of a preset?

I had changed version numbers occasionally, mostly to import new presets into older versions of DPL and found that the effects were the same, except for instructions that related to features absent in the older version. Such instructions were mostly ignored, although I had an issue or two doing this with DPL versions 4/5/6.

Again, I use DPL on macOS and the Win versions could act differently.

In this case - yes; that’s what made the difference - and resulted in PL correctly setting Constrain to Image via a partial-preset.

@jorismak proved this in his investigation test (tho, he came to the wrong conclusion from the result).

I reckon the current version of PL needed to use the Version # for correct setting of Constrain to Image because an earlier version (when this option was originally exposed to users) had it set the opposite way by default.

Yes - could be. You did say, earlier, that this problem wasn’t evident on the Mac version - - Perhaps the Mac version didn’t go thru the change in default-state … and, therefore, doesn’t need to use the Version# to get this setting right (?)

I had a whole reply, but apparently you can’t reply by email on the DxO forums.

Anyway, the versions causing different behaviour is more likely then my original thought.

I still consider it a bug that if you copy the preset , all those special behaviours do get written to your new preset (good), but there is no method in the GUI to control if the constrain flag is in the preset or not (bad).

The only method to control that, is editing the preset in a text editor. Bug, oversight , whatever. Not good UX at least :).

As why some people experience this differently… Yes. Maybe windows and Mac differences. There are lots.
Could also be - those presets are written in your user settings. So maybe they are not always updated during an install/ upgrade. So maybe some people have older versions of them , because they only get written on first start if they don’t exist yet? I’m just speculating though.

My version showed 11 or something for my system preset , but something way higher for a new empty preset. Maybe people exist out there wit
h higher versions of the factory presets.

It all ends up to the same though : if you have a user preset that toggles the ‘constrain’ flag and you dont want that, create a new empty preset and recreate your user preset , or edit the preset file and restart DxO PL if your comfortable with that .

And for DxO: it should be possible to control if the constrain flag is modified or not without having to edit the preset file . You can control if the distort module is included in a preset or not , but the constrain to image is a separate setting that has no UI counterpart to include or exclude from a preset.

DistortionAnamorphosisKeepEntireImage=false means ‘constrain to image is forced on’.
DistortionAnamorphosisKeepEntireImage=true means force it to off.
Removing that line all together from a preset means ‘leave it alone’.

And exactly that last state has no UI in the preset editor .

That also means that people copying a factory preset to then edit it , don’t have control over this, and you can’t see what is happening .

From programming myself , having a version number in a preset ro replicate program behaviour from that era to stay backwards compatible , sounds like a normal, logical thing to do.
The constrain to image has seen some differences in the PL 6 release cycle , so I kinda understand that the flag behaves differently depending on the version the preset has.

No way to alter it if bringing the preset to a newer version is the problem, although like is said, with a text editor you can work around it.

@John-M the only experiment is to see if newer versions of those factory presets are written if you have a new complete fresh install. But I don’t care enough to try it to be honest :).

I’ve checked the presets of DPLv6 over its evolution. For “Optics Only”, I see that

  • Version 6.3 introduced the constrain to image feature and set
    DistortionAnamorphosisKeepEntireImage = true.
  • Version 6.6 set
    DistortionAnamorphosisKeepEntireImage = false.
  • Changing the version number changes DPL’s interpretation of
    DistortionAnamorphosisKeepEntireImage on macOS

How I tested

  • Created a preset with DistortionAnamorphosisKeepEntireImage = true
  • Duplicated the preset a few times and edited the “settings” version number to be
    17.1, 17.2, 17.3 and 17.4.
  • DistortionAnamorphosisKeepEntireImage = true was only interpreted as expected,
    when the settings version number was 17.3 and 17.4.

Well, DxO has gone a longer way than I thought, interpreting the version numbers. :blush:

Presets I tested with:
Archive.zip (26.3 KB)

1 Like

After updating Photolab but Before running the new version, I go into the program’s Preset folder and delete All the presets. That way, I only get my presets (which include DxO’s neutral and no correction ones). I have no need for any other supplied presets.

If you don’t delete them beforehand, launching the program will populate your local presets folder with all the DxO ones.

Hope that is helpful to others with similar wishes.

1 Like

Thanks for the confirmation, Mr P.

  • Yes, that’s the case for the Win version too.

Yes - Mr P cites the timing of those differences here … (I had lost track of Version diffs).

My theory for this turn-around is related to the “inverse logic” applying to this parameter - - as @jorismak points out.

I reckon it was wrongly interpreted for v6.3 - and then corrected for v6.6 (to revert behaviour to the same as it was originally, before this option was exposed for user determination)

Imo, it was done the right way. If one adds a feature, one wants to show what it does. But the black slices caused confusion and DxO changed the defaults to hide the slices again. :man_shrugging:

1 Like

I’ve encountered something else curious/perplexing related to DxO-supplied presets …

But, first, some background;

  • It has been determined that the default setting for Distortion / Constrain to image is not applied correctly (for PLv6.6+) unless the upper-version# recorded in the preset-file = 17.3

Now, here are the curious/perplexing bits;

  • If one manually edits (say) the 3 - Neutral Colors.preset file, and changes the upper-version# to 17.3 (from its shipped value of 17.0) … the next time PL is started, it overwrites this preset file and reverts the upper-version# back to 17.0

  • I guess this is PL’s way of ensuring the integrity of the DxO-supplied presets (!?) … Except that, in this case, it results in the problem described above (See background).

  • Whereas, (as @jorismak points out) if one uses the PRESET EDITOR to create a copy of the 3 - Neutral Colors.preset file - then the result is (correctly) created with the upper-version# set to 17.3

… … which is all well-and-good, except that this does not help anyone who’s expecting the standard DxO-supplied presets to work correctly without special assistance (that is, all PL users !).

It’s getting even more confusing:

Looking at the screen from right to left now…

  1. The (hidden in the screen capture) image has been set to display the the areas that are added by PC and DC as we can see from the settings in the right third of the capture.
  2. The corresponding DOP file tells us that DC is inactive, as is “…KeepEntireImage”.
  3. The preset I created after I saw the DOP file, says that DC is on, as is “…KeepEntireImage”.

Looking at this again, I found the reason for the discrepancy…which is okay indeed: Sidecars have a Base and an Overrides section…and we got to look at both of them for better understanding. Check details in this:

@jorismak it is possible to “externalise” the hidden 5 - No correction by creating a copy and inspecting the new preset copy shows a 'DistortionAnamorphis …" entry in the copy!

The issue is not that these problems cannot be resolved but rather why should they happen at all (and hopefully they are not happening with any other settings)!

One final one before I investigate yesterday’s posts and today’s posts @platypus, if I start with

image

i.e. all distortion settings OFF and select ‘Constrain to image’ = ON this results in ‘Distortion’ = ON being set arguably in line with some other commands but …(?)

image

but if I start with

image

i.e. ‘Disrtortion’ = OFF and ‘Constrain …’ = ON and set ‘Constrain to image’ = OFF then that also turns ‘Distortion’ = ON

image

This happens regardless of doing it via Partial Presets or directly via the UI, any change to the ‘Constrain to image’ option triggers ‘Distortion’ = ON.

Plus if ‘Constrain to image’ = ON and ‘Distortion’ = OFF then any change to ‘Keep aspect ratio’ will also cause ‘Distortion’ = ON!

I feel that the coding for triggering ‘Distortion’ = ON is overly “simplistic”. If done via the UI then the change is obvious to the user and quick to fix but if done via Partial presets in particular the change may not be as obvious and triggering ‘Distortion’ = ON in these latter cases unwanted!

Now to review the large number of posts from yesterday and today!

Amendment:- The “issue” exists with the UI, changing the individual elements via Partial presets does not cause ‘Distortion’ = ON EXCEPT if both ‘Constrain …’ = ON & ‘Keep aspect ratio’ = ON and Distortion = OFF then setting ‘Constrain …’ = OFF causes ‘Distortion’ = ON, consistency is a truly wonderful thing!!

image

Yes - that certainly looks “wrong” to me too.

However, given that the Crop settings (as recorded in the sidecar/.dop file) are also wrong, I’m guessing(?) it’s a case of a delay in PL updating the sidecar/.dop file - following changes you made to settings for your test … And you just happened to conduct your compare with the pre-updated version.

(The preset you created “from current settings” correctly reflects the state of your UI.)

I have set DPL to not read/write them automatically and therefore saved it manually…or the database has not been updated, something hanging in a cache ???

Looking at this again, I found the reason for the discrepancy…which is okay indeed: Sidecars have a Base and an Overrides section…and we got to look at both of them for better understanding. Check out my next post.

1 Like

Retested DPL6.8, this time on macOS Monterey on iMac 2019:
Crop and Distortion parameters are different in the preset and the sidecar. Nevertheless, they both act correctly…and I suppose that it’s caused by the sidecar having a “Base” and “Overrides” section while the preset has the “Base” only. If we look at one section only, we get a wrong idea (well I did) about how DPL works. I extracted the respective parts of the sidecar for illustration:

BASE (from “no Correction” preset)

	CropActive = false,
	CropAuto = true,
	CropRatio = 0,
	CropRect = {
		0,
		0,
		1,
		1,
	},
	DistortionActive = false,
	DistortionAnamorphosisKeepEntireImage = false,
	DistortionFocus = 128,
	DistortionIntensity = 0,
	DistortionKeepRatio = false,
	DistortionType = "Auto",
	DistortionTypeAuto = true,

OVERRIDES (from what I set in DPL)

	CropActive = true,
	CropAuto = false,
	CropRatio = -1,
	DistortionActive = true,
	DistortionAnamorphosisKeepEntireImage = true,
1 Like