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

David REVOY davidrevoy at gmail.com
Sat Jan 29 10:41:34 CET 2011


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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.kde.org/pipermail/kimageshop/attachments/20110129/76a113cf/attachment.htm 


More information about the kimageshop mailing list