Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-07 Thread Simos Xenitellis
On Thu, Nov 6, 2014 at 10:00 PM, Elle Stone ellest...@ninedegreesbelow.com
wrote:

 On 11/06/2014 12:35 PM, Gary Aitken wrote:

 Maybe I'm misunderstanding the discussion.  Gimp asks when one opens an
 image what one wants as the working colorspace.  But we're talking
 about operations *after* the image has been opened and the working
 colorspace has been established.

 Once I establish the colorspace, I expect all operations to be performed
 in a manner which is consistent with and preserves that colorspace.  If
 some operation deals in some other space without my knowledge, that's
 not good.

 My apologies if I'm misunderstanding the discussion.


 You aren't misunderstanding the discussion.

 The current proposed solution to the current hard-coded Y and XYZ sRGB
 parameters is to generalize all editing operations to use UserRGB Y and XYZ.

 But there are a handful of editing operations that can't be generalized,
 that only work properly when done on actual sRGB images.

 One proposed solution to the only works in sRGB problem is to convert
 the image to sRGB for those few editing operations. That would be OK as an
 *option*. Even just a UI notification would be sufficient and then the user
 could choose to convert to sRGB or to simply not use that particular
 editing operation.

 Previously (back in April) the plan was to convert all images to unbounded
 sRGB before editing would begin, and the user wouldn't have a choice in the
 matter.

 More recently the plan was to convert to unbounded sRGB for just some
 editing operations and use UserRGB for other editing operations, and again
 the user wouldn't have a choice in the matter.

 At this point we hopefully are down to only convert to sRGB for those
 very few editing operations that really only work in the sRGB color space.

 I'm saying and make sure you still give the user a choice. There should
 never, ever be a forced conversion to sRGB. The only correct thing to do is
 tell the user what the problem is and let the user decide what to do,
 either convert to sRGB or else don't use the affected editing operation.

 In addition to trying to avert any forced ICC profile conversions, I'm
 also concerned about special sRGB only optimized code.

 Personally I would prefer that sRGB be treated just like any other RGB
 working space, with no special sRGB only optimized code paths, partly
 because there are too many sRGB profile variants (Will the Real sRGB
 Profile Please Stand Up? http://ninedegreesbelow.com/
 photography/srgb-profile-comparison.html).

 Giving the user a choice whether to use or not use optimized sRGB only
 code paths would be OK. Not telling the user that sRGB images might be
 handled differently is not OK.

 I don't want the devs to decide for me that this profile is close enough
 to sRGB that we'll just assume it really is the same as GIMP's sRGB and
 then we'll use different code paths.

 Even if the image profile really is the GIMP sRGB profile, I still think
 the user should have a choice of whether to use optimized sRGB only code
 paths.

 Given the previously planned forced conversions to unbounded sRGB, I think
 it's important to stress that the user really does need to have complete
 control over when and whether:
   * an image is converted from UserRGB to sRGB.
   * the GIMP sRGB profile is assumed to be close enough to some other
 sRGB profile variant.
   * special optimized sRGB only code is used.


Hi All,

I am a recent subscriber to the list and I have read with interest the
recent threads and I am trying to figure out the what next?.
Developer resources in any project are generally very limited, so it's
important to get more people contributing.

Is there a test suite available that could show the expected behavior?
If not, let's try to build one, both the test-suite code plus the images
(before/after).

Regarding the color spaces and conversions, it should be easy to try to
make some of the the changes
(most of them sound like simple text substitutions),
compile the source and see how well it performs on the test-suite.
Any comments on that?

Simos
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-07 Thread Elle Stone

On 11/07/2014 04:25 AM, Simos Xenitellis wrote:

Hi All,

I am a recent subscriber to the list and I have read with interest the
recent threads and I am trying to figure out the what next?.
Developer resources in any project are generally very limited, so it's
important to get more people contributing.

Is there a test suite available that could show the expected behavior?
If not, let's try to build one, both the test-suite code plus the images
(before/after).

Regarding the color spaces and conversions, it should be easy to try to
make some of the the changes
(most of them sound like simple text substitutions),
compile the source and see how well it performs on the test-suite.
Any comments on that?

Simos



