--===============1645789146== Content-Type: multipart/alternative; boundary=00163630f98b94cb81049aef14b3 --00163630f98b94cb81049aef14b3 Content-Type: text/plain; charset=ISO-8859-1 On Wed, Jan 12, 2011 at 11:17 PM, Silvio Heinrich 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)': KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfVividLight(unsigned short, unsigned short)]+0x31): undefined reference to `KoColorSpaceMathsTraits::unitValue' KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfVividLight(unsigned short, unsigned short)]+0x3d): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfVividLight(unsigned short, unsigned short)]+0xb3): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfVividLight(unsigned short, unsigned short)]+0xbf): undefined reference to `KoColorSpaceMathsTraits::unitValue' CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function `unsigned short cfDivide(unsigned short, unsigned short)': KoLabColorSpace.cpp:(.text._Z8cfDivideItET_S0_S0_[unsigned short cfDivide(unsigned short, unsigned short)]+0x25): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoLabColorSpace.cpp:(.text._Z8cfDivideItET_S0_S0_[unsigned short cfDivide(unsigned short, unsigned short)]+0x31): undefined reference to `KoColorSpaceMathsTraits::unitValue' CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function `unsigned short cfArcTangent(unsigned short, unsigned short)': KoLabColorSpace.cpp:(.text._Z12cfArcTangentItET_S0_S0_[unsigned short cfArcTangent(unsigned short, unsigned short)]+0x25): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoLabColorSpace.cpp:(.text._Z12cfArcTangentItET_S0_S0_[unsigned short cfArcTangent(unsigned short, unsigned short)]+0x31): undefined reference to `KoColorSpaceMathsTraits::unitValue' CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In function `unsigned char cfVividLight(unsigned char, unsigned char)': KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned char cfVividLight(unsigned char, unsigned char)]+0x27): undefined reference to `KoColorSpaceMathsTraits::unitValue' KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned char cfVividLight(unsigned char, unsigned char)]+0x33): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned char cfVividLight(unsigned char, unsigned char)]+0x97): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned char cfVividLight(unsigned char, unsigned char)]+0xa3): undefined reference to `KoColorSpaceMathsTraits::unitValue' CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In function `unsigned char cfDivide(unsigned char, unsigned char)': KoRgbU8ColorSpace.cpp:(.text._Z8cfDivideIhET_S0_S0_[unsigned char cfDivide(unsigned char, unsigned char)]+0x21): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoRgbU8ColorSpace.cpp:(.text._Z8cfDivideIhET_S0_S0_[unsigned char cfDivide(unsigned char, unsigned char)]+0x2d): undefined reference to `KoColorSpaceMathsTraits::unitValue' CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In function `unsigned char cfArcTangent(unsigned char, unsigned char)': KoRgbU8ColorSpace.cpp:(.text._Z12cfArcTangentIhET_S0_S0_[unsigned char cfArcTangent(unsigned char, unsigned char)]+0x21): undefined reference to `KoColorSpaceMathsTraits::zeroValue' KoRgbU8ColorSpace.cpp:(.text._Z12cfArcTangentIhET_S0_S0_[unsigned char cfArcTangent(unsigned char, unsigned char)]+0x2d): undefined reference to `KoColorSpaceMathsTraits::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 --00163630f98b94cb81049aef14b3 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
On Wed, Jan 12, 2011 at 11:17 PM, Silvio Heinric= h <plassy@web.de&= gt; wrote:
=20 =20 =20
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 3G= Hz 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/Ado= be/en/devnet/acrobat/pdfs/PDF32000_2008.pdf=A0 (direct link)

go to the category "Transparency" -> "Basic Compositi= on 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.

=A0But apart from this two problems everything else should work fine (hopefully).<= /span>



I tried to build the branch but I get this error= :
Linking CXX shared library ../../lib/libpigmentcms.so=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0
CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function `unsig= ned short cfVividLight<unsigned short>(unsigned short, unsigned short= )':=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0= =A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0=A0
KoLa= bColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfVividLi= ght<unsigned short>(unsigned short, unsigned short)]+0x31): undefined= reference to `KoColorSpaceMathsTraits<unsigned short>::unitValue'= ;
KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfViv= idLight<unsigned short>(unsigned short, unsigned short)]+0x3d): undef= ined reference to `KoColorSpaceMathsTraits<unsigned short>::zeroValue= '
KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfViv= idLight<unsigned short>(unsigned short, unsigned short)]+0xb3): undef= ined reference to `KoColorSpaceMathsTraits<unsigned short>::zeroValue= '
KoLabColorSpace.cpp:(.text._Z12cfVividLightItET_S0_S0_[unsigned short cfViv= idLight<unsigned short>(unsigned short, unsigned short)]+0xbf): undef= ined reference to `KoColorSpaceMathsTraits<unsigned short>::unitValue= '
CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function `unsig= ned short cfDivide<unsigned short>(unsigned short, unsigned short)= 9;:
KoLabColorSpace.cpp:(.text._Z8cfDivideItET_S0_S0_[unsigned short cfD= ivide<unsigned short>(unsigned short, unsigned short)]+0x25): undefin= ed reference to `KoColorSpaceMathsTraits<unsigned short>::zeroValue&#= 39;
KoLabColorSpace.cpp:(.text._Z8cfDivideItET_S0_S0_[unsigned short cfDivide&l= t;unsigned short>(unsigned short, unsigned short)]+0x31): undefined refe= rence to `KoColorSpaceMathsTraits<unsigned short>::unitValue'
CMakeFiles/pigmentcms.dir/colorspaces/KoLabColorSpace.o: In function `unsig= ned short cfArcTangent<unsigned short>(unsigned short, unsigned short= )':
KoLabColorSpace.cpp:(.text._Z12cfArcTangentItET_S0_S0_[unsigned = short cfArcTangent<unsigned short>(unsigned short, unsigned short)]+0= x25): undefined reference to `KoColorSpaceMathsTraits<unsigned short>= ::zeroValue'
KoLabColorSpace.cpp:(.text._Z12cfArcTangentItET_S0_S0_[unsigned short cfArc= Tangent<unsigned short>(unsigned short, unsigned short)]+0x31): undef= ined reference to `KoColorSpaceMathsTraits<unsigned short>::unitValue= '
CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In function `uns= igned char cfVividLight<unsigned char>(unsigned char, unsigned char)&= #39;:
KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned = char cfVividLight<unsigned char>(unsigned char, unsigned char)]+0x27)= : undefined reference to `KoColorSpaceMathsTraits<unsigned char>::uni= tValue'
KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned char cfVi= vidLight<unsigned char>(unsigned char, unsigned char)]+0x33): undefin= ed reference to `KoColorSpaceMathsTraits<unsigned char>::zeroValue= 9;
KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned char cfVi= vidLight<unsigned char>(unsigned char, unsigned char)]+0x97): undefin= ed reference to `KoColorSpaceMathsTraits<unsigned char>::zeroValue= 9;
KoRgbU8ColorSpace.cpp:(.text._Z12cfVividLightIhET_S0_S0_[unsigned char cfVi= vidLight<unsigned char>(unsigned char, unsigned char)]+0xa3): undefin= ed reference to `KoColorSpaceMathsTraits<unsigned char>::unitValue= 9;
CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In function `uns= igned char cfDivide<unsigned char>(unsigned char, unsigned char)'= :
KoRgbU8ColorSpace.cpp:(.text._Z8cfDivideIhET_S0_S0_[unsigned char cfDi= vide<unsigned char>(unsigned char, unsigned char)]+0x21): undefined r= eference to `KoColorSpaceMathsTraits<unsigned char>::zeroValue' KoRgbU8ColorSpace.cpp:(.text._Z8cfDivideIhET_S0_S0_[unsigned char cfDivide&= lt;unsigned char>(unsigned char, unsigned char)]+0x2d): undefined refere= nce to `KoColorSpaceMathsTraits<unsigned char>::unitValue'
CMakeFiles/pigmentcms.dir/colorspaces/KoRgbU8ColorSpace.o: In function `uns= igned char cfArcTangent<unsigned char>(unsigned char, unsigned char)&= #39;:
KoRgbU8ColorSpace.cpp:(.text._Z12cfArcTangentIhET_S0_S0_[unsigned = char cfArcTangent<unsigned char>(unsigned char, unsigned char)]+0x21)= : undefined reference to `KoColorSpaceMathsTraits<unsigned char>::zer= oValue'
KoRgbU8ColorSpace.cpp:(.text._Z12cfArcTangentIhET_S0_S0_[unsigned char cfAr= cTangent<unsigned char>(unsigned char, unsigned char)]+0x2d): undefin= ed reference to `KoColorSpaceMathsTraits<unsigned char>::unitValue= 9;
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

--00163630f98b94cb81049aef14b3-- --===============1645789146== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ kimageshop mailing list kimageshop@kde.org https://mail.kde.org/mailman/listinfo/kimageshop --===============1645789146==--