I tend to agree that the conventions are so burned into people’s routines that adding the configuration parameter will rock boats or just confuse people. On the other hand, after getting used to using it, it’s an extra degree of flexibility that’s hard to live without.
I tried to implement some fixed modes in GIMP once. I know enough to know that adding configurable modes probably wouldn’t be simple, and it’s all over my head.
Keep in mind the way I’m thinking about using the contour maps to guide what I desire from the math. I can look at the contour map of ‘pnorm’, and I can just say, “I want two copies of that, squished vertically, and one is flipped”, then out comes the algebra hammer. So ‘lo’ just defines where those two halves of the contour map meet.
In the code, ‘lo’ is a logical mask which is implicitly cast as numeric. I don’t know how this would be handled in a real programming language, but in Matlab, overcalculating and using multiplicative masking is faster than logical indexing:
case 'superlight' % use piecewise-pnorm to create a superelliptic contrast mode amount=max(1,amount); if amount==1; R=2*M+I-1; else lo=M<0.5; hi=~lo; R=zeros(size(M)); R(hi)=(I(hi).^amount + (2*M(hi)-1).^amount).^(1/amount); R(lo)=1-((1-I(lo)).^amount + (1-2*M(lo)).^amount).^(1/amount); end
I don’t know if it’s apparent, but everything in Matlab is going to be processed as whole arrays instead of pixel-wise. I don’t recall how things are handled in Krita.