Patch: Many composite/blend modes mostly compatible to Adobe Photoshop (c)

David REVOY davidrevoy at gmail.com
Sat Jan 29 16:30:58 CET 2011


> @Boud :what is your problem when trying to compile?
Just the problem is I don't know a lot of things about "how to do it" ; 
I was just a script user of the SVN version. Animtim was nice and sent 
me keys code lines to do it, but I spent hours without results because 
folders in 'calligra' are really different than in 'koinstall'. It 
surely sounds stupid for you :) I will surely try again. If I update 
using old script of SVN, it will be 2.3.1 ?  Thanks for your replies.

> @Silvio Heinrich : if gimp really uses just HSV then it is not really 
> superior.
Oh, I really don't know nothing about how and why color modes prefer use 
HSV or HSL luma , I'm just a digital painter user. The only feedback I 
can give are with pictures like the previous mail :-)
Btw, you are right , my use of 'superior' word needs to be explain : the 
color mode in Photoshop ( I used it for years too) don't work nicely 
with yellow/orange tones painting over gray. You obtain only a muddy 
green/yellowish tones. That's why I called the Gimp one 'superior' ; 
because if you use it as a painter to recolor a part and like to use 
yellow or orange ; the Gimp one will be more efficient for this case. 
That's why I always prefered the way Gimp handle it than Photoshop.
Just to defend that the two way are usefull :) and I agree and like if 
you planed to support more then one color model. Good way !  and thanks 
for the link.


--David