The text/code editor Geany can be used to do a file search in GEGL and 
GIMP for the following string (confine the search to *.c and *.h files): 
babl_format (


GEGL has 212 such strings. GIMP has 503.

Here are some example strings with the actual babl formats included (the 
list is not exhaustive):


babl_format (Y' u8)
babl_format (Y u32)
babl_format (YA u32)
babl_format (Y float)
babl_format (Y' float)
babl_format (Y'A float)
babl_format (Y'CbCrA float)
babl_format (R'G'B'A u8)
babl_format (R'G'B'A u16)
babl_format (R'G'B' float)
babl_format (R'G'B'A float)
babl_format (R'aG'aB'aA float)
babl_format (CIE Lab alpha float)
and so on . . .

If I understand Jon Nordby correctly, all of these babl_formats really 
are supposed to be dedicated formats that were intended to be used only 
with images encoded using the sRGB primaries. Changing the intended 
meaning of these formats might break compatibility with other software 
that uses babl.


So new babl_formats need to be written to take the place of all the 
dedicated sRGB only formats. Then the text substitutions could be made.


The problem is made more complicated by the fact that babl does many of 
the calculations for GEGL and GIMP functions that use Y (in particular 
painting on a mask and making an grayscale copy of the image for use as 
a mask). Babl also does the conversions to the YCbCr and CIELAB formats 
for GEGL and GIMP.


So all the babl functions that currently use hard-coded sRGB parameters 
either need to be generalized to use parameters pulled from UserRGB 
(meaning whatever RGB working space the user chooses, which might in 
fact be sRGB, or might be ProPhotoRGB, or etc). Or else duplicate babl 
functions for UserRGB need to be written.


The same is true for GEGL and GIMP functions that use Y to calculate 
Luminance, except most likely for GEGL and GIMP there won't be any side 
by side generalized and sRGB-only functions. Instead the existing 
functions will all be generalized.


Only a few GIMP UI functions use RGB working-space-specific (UserRGB) 
Y and XYZ values. This article lists where UserRGB Y and XYZ parameters 
need to be used: 
http://ninedegreesbelow.com/gimpgit/gimp-hard-coded-sRGB.html


To avert any possible confusion, when you open an image using GIMP, 
there is not and never has been a forced conversion from UserRGB to 
sRGB. The previously planned code that would have done so, never was 
written. If I understand Jon Nordby correctly, the development plan that 
would have required such code seems to have been put aside.


Currently only a few GIMP UI editing operations (that use Y to calculate 
Luminance or XYZ to convert to LAB) are affected by the babl_format 
assumption that the image really is an sRGB image. This article lists 
most of the GIMP UI functions that are currently only accurate for sRGB 
images: 
http://ninedegreesbelow.com/photography/users-guide-to-high-bit-depth-gimp.html


Hopefully Jon Nordby will point out any mistakes I might have made in 
the above summary.


Best regards,
Elle

___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-06 Thread Elle Stone

On 11/05/2014 09:40 AM, Jon Nordby wrote:

On 5 November 2014 14:50, Elle Stone wrote:



For the babl code that converts an sRGB image to grayscale for use
as a layer mask, do you plan to add a new set of functions that
convert from UserRGB to grayscale?

That code would, of course, need to pull Y values from UserRGB.
Which of course means that the new code for UserRGB would also work
for sRGB images.

For the babl code that converts from color to Y for painting on a
mask, that code currently is hard-coded to use sRGB Y values. Do you
plan to add a new set of functions that convert from UserRGB to Y
for painting on a mask? That code would also, of course, need to
pull Y values from UserRGB. Which of course means that the new code
for UserRGB would also work for sRGB images.

For all the GIMP UI functions that currently use hard-coded sRGB Y
values sprinkled through babl, GEGL, and GIMP, do you plan to add a
new set of alternate functions that will use Y values pulled from
UserRGB? Again, that new UserRGB code will also work for sRGB images.

How is this not side-by-side implementation?


When I said operations I meant GEGL operations: There will be no
side-by-side implementation of GEGL operations.


Will this also be true of any editing operations that remain within the 
GIMP code base, once GIMP is fully geglified?


A separate question - will there actually be any remaining editing 
operations in the GIMP code base once GIMP is fully geglified?



Yes, we will have to introduce new babl color conversion functions which
handle arbitary RGB color spaces by looking up parameters from UserRGB.
Both to convert fromto grayscale and between the various RGB spaces.
There is no escaping that, as we don't have any code that can handle
these cases right now.


OK. This makes sense.


Whether the existing conversion functions with hardcoded sRGB parameters
for bablRGB will remain once general functions exists, is an open
question. It could be that they will just call into the general RGB
color conversion functions with the particular parameters of sRGB.


It seems to me that this might be the preferable course of action. This 
way there would be no reason for code to be written that tries to 
second-guess the user's intentions as to whether UserRGB really is the 
same as GIMP's built-in sRGB.



Or it could be that keeping the functions as-is has benefits that
outweigh the cost of keeping the code around, like being able to do
performance optimization tricks not possible in the general case.


Speaking as a developer (you all keep telling me I'm a developer), a 
crucially important guiding principle for writing a high end image 
editor is that you never mess with the user's RGB data without the 
user's explicit consent.


If you *ask* the user whether they want to have their data treated as 
bonified same as GIMP's sRGB and then use optimized sRGB-only code, 
that's one thing. Doing so behind the user's back, without their 
consent, that's another thing. That is disrespecting the user's control 
over their RGB data.



What part of the latest new plan am I missing? Could you explain the
purpose that is served by having all the functions with hard-coded
sRGB parameters sit side by side with equivalent functions that use
UserRGB parameters?

Or are you really getting rid of *all* the hard-coded sRGB
parameters? In which case, what is the new purpose for the bablRGB
formats that will not change their meanings?

For operations which have an actual dependency on sRGB parameters, like
the previously mentioned operations emulating color blindness.


Two practical problems will need solutions:

First, for code that clearly requires that the image be an sRGB image, 
converting the image to sRGB without the user's *explicit* consent is 
disrespecting the user's RGB data. If there are GIMP UI functions that 
only work for sRGB images, give the user a choice. Don't convert the 
image to sRGB without the user's explicit consent. Maybe they'd just as 
soon not use that editing operation.


Second, some functions currently use sRGB and NTSC *device* parameters:

  * Some of the existing hard-coded sRGB *device* parameters in the 
code base clearly ought to be D50-adapted ICC profile parameters. That 
code should be generalized to use UserRGB Y and XYZ values.


  * Some of the functions seem to suggest that the unadapted *device* 
parameters really are appropriate for the originally intended use, and 
that the affected functions simply aren't appropriate for use in an ICC 
profile *color-managed* workflow. These device functions should be 
identified in the UI so the unsuspecting user doesn't try to use these 
functions thinking they are appropriate for ICC profile color-managed 
images. I think the color-deficiency filter might actually be one of 
these functions.


Converting the image to the sRGB or NTSC ICC profile is 

Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-06 Thread Gary Aitken
I'd like to add my penny's worth on this discussion.
My primary use of gimp involves editing photographic images, 
for both web and print purposes.

On 11/06/14 05:04, Elle Stone wrote:

 Speaking as a developer (you all keep telling me I'm a developer), a
 crucially important guiding principle for writing a high end image
 editor is that you never mess with the user's RGB data without the
 user's explicit consent.
 
 If you *ask* the user whether they want to have their data treated as
 bonified same as GIMP's sRGB and then use optimized sRGB-only code,
 that's one thing. Doing so behind the user's back, without their
 consent, that's another thing. That is disrespecting the user's
 control over their RGB data.

This is critical.  If I'm working with a wide-gamut profile, I really
really really don't want gimp screwing with the rgb data without my
say so.  Even if the result is not obvious visually, I need a heads-up 
so I can pay close attention to what's happening and undo the operation 
if appropriate.

Gary

___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-06 Thread Alexandre Prokoudine
On Thu, Nov 6, 2014 at 8:24 PM, Gary Aitken wrote:

 If you *ask* the user whether they want to have their data treated as
 bonified same as GIMP's sRGB and then use optimized sRGB-only code,
 that's one thing. Doing so behind the user's back, without their
 consent, that's another thing. That is disrespecting the user's
 control over their RGB data.

 This is critical.  If I'm working with a wide-gamut profile, I really
 really really don't want gimp screwing with the rgb data without my
 say so.

Frankly, I'm puzzled. It's been, how many? 8 years? since GIMP asks
users what it should do with a picture that is tagged with a profile
that doesn't match the current RGB working space. Has anyone actually
suggested that this is going to be otherwise? :)

Alex
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-06 Thread Gary Aitken
Hi Alex,

 If you *ask* the user whether they want to have their data treated as
 bonified same as GIMP's sRGB and then use optimized sRGB-only code,
 that's one thing. Doing so behind the user's back, without their
 consent, that's another thing. That is disrespecting the user's
 control over their RGB data.

 This is critical.  If I'm working with a wide-gamut profile, I really
 really really don't want gimp screwing with the rgb data without my
 say so.
 
 Frankly, I'm puzzled. It's been, how many? 8 years? since GIMP asks
 users what it should do with a picture that is tagged with a profile
 that doesn't match the current RGB working space. Has anyone actually
 suggested that this is going to be otherwise? :)

Maybe I'm misunderstanding the discussion.  Gimp asks when one opens an 
image what one wants as the working colorspace.  But we're talking 
about operations *after* the image has been opened and the working 
colorspace has been established.

Once I establish the colorspace, I expect all operations to be performed
in a manner which is consistent with and preserves that colorspace.  If 
some operation deals in some other space without my knowledge, that's
not good.  

My apologies if I'm misunderstanding the discussion.

Gary
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-06 Thread Elle Stone

On 11/06/2014 12:35 PM, Gary Aitken wrote:

Maybe I'm misunderstanding the discussion.  Gimp asks when one opens an
image what one wants as the working colorspace.  But we're talking
about operations *after* the image has been opened and the working
colorspace has been established.

Once I establish the colorspace, I expect all operations to be performed
in a manner which is consistent with and preserves that colorspace.  If
some operation deals in some other space without my knowledge, that's
not good.

My apologies if I'm misunderstanding the discussion.


You aren't misunderstanding the discussion.

The current proposed solution to the current hard-coded Y and XYZ sRGB 
parameters is to generalize all editing operations to use UserRGB Y and 
XYZ.


But there are a handful of editing operations that can't be generalized, 
that only work properly when done on actual sRGB images.


One proposed solution to the only works in sRGB problem is to convert 
the image to sRGB for those few editing operations. That would be OK as 
an *option*. Even just a UI notification would be sufficient and then 
the user could choose to convert to sRGB or to simply not use that 
particular editing operation.


Previously (back in April) the plan was to convert all images to 
unbounded sRGB before editing would begin, and the user wouldn't have a 
choice in the matter.


More recently the plan was to convert to unbounded sRGB for just some 
editing operations and use UserRGB for other editing operations, and 
again the user wouldn't have a choice in the matter.


At this point we hopefully are down to only convert to sRGB for those 
very few editing operations that really only work in the sRGB color space.


I'm saying and make sure you still give the user a choice. There 
should never, ever be a forced conversion to sRGB. The only correct 
thing to do is tell the user what the problem is and let the user decide 
what to do, either convert to sRGB or else don't use the affected 
editing operation.


In addition to trying to avert any forced ICC profile conversions, I'm 
also concerned about special sRGB only optimized code.


Personally I would prefer that sRGB be treated just like any other RGB 
working space, with no special sRGB only optimized code paths, partly 
because there are too many sRGB profile variants (Will the Real sRGB 
Profile Please Stand Up? 
http://ninedegreesbelow.com/photography/srgb-profile-comparison.html).


Giving the user a choice whether to use or not use optimized sRGB only 
code paths would be OK. Not telling the user that sRGB images might be 
handled differently is not OK.


I don't want the devs to decide for me that this profile is close 
enough to sRGB that we'll just assume it really is the same as GIMP's 
sRGB and then we'll use different code paths.


Even if the image profile really is the GIMP sRGB profile, I still think 
the user should have a choice of whether to use optimized sRGB only 
code paths.


Given the previously planned forced conversions to unbounded sRGB, I 
think it's important to stress that the user really does need to have 
complete control over when and whether:

  * an image is converted from UserRGB to sRGB.
  * the GIMP sRGB profile is assumed to be close enough to some other 
sRGB profile variant.

  * special optimized sRGB only code is used.

Best regards,
Elle
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-05 Thread Elle Stone

On 11/04/2014 02:31 PM, Jon Nordby wrote:

(apologies for top-posting)

Hi Elle,

The BABL roadmap[1], which was written in response to comments raised by
you (and others),
details a mechanism for working with multiple RGB color spaces. It will
be possible to create a babl format specifier which means
whatever-the-artist-chose-for-this-image RGB.
All GEGL operations which currently wrongly use hardcoded bablRGB (RGBA
float and similar) will be changed to use this new specifier.
Duplicate/side-by-side implementations of operations is not necessary
nor planned.



With this BABL work in place, GIMP/GEGL can then use LCMS to read in the
ICC color profiles from inputs and set up the parameters for this color
space.

I do not understand how this solution (once implemented) will not work
for your usecase. If you think it will not, please explain why.

I have no desired for a sRGB only workflow, and it does not help the
discussion to jump such a conclusion. Please do not assume that the
different needs are in conflict/adverserial to each other.

1. https://git.gnome.org/browse/babl/tree/docs/roadmap.txt#n74


What you just described IS side-by-side implementations of operations. 
In an ICC profile color-managed application, sRGB is just another RGB 
working space. You don't need to special-case sRGB.


Right now all GEGL operations specify bablRGB: RGBA, R'G'B'A, etc.

In Pippin's originally planned unbounded sRGB architecture, bablRGB 
meant convert the image to unbounded sRGB before perfoming *any* 
editing operation. Now the plan is that bablRGB will mean convert to 
unbounded sRGB for *some* operations.


But thankfully the convert from UserRGB to unbounded sRGB code has not 
yet been written. So in reality, at this point in time bablRGB already 
IS UserRGB. There is no reason to write a whole bunch of new babl format 
specifiers for UserRGB. That would be side-by-side implementation.


ALL current babl/GEGL/GIMP editing operations already work just fine, 
regardless of the user's chosen RGB working space, EXCEPT for the fact 
that there are still hard-coded Y and XYZ parameters in the 
babl/GEGL/GIMP code base.


To work with UserRGB data, those hard-coded sRGB Y and XYZ parameters 
need to be generalized to use Y and XYZ parameters pulled from the 
user's chosen RGB working space. If you generalize those operations to 
work with Y and XYZ pulled from UserRGB, those operations will work just 
fine even when UserRGB really is sRGB.


bablRGB is now in fact and should remain UserRGB. There is no reason 
to write code that makes bablRGB mean convert to unbounded sRGB and 
then write more code that means use UserRGB instead of sRGB.


I'm leaving to one side the babl sRGB TRC flips because that code 
requires special handling, and the user really does need a way to 
completely disable those TRC flips. A fundamental premise for writing an 
RGB image editor is that you never mess with the user's RGB data without 
their explicit permission. Just opening the image with GIMP is NOT 
explicit permission.


Best regards,
Elle Stone
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-05 Thread Elle Stone

In his last post on the topic Pippin said:


Once we have the vocabulary to also describe this aspect of the
pixelformats used by operations, the first thing we should do is to
annotate all the operations which are broken when done with sRGB
primaries, then we will be able to continue refactoring, profiling and
optimizing; without breaking existing functionality/rendering. Not
only in terms of making more operations request directly userRGB, but
also doing things like make some linear operations accept any of
userRGB or bablRGB (or other linear RGB); and creating output buffers
in the same format – to avoid unnecessary conversions in such cases.

Using a fixed linear RGB format instead of userRGB is what for some
operations will provide the consistent results for the same property
values / slider positions. Knowing which operations this is important
for is easier to determine when we have code providing the vocabulary
in babl. The further along on the roadmap, more of the road will have
to be laid/determined as we walk it.



Nothing in the above post shows that Pippin has given up on unbounded 
sRGB. If Pippin really understood anything I've been trying to explain, 
he wouldn't still be saying things like:


//begin quote
Using a fixed linear RGB format instead of userRGB is what for some 
operations will provide the consistent results for the same property 
values / slider positions. Knowing which operations this is important 
for is easier to determine when we have code providing the vocabulary in 
babl.

//end quote

There is not one single operation for which it is important that sliders 
produce consistent results. NONE. NOT ONE. The whole premise that 
sliders should produce consistent results is grounded in a misconception 
of the requirements for RGB image editing.


Anyone not indoctrinated in the whole unbounded sRGB mystique that's 
been perpetrated among the babl/GEGL/GIMP devs for the last however many 
years would be rolling on the floor laughing if they could fight their 
way past the nonstandard color management vocabulary enough to 
understand what you all have been talking about all these years.


I no longer have the time to continue being actively involved with GIMP 
development (OK, that cheering in the background isn't nice! :) ). My 
hope is to see the whole unbounded sRGB thing abandoned. Let bablRGB be 
UserRGB. You can deal with device-specific code with a UI warning. An 
RGB image editor should NEVER mess with the user's RGB data without the 
user's explicit request. Behind the scenes conversions to unbounded sRGB 
is just wrong.


GIMP is important to free/libre artists. GIMP is also important to 
would-be refugees from Adobe Cloud. Artists need non-proprietary 
alternatives and specifically they need software that doesn't lock the 
user's work inside proprietary formats that can't even be accessed 
without a subscription.


(To forestall one of Pippin's stock responses, no, I am not advocating 
that GIMP be a PhotoShop clone. One reason I switched to Linux and free 
software was because I was unhappy with PhotoShop limitations regarding 
linear gamma image processing; sadly Cinepaint capabilities were 
overrated; even more sadly, all these years later GIMP high bit depth 
image processing is saddled with the whole unbounded sRGB overlay.)


If GIMP can't get ICC profile color management exactly right, well, 
DarkTable partly fills the gap with its built-in masks. And Krita is 
frankly leaving GIMP in the dust in very many ways. Krita is a load of 
fun to use for painting. But Krita not aimed at photographers and it's 
not as easy to use for strictly RGB image editing as GIMP would be, 
could be, if unbounded sRGB is just abandoned and the devs starting 
listening to potential and actual GIMP users.


What free/libre photographers really need is for GIMP to be everything 
it could be if ICC profile color management is properly implemented 
across the board for all editing operations. This whole unbounded sRGB 
thing is a dead-end street.


Best regards,
Elle Stone
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list

Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-05 Thread Elle Stone

On 11/05/2014 08:22 AM, Jon Nordby wrote:

What you just described IS side-by-side implementations of
operations. In an ICC profile color-managed application, sRGB is
just another RGB working space. You don't need to special-case sRGB.


No it is not. There will be one implementation of say multiply. It
will be able to work on any RGB color space. Including sRGB, but without
need for special casing.

Right now all GEGL operations specify bablRGB: RGBA, R'G'B'A, etc.

In Pippin's originally planned unbounded sRGB architecture,
bablRGB meant convert the image to unbounded sRGB before
perfoming *any* editing operation. Now the plan is that bablRGB
will mean convert to unbounded sRGB for *some* operations.


The meaning of the bablRGB specifiers has not, and will not change.
The vast majority of operations will just stop using them (because they
have hardcoded sRGB parameters), and instead use the new specifiers, as
per the roadmap.



For the babl code that converts an sRGB image to grayscale for use as a 
layer mask, do you plan to add a new set of functions that convert from 
UserRGB to grayscale?


That code would, of course, need to pull Y values from UserRGB. Which of 
course means that the new code for UserRGB would also work for sRGB images.


For the babl code that converts from color to Y for painting on a mask, 
that code currently is hard-coded to use sRGB Y values. Do you plan to 
add a new set of functions that convert from UserRGB to Y for painting 
on a mask? That code would also, of course, need to pull Y values from 
UserRGB. Which of course means that the new code for UserRGB would also 
work for sRGB images.


For all the GIMP UI functions that currently use hard-coded sRGB Y 
values sprinkled through babl, GEGL, and GIMP, do you plan to add a new 
set of alternate functions that will use Y values pulled from UserRGB? 
Again, that new UserRGB code will also work for sRGB images.


How is this not side-by-side implementation?

Why would any sane developer want to write all the new code and have it 
exist side by side with equivalent hard-coded sRGB functions?


What part of the latest new plan am I missing? Could you explain the 
purpose that is served by having all the functions with hard-coded sRGB 
parameters sit side by side with equivalent functions that use UserRGB 
parameters?


Or are you really getting rid of *all* the hard-coded sRGB parameters? 
In which case, what is the new purpose for the bablRGB formats that 
will not change their meanings?


Best regards,
Elle Stone
--
http://ninedegreesbelow.com
Color management and free/libre photography
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-05 Thread Simon Budig
Elle Stone (ellest...@ninedegreesbelow.com) wrote:
 Why would any sane developer want to write all the new code and have it
 exist side by side with equivalent hard-coded sRGB functions?

Why would any sane developer want to fork an existing libary and have it
exist side by side with an equivalent but subtly incompatible library?

Bye,
Simon

-- 
  si...@budig.de  http://simon.budig.de/
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-05 Thread Elle Stone

On 11/05/2014 09:07 AM, Simon Budig wrote:

Elle Stone (ellest...@ninedegreesbelow.com) wrote:

Why would any sane developer want to write all the new code and have it
exist side by side with equivalent hard-coded sRGB functions?


Why would any sane developer want to fork an existing libary and have it
exist side by side with an equivalent but subtly incompatible library?

Bye,
 Simon



You are entirely avoiding the very pertinent question I just asked and 
you full well know it.


Now could you try answering the question I did ask? Although frankly I'd 
rather hear what Jon Nordby has to say.


Elle
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-05 Thread Jon Nordby
On 5 November 2014 14:50, Elle Stone ellest...@ninedegreesbelow.com wrote:

 On 11/05/2014 08:22 AM, Jon Nordby wrote:

 What you just described IS side-by-side implementations of
 operations. In an ICC profile color-managed application, sRGB is
 just another RGB working space. You don't need to special-case sRGB.


 No it is not. There will be one implementation of say multiply. It
 will be able to work on any RGB color space. Including sRGB, but without
 need for special casing.

 Right now all GEGL operations specify bablRGB: RGBA, R'G'B'A, etc.

 In Pippin's originally planned unbounded sRGB architecture,
 bablRGB meant convert the image to unbounded sRGB before
 perfoming *any* editing operation. Now the plan is that bablRGB
 will mean convert to unbounded sRGB for *some* operations.


 The meaning of the bablRGB specifiers has not, and will not change.
 The vast majority of operations will just stop using them (because they
 have hardcoded sRGB parameters), and instead use the new specifiers, as
 per the roadmap.


 For the babl code that converts an sRGB image to grayscale for use as a
 layer mask, do you plan to add a new set of functions that convert from
 UserRGB to grayscale?

 That code would, of course, need to pull Y values from UserRGB. Which of
 course means that the new code for UserRGB would also work for sRGB images.

 For the babl code that converts from color to Y for painting on a mask,
 that code currently is hard-coded to use sRGB Y values. Do you plan to add
 a new set of functions that convert from UserRGB to Y for painting on a
 mask? That code would also, of course, need to pull Y values from UserRGB.
 Which of course means that the new code for UserRGB would also work for
 sRGB images.

 For all the GIMP UI functions that currently use hard-coded sRGB Y values
 sprinkled through babl, GEGL, and GIMP, do you plan to add a new set of
 alternate functions that will use Y values pulled from UserRGB? Again, that
 new UserRGB code will also work for sRGB images.

 How is this not side-by-side implementation?


When I said operations I meant GEGL operations: There will be no
side-by-side implementation of GEGL operations.
Yes, we will have to introduce new babl color conversion functions which
handle arbitary RGB color spaces by looking up parameters from UserRGB.
Both to convert fromto grayscale and between the various RGB spaces. There
is no escaping that, as we don't have any code that can handle these cases
right now.

Whether the existing conversion functions with hardcoded sRGB parameters
for bablRGB will remain once general functions exists, is an open question.
It could be that they will just call into the general RGB color conversion
functions with the particular parameters of sRGB.
Or it could be that keeping the functions as-is has benefits that outweigh
the cost of keeping the code around, like being able to do performance
optimization tricks not possible in the general case.

What part of the latest new plan am I missing? Could you explain the
 purpose that is served by having all the functions with hard-coded sRGB
 parameters sit side by side with equivalent functions that use UserRGB
 parameters?

 Or are you really getting rid of *all* the hard-coded sRGB parameters? In
 which case, what is the new purpose for the bablRGB formats that will not
 change their meanings?

For operations which have an actual dependency on sRGB parameters, like the
previously mentioned operations emulating color blindness. Or for
interacting with (sometimes broken) operating-system/library interfaces
which expects sRGB. I don't expect it to be particularly common.
The primary reason (as I see it) for not changing the semantics of existing
specifiers is to preserve compatibility. Code outside of BABL/GEGL/GIMP
could very well be reliant on the current meaning of the bablRGB formats.



-- 
Jon Nordby - www.jonnor.com
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-05 Thread Jon Nordby
On 5 November 2014 13:50, Elle Stone ellest...@ninedegreesbelow.com wrote:

 On 11/04/2014 02:31 PM, Jon Nordby wrote:

 (apologies for top-posting)

 Hi Elle,

 The BABL roadmap[1], which was written in response to comments raised by
 you (and others),
 details a mechanism for working with multiple RGB color spaces. It will
 be possible to create a babl format specifier which means
 whatever-the-artist-chose-for-this-image RGB.
 All GEGL operations which currently wrongly use hardcoded bablRGB (RGBA
 float and similar) will be changed to use this new specifier.
 Duplicate/side-by-side implementations of operations is not necessary
 nor planned.


  With this BABL work in place, GIMP/GEGL can then use LCMS to read in the
 ICC color profiles from inputs and set up the parameters for this color
 space.

 I do not understand how this solution (once implemented) will not work
 for your usecase. If you think it will not, please explain why.

 I have no desired for a sRGB only workflow, and it does not help the
 discussion to jump such a conclusion. Please do not assume that the
 different needs are in conflict/adverserial to each other.

 1. https://git.gnome.org/browse/babl/tree/docs/roadmap.txt#n74


 What you just described IS side-by-side implementations of operations. In
 an ICC profile color-managed application, sRGB is just another RGB working
 space. You don't need to special-case sRGB.


No it is not. There will be one implementation of say multiply. It will
be able to work on any RGB color space. Including sRGB, but without need
for special casing.


 Right now all GEGL operations specify bablRGB: RGBA, R'G'B'A, etc.

 In Pippin's originally planned unbounded sRGB architecture, bablRGB
 meant convert the image to unbounded sRGB before perfoming *any* editing
 operation. Now the plan is that bablRGB will mean convert to unbounded
 sRGB for *some* operations.


The meaning of the bablRGB specifiers has not, and will not change. The
vast majority of operations will just stop using them (because they have
hardcoded sRGB parameters), and instead use the new specifiers, as per the
roadmap.


-- 
Jon Nordby - www.jonnor.com
___
gimp-user-list mailing list
List address:gimp-user-list@gnome.org
List membership: https://mail.gnome.org/mailman/listinfo/gimp-user-list
List archives:   https://mail.gnome.org/archives/gimp-user-list


Re: [Gimp-user] [Gimp-developer] GIMP should fork babl and GEGL

2014-11-04 Thread Jon Nordby
(apologies for top-posting)

Hi Elle,

The BABL roadmap[1], which was written in response to comments raised by
you (and others),
details a mechanism for working with multiple RGB color spaces. It will be
possible to create a babl format specifier which means
whatever-the-artist-chose-for-this-image RGB.
All GEGL operations which currently wrongly use hardcoded bablRGB (RGBA
float and similar) will be changed to use this new specifier.
Duplicate/side-by-side implementations of operations is not necessary nor
planned.
With this BABL work in place, GIMP/GEGL can then use LCMS to read in the
ICC color profiles from inputs and set up the parameters for this color
space.

I do not understand how this solution (once implemented) will not work for
your usecase. If you think it will not, please explain why.

I have no desired for a sRGB only workflow, and it does not help the
discussion to jump such a conclusion. Please do not assume that the
different needs are in conflict/adverserial to each other.

1. https://git.gnome.org/browse/babl/tree/docs/roadmap.txt#n74

On 4 November 2014 19:27, Elle Stone ellest...@ninedegreesbelow.com wrote:

 Below explains why GIMP should fork babl and GEGL for use just with GIMP:

 Hacker News picked up an article from my website: The Sad State of High
 Bit Depth GIMP Color Management
 (http://ninedegreesbelow.com/photography/sad-state-of-high-
 bit-depth-gimp-color-management.html)

 In the Hacker News comments (https://news.ycombinator.com/item?id=8549560
 ), unhammer said:

 //begin quote
 From glancing over it, it seems to me like Elle Stone wants GIMP to make a
 rather radical shift to Do The Right Thing, while Øyvind Kolås (Pippin)
 values making small improvements one step at a time to avoid breaking
 current functionality.
 //end quote

 unhammer's otherwise excellent summary overlooks one very important point,
 which is that there is absolutely *no* current functionality in GIMP that
 would be broken by Doing the Right Thing, which is to give GIMP proper ICC
 profile color management.

 The only caveat is that a very few GIMP UI functions really do need to be
 labelled as only for device sRGB images or in some cases only for device
 NTSC images. This article lists all such functions:
 http://ninedegreesbelow.com/gimpgit/gimp-hard-coded-sRGB.html

 Moving back to the Hacker News comments, our very own Jon Nordby
 (jononor) reveals precisely where the current functionality that would
 be broken by Doing the Right Thing actually resides:

 //begin quote
 GEGL is developed for GIMP, and other projects.
 http://www.jonnor.com/2014/04/imgflo-0-1-an-image-processing...
 http://www.jonnor.com/2014/11/imgflo-0-2-the-grid-launched/ Disclosure:
 I'm a GEGL dev and the imgflo maintainer.

 The 'other projects' part is one of the reasons why the proposed solution
 'just strip all colorspace info, assume it is the same throughout entire
 processing pipeline' is not acceptable for GEGL, even if that might
 somewhat close to the typical usecase for GIMP.
 //end quote

 In other words, nothing in *GIMP* would be compromised or broken by Doing
 the Right Thing. However, Nordby's other projects *would* be affected. Of
 course his other software could be patched to assume sRGB as the image
 input profile, but perhaps that is something he doesn't want to do.

 As an aside, by just strip all colorspace info, Norby seems to mean
 replacing hard-coded sRGB parameters with equivalent parameters pulled from
 the user's chosen RGB working space, which is precisely the Right Thing to
 Do for GIMP.

 The ICC profile color management problem with current GIMP 2.8/2.9 is that
 some babl/GEGL/GIMP functions are written using hard-coded sRGB Y and XYZ
 parameters. These functions necessarily give wrong results if you, the GIMP
 user, try to edit images in other RGB working spaces such as AdobeRGB1998,
 BetaRGB, or ProPhotoRGB (http://ninedegreesbelow.com/
 photography/users-guide-to-high-bit-depth-gimp.html).

 The Right Thing to Do for GIMP is to use LCMS to retrieve the Y and XYZ
 values from the image's actual user-chosen ICC working space profile and
 then use the Right values instead of the Wrong values.

 Moving back to the Hacker News comments, Jon Nordby said:

 //begin quote
 This article is primarly a strawman argument, the 'architecture' which is
 so adamantly argued against has already been abandoned (much thanks to
 arguments from OP). https://git.gnome.org/browse/
 babl/tree/docs/roadmap.txt#n74 It has however not magically implemented
 itself yet.

 This is somewhat recognized in the article section which starts There is
 a ray of hope. The implication that the issues demonstrated will go away
 as a consequence of this has somehow been lost, possibly due to
 miscommunication.
 //end quote

 My article does not present a strawman argument. Based on his last post to
 the GIMP developer's mailing list, head babl/GEGL developer Øyvind Kolås is
 still clinging to his hopelessly broken unbounded