lcms-user Mailing List for Little cms color engine (Page 190)
An ICC-based CMM for color management
Brought to you by:
mm2
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
(2) |
May
(15) |
Jun
(24) |
Jul
(9) |
Aug
(14) |
Sep
|
Oct
(12) |
Nov
(17) |
Dec
(31) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(34) |
Feb
(7) |
Mar
(7) |
Apr
(16) |
May
(4) |
Jun
(14) |
Jul
(34) |
Aug
(54) |
Sep
(11) |
Oct
(25) |
Nov
(1) |
Dec
(6) |
2003 |
Jan
(27) |
Feb
(54) |
Mar
(23) |
Apr
(68) |
May
(82) |
Jun
(36) |
Jul
(45) |
Aug
(45) |
Sep
(49) |
Oct
(30) |
Nov
(65) |
Dec
(23) |
2004 |
Jan
(52) |
Feb
(52) |
Mar
(35) |
Apr
(38) |
May
(93) |
Jun
(22) |
Jul
(51) |
Aug
(50) |
Sep
(73) |
Oct
(28) |
Nov
(30) |
Dec
(51) |
2005 |
Jan
(22) |
Feb
(79) |
Mar
(38) |
Apr
(51) |
May
(95) |
Jun
(60) |
Jul
(56) |
Aug
(49) |
Sep
(22) |
Oct
(43) |
Nov
(15) |
Dec
(40) |
2006 |
Jan
(51) |
Feb
(31) |
Mar
(37) |
Apr
(25) |
May
(9) |
Jun
(13) |
Jul
(17) |
Aug
(66) |
Sep
(7) |
Oct
(12) |
Nov
(14) |
Dec
(31) |
2007 |
Jan
(18) |
Feb
(9) |
Mar
(22) |
Apr
(18) |
May
(5) |
Jun
(25) |
Jul
(2) |
Aug
(15) |
Sep
(12) |
Oct
(40) |
Nov
(10) |
Dec
(23) |
2008 |
Jan
(21) |
Feb
(56) |
Mar
(12) |
Apr
(23) |
May
(47) |
Jun
(75) |
Jul
(24) |
Aug
(2) |
Sep
(7) |
Oct
(26) |
Nov
(20) |
Dec
(16) |
2009 |
Jan
(14) |
Feb
(1) |
Mar
(29) |
Apr
(54) |
May
(18) |
Jun
(16) |
Jul
(5) |
Aug
(3) |
Sep
(38) |
Oct
(6) |
Nov
(25) |
Dec
(28) |
2010 |
Jan
(11) |
Feb
(26) |
Mar
(2) |
Apr
(10) |
May
(45) |
Jun
(94) |
Jul
(11) |
Aug
(32) |
Sep
(18) |
Oct
(37) |
Nov
(19) |
Dec
(34) |
2011 |
Jan
(21) |
Feb
(16) |
Mar
(16) |
Apr
(29) |
May
(17) |
Jun
(18) |
Jul
(7) |
Aug
(21) |
Sep
(10) |
Oct
(7) |
Nov
(15) |
Dec
(6) |
2012 |
Jan
(13) |
Feb
(16) |
Mar
(15) |
Apr
(12) |
May
(15) |
Jun
(31) |
Jul
(22) |
Aug
(15) |
Sep
(46) |
Oct
(21) |
Nov
(15) |
Dec
(33) |
2013 |
Jan
(19) |
Feb
(17) |
Mar
(31) |
Apr
(17) |
May
(27) |
Jun
(24) |
Jul
(26) |
Aug
(11) |
Sep
(9) |
Oct
(22) |
Nov
(14) |
Dec
(16) |
2014 |
Jan
(20) |
Feb
(66) |
Mar
(29) |
Apr
(13) |
May
(9) |
Jun
|
Jul
(11) |
Aug
(21) |
Sep
(15) |
Oct
(5) |
Nov
(5) |
Dec
(10) |
2015 |
Jan
(6) |
Feb
(26) |
Mar
(26) |
Apr
|
May
(9) |
Jun
(5) |
Jul
(5) |
Aug
(11) |
Sep
(8) |
Oct
|
Nov
|
Dec
|
2016 |
Jan
(3) |
Feb
|
Mar
(9) |
Apr
(3) |
May
(16) |
Jun
(26) |
Jul
(32) |
Aug
(27) |
Sep
(9) |
Oct
|
Nov
(4) |
Dec
(10) |
2017 |
Jan
(11) |
Feb
(44) |
Mar
(6) |
Apr
(8) |
May
(1) |
Jun
(2) |
Jul
(34) |
Aug
(28) |
Sep
(3) |
Oct
(9) |
Nov
(3) |
Dec
|
2018 |
Jan
(1) |
Feb
(5) |
Mar
(6) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
|
Aug
(1) |
Sep
(6) |
Oct
|
Nov
(6) |
Dec
|
2019 |
Jan
(18) |
Feb
(16) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(7) |
Sep
(3) |
Oct
(10) |
Nov
(1) |
Dec
(3) |
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(17) |
Jun
(23) |
Jul
|
Aug
(4) |
Sep
|
Oct
|
Nov
|
Dec
|
2021 |
Jan
(10) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(5) |
Oct
|
Nov
(1) |
Dec
|
2022 |
Jan
(8) |
Feb
|
Mar
(9) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(13) |
Nov
(12) |
Dec
|
2023 |
Jan
|
Feb
(1) |
Mar
(9) |
Apr
|
May
(3) |
Jun
(5) |
Jul
(3) |
Aug
(8) |
Sep
|
Oct
|
Nov
(1) |
Dec
(9) |
2024 |
Jan
(8) |
Feb
|
Mar
(14) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2025 |
Jan
(1) |
Feb
(1) |
Mar
(1) |
Apr
(2) |
May
(5) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: James B. <jr...@pi...> - 2002-07-24 17:32:10
|
At 10:37 AM -0320 7/24/02, Mart=ED Maria wrote: >So, if your embedded profile says "this image is using D65" and >the monitor profile says "this monitor is using D93", a transform >using perceptual, saturation or relative intents will ignore this >information, and a transform using absolute colorimetric one will >convert RGB of 255 255 255 to D65 and then will represent D65 >chromaticity in the monitor. This is quite yellow under D93 illuminant. > >Regards, >Marti. This sounds exactly what I want, the source of my confusion seems to be Adobe - Here's what it says in the Color Settings dialog re Absolute Colorimetric in Photoshop 7: Absolute Colorimetric: Attempts to match the absolute Lab coordinates of the destination colors to the absolute Lab coordinates of the source colors. Does not adjust for the different media white points. Mostly used for "logo" colors, and for hard proofing. Not recommended for most color conversions. The "not adjusting to media white points" seems to be what I don't want. |
From: <ma...@li...> - 2002-07-24 08:34:54
|
Hi, >One thing I still can't seem to answer one way or the other is given I >have a profile embedded in an image that says what the white point is, >will an app (Photoshop) display "white" as what the embedded profile >says or what ever the display profile says? At first, white point is only used on absolute colorimetric intents. All remaining intents does assume observer is totally adapted to the destination media white. So, using perceptual or saturation intents, source device white will be mapped to destination device white. That is, a rgb of 255, 255, 255 will (or should be) always mapped to 255, 255, 255 Then comes the absolute colorimetric intent. The purpose of this intent is to reproduce color "as is". That means, no adaptation is done and the white point mismatch does result in a moderate to hard cast. Placing, for example, two monitors side by side, one monitor using D93 and the other using D65, will show same colors only by using absolute colorimetric intent. But of course, if the image is intended for, as example, D65, will result on a stong yellow cast in the D93 monitor. Returning to your question... you have two profiles and two white points. You can use absolute colorimetric intent to obtain same absolute colors, without any adaptation. So, in this situation the concept of white has no meaning, there is no subjective white, since there is no adaptation state. If you use the origin device white point, this will be represented as a color in the destination with little or none relationship with destination white point. So, if your embedded profile says "this image is using D65" and the monitor profile says "this monitor is using D93", a transform using perceptual, saturation or relative intents will ignore this information, and a transform using absolute colorimetric one will convert RGB of 255 255 255 to D65 and then will represent D65 chromaticity in the monitor. This is quite yellow under D93 illuminant. Regards, Marti. ----- Original Message ----- From: "James Burgess" <jr...@pi...> To: "Martí Maria" <ma...@li...> Cc: <lcm...@li...> Sent: Tuesday, July 23, 2002 11:46 PM Subject: Re: [Lcms-user] Re: Thank You One thing I still can't seem to answer one way or the other is given I have a profile embedded in an image that says what the white point is, will an app (Photoshop) display "white" as what the embedded profile says or what ever the display profile says? I have tried this in the past an have seen the display "over rule" the image (which seems wrong). On Monday, July 22, 2002, at 04:33 PM, Martí Maria wrote: > Hi, > > With those measurement you could obtain a matrix-shaper profile. > For some authours, these works on monitor even better that > CLUT-based profiles. This is not unusual, but pretty normal indeed. > The profiler is happy with these patches, just take the > "MonitorTemplate.it8" file, in "pics" folder as a example. > On more grays, better the profile. > > lcms has a function to build "virtual" profiles based on these > settings. cmsCreateRGBProfile(). You can save the resulting > profile to disk by using _cmsSaveProfile() too. > > Regards, > Marti. > > > ----- Original Message ----- > From: "James Burgess" <jr...@pi...> > To: "Martí Maria" <ma...@li...>; <lcms- > us...@li...> > Sent: Monday, July 22, 2002 2:33 PM > Subject: Re: [Lcms-user] Re: Thank You > |
From: James B. <jr...@pi...> - 2002-07-24 03:07:40
|
One thing I still can't seem to answer one way or the other is given I=20= have a profile embedded in an image that says what the white point is,=20= will an app (Photoshop) display "white" as what the embedded profile=20 says or what ever the display profile says? I have tried this in the past an have seen the display "over rule" the=20= image (which seems wrong). On Monday, July 22, 2002, at 04:33 PM, Mart=ED Maria wrote: > Hi, > > With those measurement you could obtain a matrix-shaper profile. > For some authours, these works on monitor even better that > CLUT-based profiles. This is not unusual, but pretty normal indeed. > The profiler is happy with these patches, just take the > "MonitorTemplate.it8" file, in "pics" folder as a example. > On more grays, better the profile. > > lcms has a function to build "virtual" profiles based on these > settings. cmsCreateRGBProfile(). You can save the resulting > profile to disk by using _cmsSaveProfile() too. > > Regards, > Marti. > > > ----- Original Message ----- > From: "James Burgess" <jr...@pi...> > To: "Mart=ED Maria" <ma...@li...>; <lcms- > us...@li...> > Sent: Monday, July 22, 2002 2:33 PM > Subject: Re: [Lcms-user] Re: Thank You > |
From: <ma...@li...> - 2002-07-22 18:10:35
|
Hi, With those measurement you could obtain a matrix-shaper profile. For some authours, these works on monitor even better that CLUT-based profiles. This is not unusual, but pretty normal indeed. The profiler is happy with these patches, just take the "MonitorTemplate.it8" file, in "pics" folder as a example. On more grays, better the profile. lcms has a function to build "virtual" profiles based on these settings. cmsCreateRGBProfile(). You can save the resulting profile to disk by using _cmsSaveProfile() too. Regards, Marti. ----- Original Message ----- From: "James Burgess" <jr...@pi...> To: "Martí Maria" <ma...@li...>; <lcm...@li...> Sent: Monday, July 22, 2002 2:33 PM Subject: Re: [Lcms-user] Re: Thank You > 33^4 should be enough! > > I have a slightly unusual situation - I have a proprietry monitor > calibration scheme that I'm trying to emulate with ICC. The scheme I > have gives me the primaries of the monitor, the white point and very > precise brightness values for every step of r, g and b separately (3 > * 256). My first thought was to pretend to have an IT8 chart with 768 > patches on it which seems like it would work from your comments below. > > > > >Hi, > >Well, first you have to take in account that profiles does not contain > >sample points but a model for the colorspace translation. > >One particular implementation of this model, could be a 3D grid containing > >samples at fixed slices. If these are what you are referring, there is > >AFAIK no limit in ICC spec, but a cube side of 33 - 48 points is the > >practical limit. Note that, in RGB, a side of 33 points does represent > >33 * 33 * 33 * 3 = 107811 samples!! On CMYK, the numbers > >grow to enormous: 33 * 33* 33* 33 * 4 = 4743684!!!!! > >On 6-inks profiles, anything higher that 6 points is a little monster. > > > >Photoshop does work fine with this type of profiles, in fact, all > >profiles pre-revision 4 can be only of two different flavors: LUT-based > >(this ones) and matrix-shaper. Rev 4 will introduce a lot more variants. > > > >If you are referring to IT8 files, well, I've checked up to 1000 samples, > >I assume this would be enough for most applications ;-) > > > >Regards, > >Marti. > > |
From: James B. <jr...@pi...> - 2002-07-22 17:54:30
|
33^4 should be enough! I have a slightly unusual situation - I have a proprietry monitor calibration scheme that I'm trying to emulate with ICC. The scheme I have gives me the primaries of the monitor, the white point and very precise brightness values for every step of r, g and b separately (3 * 256). My first thought was to pretend to have an IT8 chart with 768 patches on it which seems like it would work from your comments below. >Hi, >Well, first you have to take in account that profiles does not contain >sample points but a model for the colorspace translation. >One particular implementation of this model, could be a 3D grid containing >samples at fixed slices. If these are what you are referring, there is >AFAIK no limit in ICC spec, but a cube side of 33 - 48 points is the >practical limit. Note that, in RGB, a side of 33 points does represent >33 * 33 * 33 * 3 = 107811 samples!! On CMYK, the numbers >grow to enormous: 33 * 33* 33* 33 * 4 = 4743684!!!!! >On 6-inks profiles, anything higher that 6 points is a little monster. > >Photoshop does work fine with this type of profiles, in fact, all >profiles pre-revision 4 can be only of two different flavors: LUT-based >(this ones) and matrix-shaper. Rev 4 will introduce a lot more variants. > >If you are referring to IT8 files, well, I've checked up to 1000 samples, >I assume this would be enough for most applications ;-) > >Regards, >Marti. |
From: <ma...@li...> - 2002-07-20 08:39:30
|
Hi, > Martí Maria wrote: > > > Anyway, The profiler is more powerful but also more complex, > > you need to supply a IT8 file containing measurements and some > > parameters. Profiles generated by lprof can handle viewing > > conditions and some other tweaks, but otherwise are identical > > with those generated with lcms code. > > Just curious before I try this myself, what is the limit on the number of > sample points you could put in the profiles? Would you think it might cause > programs such as Photoshop to break given that probably isn't a usual thing > to do in a monitor profile? > Well, first you have to take in account that profiles does not contain sample points but a model for the colorspace translation. One particular implementation of this model, could be a 3D grid containing samples at fixed slices. If these are what you are referring, there is AFAIK no limit in ICC spec, but a cube side of 33 - 48 points is the practical limit. Note that, in RGB, a side of 33 points does represent 33 * 33 * 33 * 3 = 107811 samples!! On CMYK, the numbers grow to enormous: 33 * 33* 33* 33 * 4 = 4743684!!!!! On 6-inks profiles, anything higher that 6 points is a little monster. Photoshop does work fine with this type of profiles, in fact, all profiles pre-revision 4 can be only of two different flavors: LUT-based (this ones) and matrix-shaper. Rev 4 will introduce a lot more variants. If you are referring to IT8 files, well, I've checked up to 1000 samples, I assume this would be enough for most applications ;-) Regards, Marti. |
From: James B. <jr...@pi...> - 2002-07-19 19:50:33
|
Mart=ED Maria wrote: > > > Anyway, The profiler is more powerful but also more complex, > you need to supply a IT8 file containing measurements and some > parameters. Profiles generated by lprof can handle viewing > conditions and some other tweaks, but otherwise are identical > with those generated with lcms code. Just curious before I try this myself, what is the limit on the number of sample points you could put in the profiles? Would you think it might cau= se programs such as Photoshop to break given that probably isn't a usual thi= ng to do in a monitor profile? |
From: <ma...@li...> - 2002-07-19 08:37:23
|
Hi, > But I want to make a program that generates profiles. Ok. There are two ways to generate a monitor profile. One, the most easy, is by using littlecms. For this you need 3 things: the primaries, the white point and the gamma of the monitor. If you already have these parameters, calling a couple of functions will accomplish the profile. Since these functions belong to lcms, they are fully documented and well tested. Littlecms is released under LGPL, that is, you can use it in commercial projects too. The other way is by using lprof. The profilers are NOT released under LGPL but under GPL. That is, you cannot use it on commercial projects but only on free, open source ones. We did this in such way because building a commercial profiling package would be too easy, and there are people making a living from such programs. For these reasons the lprof library is not documented. Anyway, The profiler is more powerful but also more complex, you need to supply a IT8 file containing measurements and some parameters. Profiles generated by lprof can handle viewing conditions and some other tweaks, but otherwise are identical with those generated with lcms code. If you can effectively use a measurement device, getting white point, primaries and gamma curves is an easy task. I would recommend to give a try before going to lprof code, which is harder to use and to understand. As a sample, this will generate a profile by using lcms code: cmsHPROFILE hMonitor; hMonitor = cmsCreateRGBProfile(&WhitePoint, &Primaries, GammaGurves); _cmsSaveProfile(hMonitor, "myprofile.icm"); Please let me know which method you plan to use, and I will try to do a quick explanation on how to do. Regards, Martí Maria The little cms project http://www.littlecms.com ma...@li... ----- Original Message ----- From: "amit gupta" <a_g...@re...> To: "Martí Maria" <ma...@li...> Sent: Friday, July 19, 2002 3:22 AM Subject: Thank You > Dear Sir > Thank You very much for your kind help. > But I want to make a program that generates profiles.So,I > need your kind help again even after you told me that it is not > documented.Please try to explain me.I thank you again for giving > your precious time to me. > Waiting for your reply > Yours Sincerely > Amit Gupta > > |
From: <ma...@li...> - 2002-07-18 13:41:18
|
Hi, I'm forwarding your question the mailing list, probably it would be of interest for someone else. > I display grey patches on the monitor for > RGB values {(5*i,5*i,5*i) for i=0,1..51} > and then measure XYZ values of these coloured patches.Now from > these measured values I want to generate the ICC Profile of the > monitor. In order to generate an accurate (via measurement) monitor profile, the steps are: - Display (and measure) the patches stated in file "MonitorTemplate.it8" present in "pics" directory. These patches are: Name RGB === ==== CBL 0 0 255 CGR 0 255 0 CRD 255 0 0 DMIN 255 255 255 GS1 250 250 250 GS2 238 238 238 GS3 221 221 221 GS4 205 205 205 GS5 190 190 190 GS6 175 175 175 GS7 160 160 160 GS8 146 146 146 GS9 133 133 133 GS10 119 119 119 GS11 107 107 107 GS12 95 95 95 GS13 83 83 83 GS14 72 72 72 GS15 63 63 63 GS16 53 53 53 GS17 44 44 44 GS18 36 36 36 GS19 29 29 29 GS20 21 21 21 GS21 15 15 15 GS22 4 4 4 DMAX 0 0 0 These include your gray scale and a 3 additional patches for primaries. - Substitute the XYZ values of "MonitorTemplate.it8" for those readed by your measurement device. You can also add more patches if wish so, these are the minimum required. On more patches, better the profile. The patch names are only a guide and ignored by the profiler. The important thing is RGB/XYZ values. - Then you can use the precompiled "qtmonitorprofiler.exe" program, select the radio button labelled "I want to build accurate profile from measurement sheet". Enter the name of your it8 file. Fill the name of output profile in "Output profile file" entry and press "GO" button. That's all, the profiler will generate a profile using your measurements. If you want to create a PROGRAM that generates profiles, well, it is a bit more complex, since the profiler construction set is not currently documented (only the application programs are). Anyway please contact me in such case and I will try to explain how to do. Regards, Martí Maria The little cms project http://www.littlecms.com ma...@li... ----- Original Message ----- From: "amit gupta" <a_g...@re...> To: <in...@li...> Sent: Thursday, July 18, 2002 7:48 AM Subject: Monitor profiler > Dear Sir > I am a student at Indian Institute of > Technology,Delhi,India.I display grey patches on the monitor for > RGB values {(5*i,5*i,5*i) for i=0,1..51} > and then measure XYZ values of these coloured patches.Now from > these measured values I want to generate the ICC Profile of the > monitor. > I downloaded the source code from your site > http://www.littlecms.com/profilers.htm > Will this code work for the windows in VC++.What part of the code > will be sufficient for me.If there is some easier method other > than using the source code given by you,Give me that method. > Please do reply early. > Thanking you for your kind help. > Yours Sincerely > Amit Gupta > > > |
From: <su...@mo...> - 2002-07-11 14:03:03
|
> >> About unlink()... is remove() available? > > > >unlink is available if the correct lib is included and the correct > >include is done. > > > >Didn't you read the #if stuff from my last message? >=20 > Yes, and also had incorporated to my sources. > I just was trying to avoid the need of a library for a single > function. Probably "remove" is available from standard > C runtime, and then using ok. Than use remove. It's available. Mfg Christian --=20 T-Online Hotline zu DSL Problem am Mac: "Sie haben einen Mac? Dann liegt das Problem definitiv auf unserer Seite, denn am Mac kann es nicht=20 liegen, da=DF Ihr DSL einfach so pl=F6tzlich nicht mehr geht." Michael A. Bloch in dcsm |
From: <ma...@li...> - 2002-07-11 13:47:37
|
>> About unlink()... is remove() available? > >unlink is available if the correct lib is included and the correct >include is done. > >Didn't you read the #if stuff from my last message? Yes, and also had incorporated to my sources. I just was trying to avoid the need of a library for a single function. Probably "remove" is available from standard C runtime, and then using #if __MWERKS__ # define unlink remove ... Would work as well. The evident benefits are that you need not extern libraries anymore. Regards, Marti. ----- Original Message ----- From: "Christian Schmitz" <su...@mo...> To: "Martí Maria" <ma...@li...> Cc: "Martí Maria" <ma...@li...> Sent: Thursday, July 11, 2002 10:07 AM Subject: Re: [Lcms-user] Compiling 109 using Codewarrior > Hi, > > Ok, I will add these changes. > > About unlink()... is remove() available? unlink is available if the correct lib is included and the correct include is done. Didn't you read the #if stuff from my last message? Mfg Christian -- PLZ Suche Das neue Postleitzahlensuchprogramm Vertrieb über Arktis (www.arktis.de) |
From: <ma...@li...> - 2002-07-11 13:17:44
|
Hi, Ok, I will add these changes. About unlink()... is remove() available? perhaps a quick solution would be a #define unlink remove and this would obviate the need of extra libs. > > > Fixed32 FixedSquare(Fixed32 a) > > > void VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d) > > > void MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d) > > > > These are not used anymore outside its module. I keep the functions > > as global just for compatibility sake. > > I know, but you need to declare them on top of the module so you can > call them before you declare them. The current order seems ok to me :-?, first comes the function body and the call is below. I wonder where the compiler complains. Oh, well, adding the declaration on top is not so difficult. Consider it done. Thanks again Regards, Marti. ----- Original Message ----- > > Hi, > > > > > Fixed32 FixedSquare(Fixed32 a) > > > void VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d) > > > void MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d) > > > > These are not used anymore outside its module. I keep the functions > > as global just for compatibility sake. > > I know, but you need to declare them on top of the module so you can > call them before you declare them. > > > About unlink() and swab(), well, unlink() does delete a file. > > Is Unix/POSIX defined function. its ANSI equivalent > > is remove(). if the compiler does not support swab, then there > > is a toggle on lcms.h to use the replacement instead. > > (see USE_CUSTOM_SWAB on lcms.h) > > Ok. Swab is missing only for Windows and for unlink we need to include > unistd.h: > > So please define: > > // If Metroworks > #if __MWERKS__ > // include unlink > #include "unistd.h" > // If Windows > #if WIN32 > // Use custom swab > #define USE_CUSTOM_SWAB 1 > #else > // else if Mac OS > #define NON_WINDOWS 1 > #endif > // Please include for the unlink function: > // MSL_Extras_Carbon.Lib for Mac OS Carbon > // MSL_Extras_PPC.Lib for Mac OS Classic > #endif > > If you add this on top of lcms.h it compiles well. > > Mfg > Christian > > -- > Beruehmte Irrtuemer (07): > Beim neuen Office ist das behoben. > > http://www.christians-software.de (Kostenlose Mac/Win Software) > > |
From: <ma...@li...> - 2002-07-11 08:54:08
|
Hi, > 11. > Stop! I see that I'm using an old lcms.h file!? > :-) There is however a small error, on returning false instead of NULL. As I can see, CodeWarrior mostly complains about strict typechecking. I do assume that a void* pointer will be compatible with any pointer, wich seems not to be the case on CodeWarrior. Of course these are not bad news, but very good news instead.... Codewarrior wasn't supported on anterior revision, and seems there is a chance for this one. I did check ver 1.09 on OSX, but using gcc. So, it is very good to get yet another compiler supported. And CodeWarrior is a very extended compiler, indeed. I'm putting all typecasts in sources, probably I will release a minor revision when all possible problems has became evident. > Fixed32 FixedSquare(Fixed32 a) > void VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d) > void MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d) These are not used anymore outside its module. I keep the functions as global just for compatibility sake. About unlink() and swab(), well, unlink() does delete a file. Is Unix/POSIX defined function. its ANSI equivalent is remove(). if the compiler does not support swab, then there is a toggle on lcms.h to use the replacement instead. (see USE_CUSTOM_SWAB on lcms.h) Many thanks for your report! Regards, Martí Maria The little cms project http://www.littlecms.com ma...@li... ----- Original Message ----- From: "Christian Schmitz" <su...@mo...> To: <lcm...@li...> Cc: "Martí Maria" <ma...@li...> Sent: Wednesday, July 10, 2002 6:19 PM Subject: [Lcms-user] Compiling 109 using Codewarrior > Hi, > > I've downloaded the 109a version as a zip file and I'm trying to compile > it for Mac OS X, Mac OS Classic and Windows, but I've some things, you > may change to your sources to let it better compile. > (without me changing it everytime) > > 1. > Need function prototype for: (compile error) > > LPSAMPLEDCURVE cmsConvertGammaToSampledCurve(LPGAMMATABLE Gamma, int > nPoints) > LPGAMMATABLE cmsConvertSampledCurveToGamma(LPSAMPLEDCURVE Sampled, > double Max) > > 2. > Need function prototype for: (compile warning) > > LPSAMPLEDCURVE cmsDupSampledCurve(LPSAMPLEDCURVE p) > double LCMSEXPORT cmsCIE94DeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) > double LCMSEXPORT cmsBFDdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) > double LCMSEXPORT cmsCMCdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) > LPLUT _cmsComputeSoftProofLUT(cmsHPROFILE hProfile, int nIntent) > BOOL LCMSEXPORT cmsTakeCharTargetData(cmsHPROFILE hProfile, char** Data, > size_t* len) > > 3. > Compile errors: > > case PT_HiFi: return icSigHexachromeData; > must be; > case PT_HiFi: return (icColorSpaceSignature)icSigHexachromeData; > > 4. > InitTag(Icc, icSigProfileDescriptionTag, 11, "(internal)"); > must be: > InitTag(Icc, icSigProfileDescriptionTag, 11, > (void* const)&"(internal)"); > > 5. > Inside > cmsHPROFILE LCMSEXPORT cmsCreateRGBProfile(LPcmsCIExyY WhitePoint, > LPcmsCIExyYTRIPLE Primaries, > LPGAMMATABLE TransferFunction[3]) > there is a "return false", which may better be a "return NULL". > > 6. > What is LOGE? > > return (54.6 * (LOGE * (log(yt + 1.5))) - 9.6); > > 7. > What is unlink? > unlink(TempFileLocation); > > 8. > What is MAT3fromFix? > MAT3fromFix(&Original, &Lut->Matrix); > Later: > Add prototype to let the compiler compile: > void MAT3fromFix(LPMAT3 r, LPWMAT3 v); > > 9. > Inside > LPGAMMATABLE cmsReadICCGamma(cmsHPROFILE hProfile, icTagSignature sig) > return DupGamma(Icc -> TagPtrs[n]); > must be: > return DupGamma((GAMMATABLE*) Icc -> TagPtrs[n]); > > 10. > Header.deviceClass = TransportValue32(Icc -> DeviceClass); > Header.colorSpace = TransportValue32(Icc -> ColorSpace); > Header.pcs = TransportValue32(Icc -> PCS); > must be: > Header.deviceClass = > (icProfileClassSignature)TransportValue32(Icc -> DeviceClass); > Header.colorSpace = > (icColorSpaceSignature)TransportValue32(Icc -> ColorSpace); > Header.pcs = > (icColorSpaceSignature)TransportValue32(Icc -> PCS); > > 10. > inside > static BOOL SetupBase(FILE *OutStream, icTagTypeSignature sig) > Base.sig = TransportValue32(sig); > must be: > Base.sig = (icTagTypeSignature)TransportValue32(sig); > > 11. > Stop! I see that I'm using an old lcms.h file!? > > 12. > Put on the top of lcms.h, so the Windows stuff is kept out: > > #if TARGET_CPU_PPC > #define NON_WINDOWS 1 > #endif > > 13. > Header.platform = > TransportValue32(icSigMicrosoft); > // Sorry, I must put something here > must be: > Header.platform = > (icPlatformSignature)TransportValue32(icSigMicrosoft); > // Sorry, I must put something here > > 14. unlink still missing. > > 15. > Tag.sig = TransportValue32(Icc -> TagNames[i]); > Tag.offset = TransportValue32(Icc -> TagOffsets[i]); > Tag.size = TransportValue32(Icc -> TagSizes[i]); > must be: > Tag.sig = (icTagSignature)TransportValue32(Icc -> > TagNames[i]); > Tag.offset = TransportValue32(Icc -> TagOffsets[i]); > Tag.size = TransportValue32(Icc -> TagSizes[i]); > > 16. > p = cmsCreateTransform(NULL, InputFormat, NULL, OutputFormat, > Intent, cmsFLAGS_NULLTRANSFORM); > must be: > p = (_LPcmsTRANSFORM)cmsCreateTransform(NULL, InputFormat, NULL, > OutputFormat, Intent, cmsFLAGS_NULLTRANSFORM); > > 17. Compiles for Mac OS Classic with unlink commented out. > > 18. Missing propotypes for: > Fixed32 FixedSquare(Fixed32 a) > void VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d) > void MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d) > > 19. Compiles for Mac OS Carbon with unlink commented out. > > 20. xswab is not declared, but used in cmsio1.c: > > So "#define USE_CUSTOM_SWAB 1" must be on here for Windows compiles. > > 21. Compiles for Windows. > > Mfg > Christian > > -- > There are only three types of computer users: > Those that use Macs. > Those that wished they used Macs. > Those that don't know any better. > > > ------------------------------------------------------- > This sf.net email is sponsored by:ThinkGeek > Two, two, TWO treats in one. > http://thinkgeek.com/sf > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > > |
From: <su...@mo...> - 2002-07-10 21:39:43
|
Hi, I've downloaded the 109a version as a zip file and I'm trying to compile it for Mac OS X, Mac OS Classic and Windows, but I've some things, you may change to your sources to let it better compile. (without me changing it everytime) 1. Need function prototype for: (compile error) LPSAMPLEDCURVE cmsConvertGammaToSampledCurve(LPGAMMATABLE Gamma, int nPoints) LPGAMMATABLE cmsConvertSampledCurveToGamma(LPSAMPLEDCURVE Sampled, double Max) 2. Need function prototype for: (compile warning) LPSAMPLEDCURVE cmsDupSampledCurve(LPSAMPLEDCURVE p) double LCMSEXPORT cmsCIE94DeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) double LCMSEXPORT cmsBFDdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) double LCMSEXPORT cmsCMCdeltaE(LPcmsCIELab Lab1, LPcmsCIELab Lab2) LPLUT _cmsComputeSoftProofLUT(cmsHPROFILE hProfile, int nIntent) BOOL LCMSEXPORT cmsTakeCharTargetData(cmsHPROFILE hProfile, char** Data, size_t* len) 3. Compile errors: case PT_HiFi: return icSigHexachromeData; must be; case PT_HiFi: return (icColorSpaceSignature)icSigHexachromeData; 4. InitTag(Icc, icSigProfileDescriptionTag, 11, "(internal)"); must be: InitTag(Icc, icSigProfileDescriptionTag, 11, (void* const)&"(internal)"); 5. Inside cmsHPROFILE LCMSEXPORT cmsCreateRGBProfile(LPcmsCIExyY WhitePoint, LPcmsCIExyYTRIPLE Primaries, LPGAMMATABLE TransferFunction[3]) there is a "return false", which may better be a "return NULL". 6. What is LOGE? return (54.6 * (LOGE * (log(yt + 1.5))) - 9.6); 7. What is unlink? unlink(TempFileLocation); 8. What is MAT3fromFix? MAT3fromFix(&Original, &Lut->Matrix); Later: Add prototype to let the compiler compile: void MAT3fromFix(LPMAT3 r, LPWMAT3 v); 9. Inside LPGAMMATABLE cmsReadICCGamma(cmsHPROFILE hProfile, icTagSignature sig) return DupGamma(Icc -> TagPtrs[n]); must be: return DupGamma((GAMMATABLE*) Icc -> TagPtrs[n]); 10. Header.deviceClass = TransportValue32(Icc -> DeviceClass); Header.colorSpace = TransportValue32(Icc -> ColorSpace); Header.pcs = TransportValue32(Icc -> PCS); must be: Header.deviceClass = (icProfileClassSignature)TransportValue32(Icc -> DeviceClass); Header.colorSpace = (icColorSpaceSignature)TransportValue32(Icc -> ColorSpace); Header.pcs = (icColorSpaceSignature)TransportValue32(Icc -> PCS); 10. inside static BOOL SetupBase(FILE *OutStream, icTagTypeSignature sig) Base.sig = TransportValue32(sig); must be: Base.sig = (icTagTypeSignature)TransportValue32(sig); 11. Stop! I see that I'm using an old lcms.h file!? 12. Put on the top of lcms.h, so the Windows stuff is kept out: #if TARGET_CPU_PPC #define NON_WINDOWS 1 #endif 13. Header.platform = TransportValue32(icSigMicrosoft); // Sorry, I must put something here must be: Header.platform = (icPlatformSignature)TransportValue32(icSigMicrosoft); // Sorry, I must put something here 14. unlink still missing. 15. Tag.sig = TransportValue32(Icc -> TagNames[i]); Tag.offset = TransportValue32(Icc -> TagOffsets[i]); Tag.size = TransportValue32(Icc -> TagSizes[i]); must be: Tag.sig = (icTagSignature)TransportValue32(Icc -> TagNames[i]); Tag.offset = TransportValue32(Icc -> TagOffsets[i]); Tag.size = TransportValue32(Icc -> TagSizes[i]); 16. p = cmsCreateTransform(NULL, InputFormat, NULL, OutputFormat, Intent, cmsFLAGS_NULLTRANSFORM); must be: p = (_LPcmsTRANSFORM)cmsCreateTransform(NULL, InputFormat, NULL, OutputFormat, Intent, cmsFLAGS_NULLTRANSFORM); 17. Compiles for Mac OS Classic with unlink commented out. 18. Missing propotypes for: Fixed32 FixedSquare(Fixed32 a) void VEC3scaleAndCut(LPWVEC3 r, LPVEC3 v, double d) void MAT3scaleAndCut(LPWMAT3 r, LPMAT3 v, double d) 19. Compiles for Mac OS Carbon with unlink commented out. 20. xswab is not declared, but used in cmsio1.c: So "#define USE_CUSTOM_SWAB 1" must be on here for Windows compiles. 21. Compiles for Windows. Mfg Christian -- There are only three types of computer users: Those that use Macs. Those that wished they used Macs. Those that don't know any better. |
From: <ma...@li...> - 2002-07-10 11:18:37
|
Hi, After a small update, the version 1.09 is now publicly available on site. The profilers package does have now a small guided tour. Several users have reported a big quality gain in scanner profiler, so seems this version is working better that anterior. If anybody has some doubts about new CMM functionality, specially on writing profiles please feel free to use this mailing list. The capability of write profiles is new in this revision, and it requires some small knowleage of profile internals. I will post the announcement on related forums in a short. Regards, Martí Maria The little cms project http://www.littlecms.com ma...@li... |
From: <ma...@li...> - 2002-07-04 16:06:08
|
Hi, Ok. I've uploaded the windows package on site, http://www.littlecms.com/ver109.htm This completes all distribution. If all is ok, I will make ver 1.09 publicly available on next week. Regards, Martí Maria The little cms project http://www.littlecms.com ma...@li... |
From: <ma...@li...> - 2002-07-03 08:52:58
|
Hi, Thanks, I will incorporate your changes in the distribution source. > How long do you think it will be before 1.09 is final? I prefer to give the packages first to the mailing list members before made package publicly available. As you can see, people interested, can uncover potential bugs before RPM and other stuff is realeased. This approach seems to work well, indeed. In old releases, I saw ugly things like: liblcms-1.06-37 Latter realeases didn't reach such patch level, ver 1.08 got only liblcms-1.08-3 and I would be happy if this one got same few modifications. But otherwise, this is taking so long because the profiling package, that is huge and a lot more complex that the CMM itself. Anyway, I don't think it would take too much more. lcms.1-09 seems pretty stable right now. Assume a week or so. Just the time to update the site. > PS this doesn't break anything for me but you really shouldn't > do this because the prefix "__" is reserved for compiler symbols: > > #define __cms_H You are right. This is reserved, but otherwise the chance of find a clashing symbol is so small, that... well ;-) Best regards, and thanks again for the carefull review! Martí Maria The little cms project http://www.littlecms.com ma...@li... |
From: James B. <jr...@pi...> - 2002-07-02 23:37:11
|
Sorry this took a while to but after looking at 1.09a I think the only=20 that needs changing is #ifdef __BORLANDC__ # define ASM asm # define RET(v) return(v) #else // VC++ # define ASM __asm # define RET(v) return #endif should become: #ifdef USE_ASSEMBLER #ifdef __BORLANDC__ # define ASM asm # define RET(v) return(v) #else // VC++ # define ASM __asm # define RET(v) return #endif #endif In general the less you can #define the better. How long do you think it=20 will be before 1.09 is final? PS this doesn't break anything for me but you really shouldn't do this=20 because the prefix "__" is reserved for compiler symbols: #define __cms_H Mart=ED Maria wrote: >Hi, > >> I have a number of small patches that allow lcms to be used with >>some other popular libraries, would you interested in incorporating the= m? >> > >Of course! :-) > >Ver 1.09 has some of these fixed, like HANDLE that now is typedef as >LCMSHANDLE. Qt does work with last revision. I hope with your changes >we would solve all remaining clashes. > >Thanks >Marti > > >----- Original Message ----- >From: "James Burgess" <jr...@pi...> >To: "Mart=ED Maria" <ma...@li...> >Cc: <lcm...@li...> >Sent: Monday, June 17, 2002 8:32 PM >Subject: Re: [Lcms-user] Release candidate for ver 1.09 in site > > >Marti, > I have a number of small patches that allow lcms to be used with >some other popular libraries, would you interested in incorporating them= ? > >They boil down to collisions with typedef's and macro's that prevent you >from using lcms with Qt or parts of X11. My solution is to either to >prepend "LCMS_" to the symbol or in some cases be more specific about >#define'ing things. > > > >Mart=ED Maria wrote: > >>Hello, >> >>I've put a release candidate for incoming version 1.09 at: >> >>http://www.littlecms.com/ver109.htm >> >>This time first snapshot is linux one. The windows version is expected >>to be there in a short, as well as the new profilers. Please, don't re= lease any >>RPM or siilar of this, since it could vary in order to solve last time = issues. >> >>Please report any problem to ma...@li..., >> >>Thanks ! >>Mart=ED Maria >>The little cms project >>http://www.littlecms.com >>ma...@li... >> >> >> >> >>_______________________________________________________________ >> >>Don't miss the 2002 Sprint PCS Application Developer's Conference >>August 25-28 in Las Vegas - http://devcon.sprintpcs.com/adp/index.cfm?s= ource=3Dosdntextlink >> >>_______________________________________________ >>Lcms-user mailing list >>Lcm...@li... >>https://lists.sourceforge.net/lists/listinfo/lcms-user >> > >-- > >- james. > > > > >------------------------------------------------------------------------= ---- > Bringing you mounds of caffeinated joy > >>> http://thinkgeek.com/sf <<< > >_______________________________________________ >Lcms-user mailing list >Lcm...@li... >https://lists.sourceforge.net/lists/listinfo/lcms-user > > > > >------------------------------------------------------------------------= ---- > Bringing you mounds of caffeinated joy > >>> http://thinkgeek.com/sf <<< > >_______________________________________________ >Lcms-user mailing list >Lcm...@li... >https://lists.sourceforge.net/lists/listinfo/lcms-user > --=20 - james. |
From: <ma...@li...> - 2002-06-28 10:09:13
|
Hi, I've uploaded precompiled MS Windows binaries of the new profilers. The linux/other package is also updated with a small tutorial. The profilers are now fully functional. This includes scanner profiler, monitor/workspace profiler, profile checker, measurement tool and a ICC to IT8 sampler utility. http://www.littlecms.com/ver109.htm The CMM for windows will be there next week. Regards, Martí Maria The little cms project http://www.littlecms.com ma...@li... |
From: <ma...@li...> - 2002-06-27 13:59:32
|
Hi, > in my example I use lab 85/0/114 85/-85/-120 and lab profile to SRGB > profile. > > the problem may also come an out of gamut color..... It is, indeed. It happens that both these colors are out of sRGB gamut. The monitor is not able to reproduce them, and the CMM does choose some other near colors by its gamut remapping algorithm. So, when you decrease L, the resulting color is also out of gamut, and depending on CMM, you will see it reddish, but this is because the original color, that one of Lab 85, 0, 144 has also this red component. But it is clampled by the monitor to its maximum red primary. If you have photoshop handy, try the colorpicker. The gamut warning pops up on these colors. Regards, Marti. ----- Original Message ----- From: "ADS" <tec...@wa...> To: <lcm...@li...> Sent: Thursday, June 27, 2002 10:26 AM Subject: Re: [Lcms-user] CIELab and lightness > Hola Marti > > > No... L should control the luma, and leave hue alone. Your > > formula seems ok. > > don't think this problem come lcms or profile. > my main problem is that for some light color , darking it of 20% give a > small difference of lightness and other light colors it gives a very darker > color, that's why I wonder if the problem doesn't come from the formula. > > in my example I use lab 85/0/114 85/-85/-120 and lab profile to SRGB > profile. > > the problem may also come an out of gamut color..... > > > > > > ------------------------------------------------------- > Sponsored by: > ThinkGeek at http://www.ThinkGeek.com/ > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > > |
From: ADS <tec...@wa...> - 2002-06-27 13:46:28
|
Hola Marti > No... L should control the luma, and leave hue alone. Your > formula seems ok. don't think this problem come lcms or profile. my main problem is that for some light color , darking it of 20% give a small difference of lightness and other light colors it gives a very darker color, that's why I wonder if the problem doesn't come from the formula. in my example I use lab 85/0/114 85/-85/-120 and lab profile to SRGB profile. the problem may also come an out of gamut color..... |
From: <ma...@li...> - 2002-06-27 13:21:00
|
Hi Armindo, > I would like to lighter or darker a CIELab value. > > for this I only modify the L value, for example to darker it by 20% I do > Lr:= L x 0.8 > to lighter it by 20% I do Lr:= L x 1.20; if L>100 then L:=100; > > but sometimes I give very strange result (darker a yellow came red...) > > Am I wrong in my formula? No... L should control the luma, and leave hue alone. Your formula seems ok. Could you please tell me wich value and profiles does give such values? And... this happens only with lcms or PhotoShop also does it? Regards, Marti. > |
From: ADS <tec...@wa...> - 2002-06-27 12:26:58
|
Hello, I would like to lighter or darker a CIELab value. for this I only modify the L value, for example to darker it by 20% I do Lr:= L x 0.8 to lighter it by 20% I do Lr:= L x 1.20; if L>100 then L:=100; but sometimes I give very strange result (darker a yellow came red...) Am I wrong in my formula? thanks Armindo |
From: <ma...@li...> - 2002-06-21 18:26:41
|
Hi, Humm... sounds weird. The transform seems Ok, indeed. The problem seems to be in the monitor profile. :-| Have you tried TIFFICC utility? just to see if there is something wrong on the code. Here is an updated binary, using last revision http://www.littlecms.com/tifficc.exe If it also fails, you could send me the monitor profile to ma...@li... and I will try to see what is going wrong. Regards, Marti. ----- Original Message ----- From: "Jeffrey Travis" <je...@je...> To: "Martí Maria" <ma...@li...> Sent: Friday, June 21, 2002 2:51 PM Subject: Re: [Lcms-user] Source code for littlecms demo? Hi Marti Thanks for your quick reply! Basically I'm trying to incoporate color management into a utility for TIFF and JPEG images that runs on Windows. This utility is a Mac product that uses Colorsync, so I'm trying to code an equivalent color management functionality into Windows (I don't like ICM). Right now I'm only working on the TIFF part. Here's what happens: 1. I read TIFF with an embedded profile. I can read an embedded ICC profile fine, no problem. I open this profile with cmsOpenProfile and get the handle. 2. I read the monitor RGB profile that is the default for my laptop. 3. I get the error at this point: The_Transform = cmsCreateTransform( gInput_File_Profile_cmsHandle, //embedded profile TYPE_CMYK_8, // is 8-bit CMYK gRGB_Display_Profile_cmsHandle, //monitor profile TYPE_RGB_8, sRenderingIntent, //set by user in the GUI 0); When I call this function, I get "Error #3000, profile is unsuitable for output" Now I have tried this with many different CMYK profiles, from a Generic CMYK to some very large and detailed profiles. But all of them give me the same error. I know there should be some way to transform these because on the MacOS I can use ColorSync to make it work just fine. Any help you could give me is greatly appreciated! Thanks! Jeffrey |
From: <ma...@li...> - 2002-06-21 18:03:10
|
Hi, The source for the old demo (the C one) isn't available. But don't worry for that, since this code was too long to be of any aid. You have the delphi demo source code available, and there is also the TIFFICC sample. Both are relatively small. Anyway, for what you are commenting, seems you are trying to use a scanner profile as output one. If the scanner has not both directions implemented, then it cannot be used as output profile. The demo does hide such profiles. Could explain more about what you are trying to do? Just a couple of lines on how you are creating the transform will be enough. Hopefully the mailing list will be a lot more helpful that looking at about ~10,000 lines of C++ code :-) Regards, Martí Maria The little cms project http://www.littlecms.com ma...@li... ----- Original Message ----- From: "Jeffrey Travis" <je...@je...> To: <lcm...@li...> Sent: Friday, June 21, 2002 2:30 PM Subject: [Lcms-user] Source code for littlecms demo? > Hello > > Is the source code for the Windows lcms demo available? I'm trying to use > lcms but having problems. The demo .exe does what I want to do, so I'm > hoping if I can see it I'll be able to figure out my problem (right now I'm > getting the error, "profile unsuitable for output"). > > Thank you! > > Jeffrey > > > > > ------------------------------------------------------- > Sponsored by: > ThinkGeek at http://www.ThinkGeek.com/ > _______________________________________________ > Lcms-user mailing list > Lcm...@li... > https://lists.sourceforge.net/lists/listinfo/lcms-user > > |