On 01/29/2011 01:30 PM, Silvio Heinrich wrote:
> Hmm.. ok. I don't know what color model gimp exactly uses for this but 
> i thought gimp uses HSV.
> It would be nice if you could tell me more about the way how gimp does 
> it (of course only if you know).
> But if gimp really uses just HSV then it is not really superior. It's 
> just a matter what you want to do in which way.
> I paint myself (and i'm not too bad i would say :D) and for me the 
> photoshop way is working much better.
> It was not my intend to simply remove something. The other color mode 
> is still there it's just not in the list.
> I actually planed to support more then one color model so krita is 
> compatible to photoshop and gimp (i also included the "Grain Merge" 
> and "Grain Extract" modes for this reason).
> If you want to know the advantages and disatvantages of HSL and HSV 
> please read this:
> http://en.wikipedia.org/wiki/HSL_and_HSV#Disadvantages
> Photoshop uses the HSL luma variant.
> And as far as i know gimp uses HSV (but please correct me if i'm wrong 
> and give me some feedback how gimp2.6 is doing it :D)
> On 01/29/2011 10:41 AM, David REVOY wrote:
>> Hi,
>>
>> Just to react on this :
>>> and "Color" modes work exactly as in Photoshop
>> Just to inform the way 'color mode' works in Gimp 2.6 is superior to 
>> the 'color mode' of Photoshop ( till Cs2 for sure ).
>> This can be tested & seen with comparing the same file open like this :
>> http://www.davidrevoy.com/XYZ/color-mode_test_GIMP-net.jpg
>> http://www.davidrevoy.com/XYZ/color-mode_test_TOSHOP-net.jpg
>> useless to say that Gimp color mode is far superior for artist than 
>> Photoshop. I understand the photoshop one should be proposed for 
>> compatibility, but for efficiency ; please don't omit one like Gimp. 
>> I couldn't try it with Krita , btw*
>>
>> The PSD file if you need to test ( this file can be considered as 
>> 'public domain' if you need it ) :
>> http://www.davidrevoy.com/XYZ/color-mode_test.psd.zip
>> ;-)
>>
>> -David
>> ( PS : can't compile since Git or install 2.3 threw PPA , as i'm 
>> Lucid Lynx LTS user not Maverick ...so I wait kubuntu backport to 
>> post the bin for Lucid 64bit )
>>
>> On 01/28/2011 10:52 PM, Sven Langkamp wrote:
>>> On Wed, Jan 12, 2011 at 11:17 PM, Silvio Heinrich <plassy at web.de 
>>> <mailto:plassy at web.de>> wrote:
>>>
>>>     Phew... I think I've gone a bit mad with the blending modes :D.
>>>     I added a few. When counting everything together there should be
>>>     nearly 40 compositing modes now.
>>>     All modes should trait partly transparent layers as Photoshop is
>>>     doing it and all modes should
>>>     respect the channel flags.
>>>     But there are two problems with this patch:
>>>
>>>     1. I used a pretty generic approach. So it relies on the
>>>     compiler to do proper inlining. And i didn't use the optimized
>>>     multiply functions. I had a few problems with those functions,
>>>     because it seems the give no correct results but approximations.
>>>     So I still need to check out which composite modes will work
>>>     with the optimized functions. I just want to say that it could
>>>     be that this is a bit/much slower then the current
>>>     implementation (i don't know how much time you spend in
>>>     optimizing this).
>>>     I personally haven't noticed any speed impact but I've got a
>>>     3GHz quad core, so i think i will be the last
>>>     who will notice this.
>>>
>>>     2. The "Hue" and "Saturation" modes are not working correctly
>>>     but the "Luminosity" and "Color" modes work exactly as in
>>>     Photoshop. I coded the algorithms after the ISO 3200-1 spec.
>>>     Adobe released the texts they gave to the ISO committee for
>>>     specification. You can find them here:
>>>     http://www.adobe.com/devnet/pdf.html
>>>     http://www.adobe.com/content/dam/Adobe/en/devnet/acrobat/pdfs/PDF32000_2008.pdf 
>>>     (direct link)
>>>
>>>     go to the category "Transparency" -> "Basic Composition
>>>     Computations". This spec is of course for PDFs but it seems that
>>>     Photoshop uses the same formulas.
>>>     Since "Luminosity" and "Color" modes are working i think i made
>>>     some mistake in implementing the
>>>     "setSat" function (on page 327). Maybe someone else has an
>>>     enlightenment, because I'm working in the dark right now :D.
>>>
>>>      But apart from this two problems everything else should work
>>>     fine (hopefully).
>>>
>>>
>>>
>>> I tried to build the branch but I get this error:
>>> Linking CXX shared library ../../lib/libpigmentcms.so
>>> CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function 
>>> `unsigned short cfVividLight<unsigned short>(unsigned short, 
>>> unsigned short)':
>>> KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned 
>>> short cfVividLight<unsigned short>(unsigned short, unsigned 
>>> short)]+0x31): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned short>::unitValue'
>>> KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned 
>>> short cfVividLight<unsigned short>(unsigned short, unsigned 
>>> short)]+0x3d): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned short>::zeroValue'
>>> KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned 
>>> short cfVividLight<unsigned short>(unsigned short, unsigned 
>>> short)]+0xb3): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned short>::zeroValue'
>>> KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned 
>>> short cfVividLight<unsigned short>(unsigned short, unsigned 
>>> short)]+0xbf): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned short>::unitValue'
>>> CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function 
>>> `unsigned short cfDivide<unsigned short>(unsigned short, unsigned 
>>> short)':
>>> KoLabColorSpace.cpp:(.text._Z8cfDivideItET_S0_S0_[unsigned short 
>>> cfDivide<unsigned short>(unsigned short, unsigned short)]+0x25): 
>>> undefined reference to `KoColorSpaceMathsTraits<unsigned 
>>> short>::zeroValue'
>>> KoLabColorSpace.cpp:(.text._Z8cfDivideItET_S0_S0_[unsigned short 
>>> cfDivide<unsigned short>(unsigned short, unsigned short)]+0x31): 
>>> undefined reference to `KoColorSpaceMathsTraits<unsigned 
>>> short>::unitValue'
>>> CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function 
>>> `unsigned short cfArcTangent<unsigned short>(unsigned short, 
>>> unsigned short)':
>>> KoLabColorSpace.cpp:(.text._Z12cfArcTangentItET_S0_S0_[unsigned 
>>> short cfArcTangent<unsigned short>(unsigned short, unsigned 
>>> short)]+0x25): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned short>::zeroValue'
>>> KoLabColorSpace.cpp:(.text._Z12cfArcTangentItET_S0_S0_[unsigned 
>>> short cfArcTangent<unsigned short>(unsigned short, unsigned 
>>> short)]+0x31): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned short>::unitValue'
>>> CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In 
>>> function `unsigned char cfVividLight<unsigned char>(unsigned char, 
>>> unsigned char)':
>>> KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned 
>>> char cfVividLight<unsigned char>(unsigned char, unsigned 
>>> char)]+0x27): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned char>::unitValue'
>>> KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned 
>>> char cfVividLight<unsigned char>(unsigned char, unsigned 
>>> char)]+0x33): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned char>::zeroValue'
>>> KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned 
>>> char cfVividLight<unsigned char>(unsigned char, unsigned 
>>> char)]+0x97): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned char>::zeroValue'
>>> KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned 
>>> char cfVividLight<unsigned char>(unsigned char, unsigned 
>>> char)]+0xa3): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned char>::unitValue'
>>> CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In 
>>> function `unsigned char cfDivide<unsigned char>(unsigned char, 
>>> unsigned char)':
>>> KoRgbU8ColorSpace.cpp:(.text._Z8cfDivideIhET_S0_S0_[unsigned char 
>>> cfDivide<unsigned char>(unsigned char, unsigned char)]+0x21): 
>>> undefined reference to `KoColorSpaceMathsTraits<unsigned 
>>> char>::zeroValue'
>>> KoRgbU8ColorSpace.cpp:(.text._Z8cfDivideIhET_S0_S0_[unsigned char 
>>> cfDivide<unsigned char>(unsigned char, unsigned char)]+0x2d): 
>>> undefined reference to `KoColorSpaceMathsTraits<unsigned 
>>> char>::unitValue'
>>> CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In 
>>> function `unsigned char cfArcTangent<unsigned char>(unsigned char, 
>>> unsigned char)':
>>> KoRgbU8ColorSpace.cpp:(.text._Z12cfArcTangentIhET_S0_S0_[unsigned 
>>> char cfArcTangent<unsigned char>(unsigned char, unsigned 
>>> char)]+0x21): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned char>::zeroValue'
>>> KoRgbU8ColorSpace.cpp:(.text._Z12cfArcTangentIhET_S0_S0_[unsigned 
>>> char cfArcTangent<unsigned char>(unsigned char, unsigned 
>>> char)]+0x2d): undefined reference to 
>>> `KoColorSpaceMathsTraits<unsigned char>::unitValue'
>>> collect2: ld returned 1 exit status
>>> make[2]: *** [lib/libpigmentcms.so.8.0.0] Fehler 1
>>> make[1]: *** [libs/pigment/CMakeFiles/pigmentcms.dir/all] Fehler 2
>>> make: *** [all] Fehler 2
>>>
>>>
>>> _______________________________________________
>>> kimageshop mailing list
>>> kimageshop at kde.org
>>> https://mail.kde.org/mailman/listinfo/kimageshop
>>
>>
>> _______________________________________________
>> kimageshop mailing list
>> kimageshop at kde.org
>> https://mail.kde.org/mailman/listinfo/kimageshop
>
>
> _______________________________________________
> kimageshop mailing list
> kimageshop at kde.org
> https://mail.kde.org/mailman/listinfo/kimageshop
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kimageshop/attachments/20110129/9a4b63d4/attachment-0001.htm 


More information about the kimageshop mailing list