>I have version 1.13 which I thought was the latest and it is saying
>cmsSetProfileICCversion is not defined Did I miss something ?
Ops. this one will be introduced in 1.14, sorry, I was staring at my
development sources.
>OK I think I get the Lut stuff. I already have the input / output and CLuts
>created, the sample code looks like it is copying 'pregenerated' input and
>output luts into the profile via cmsAllocLinearTable, which is fine with a
>little reginking of the luts I have.
This function accepts LPGAMMATABLE tables, which are handled
with a separate set of functions. The tutorial explains that.
>The Clut call cmsSample3DGrid looks like it uses a callback with and input
>value and an output value which is returned, is the Cargo just extra things
>the user may whish to pass between the main and callback functions ?
Yes. is a pointer value that you can use for whatever you want. The callback
approach has proven to be very handy. You have to implement a callback
that, for any input, say Lab, rgb or whatever colorspace you profile is in,
computes desired output. In such way, changing the LUT resolution is as
easy as simply give a different number in cmsSample3DGrid. Of course
you can fill the "T" table directly, but as said, is more easy just to provide
a conversion function and forgot all details about quantization and so.
Regards,
Marti.
----- Original Message -----
From: "Mike Wilsher" <[EMAIL PROTECTED]>
To: "Marti Maria" <[EMAIL PROTECTED]>
Cc: "Lcms-User" <[EMAIL PROTECTED]>
Sent: Monday, August 16, 2004 12:33 AM
Subject: Re: Tips on using lcms
Hi
Thanks for the info. I will keep a look out for more V4 options.
I have version 1.13 which I thought was the latest and it is saying
cmsSetProfileICCversion is not defined Did I miss something ?
OK I think I get the Lut stuff. I already have the input / output and CLuts
created, the sample code looks like it is copying 'pregenerated' input and
output luts into the profile via cmsAllocLinearTable, which is fine with a
little reginking of the luts I have.
The Clut call cmsSample3DGrid looks like it uses a callback with and input
value and an output value which is returned, is the Cargo just extra things
the user may whish to pass between the main and callback functions ?
If I already have a Lut made up in the correct format is there a call to
allocate it directly to the _lcms_LUT_struc->T pointer or any other options
of how to fill this Lut out ?
Many Thanks
Mike Wilsher
----- Original Message -----
From: "Marti Maria" <[EMAIL PROTECTED]>
To: "Mike Wilsher" <[EMAIL PROTECTED]>
Cc: "Lcms-User" <[EMAIL PROTECTED]>
Sent: Saturday, August 14, 2004 2:29 PM
Subject: Re: Tips on using lcms
> Hi,
>
> > I am not sure how you ask lcms to create a Version 4 profile as
opposed to a Version 2
>
> Sorry to say, but currently, lcms only supports reading of v4 profiles.
There are, however,
> some reserved entries for v4 tags, since I intend to provide writing
support in next revisions.
> But still, v4 is a moving target and I am waiting the ICC spec to
stabilize enough to figure
> out which tags are worth to implement. Multilocalized unicode is right now
read only,
> as well as parametric curves. The header is same in both versions.
ProfileID is supported
> across cmsTakeProfileID() and cmsSetProfileID() and you can set version
number
> using cmsSetProfileICCversion()
>
> Regarding v2, there are some samples on how to build profiles in the
"samples" directory.
> Take a look on itufax.c, mkgrayer.c, mktiff8.c or mkcmy.c
>
> Basically, your code is correct, except you are putting anything in the
LUT.
>
> The correct sequence would be:
>
> Lut = cmsAllocLUT();
> cmsAlloc3DGrid(Lut, GRID_POINTS, 3, 4);
> cmsAllocLinearTable(... <= This one for setting input/output
tables
> cmsSample3DGrid(... <= This one for filling the grid
>
> See the tutorial, part "13. LUT handling" for more details.
>
> Regards,
> Marti Maria
> The little cms project
> http://www.littlecms.com
> [EMAIL PROTECTED]
>
>
>
> ----- Original Message -----
> From: Mike Wilsher
> To: [EMAIL PROTECTED]
> Sent: Saturday, August 14, 2004 10:38 AM
> Subject: Tips on using lcms
>
>
> Hi
>
> I am looking at using your excellent little cms to create ICC
profiles:
>
> I am not sure how you ask lcms to create a Version 4 profile as
opposed to a Version 2, as the header version, description and
> lut tags are different but I could not spot how you tell little cms how to
write V4. The header looks like it is defaulted to
> version 2 and I can't find V4 format description tag. So does lcms support
writing V4 profiles, if so how do you do this, or is it
> just some support for the lut tags.
>
> I also wondered if you had any skeleton code which listed the sort of
calls you would use to create a basic profile and fill it out.
> I was guessing something like the skeleton listed below, it seems to work
!! I am fairly conversant with the ICC profile format so I
> don't need to know what to put in just a few pointers to a typical way of
doing things.
>
> Lastly I did not spot how you set up the input and output lookup tables in
_lcms_LUT_struc, you can set number of channels and entry
> points unless LPWORD L1[MAXCHANNELS];
> LPWORD L2[MAXCHANNELS];
> are simply pointers to the input and output tables ??
>
> Any pointers would really help
>
> Many Thanks
> Mike Wilsher
>
> #include "lcms.h"
> #include <stdarg.h>
>
> int main(int argc, char *argv[])
> {
> cmsHPROFILE hProfile;
> LPLUT Lut;
> DWORD Flags = 0;
>
> // Create Blank Output Profile
> hProfile = _cmsCreateProfilePlaceholder();
> if (!hProfile) // can't allocate
> return NULL;
>
> cmsSetDeviceClass(hProfile,icSigInputClass);
> cmsSetColorSpace(hProfile, icSigRgbData);
> cmsSetPCS(hProfile, icSigLabData);
> cmsSetRenderingIntent(hProfile, INTENT_PERCEPTUAL);
> cmsSetHeaderFlags(hProfile, Flags);
> cmsAddTag(hProfile, icSigMediaWhitePointTag, cmsD50_XYZ() );
>
> // An empty LUT for test
> Lut = cmsAllocLUT();
> if (Lut == NULL) return NULL;
>
> Lut -> InputChan = 3;
> Lut -> OutputChan = 4;
>
> cmsAddTag(hProfile, icSigAToB0Tag, (LPVOID) Lut);
> cmsFreeLUT(Lut);
>
> cmsAddTag(hProfile, icSigDeviceMfgDescTag, (LPVOID) "lcms internal");
> cmsAddTag(hProfile, icSigDeviceModelDescTag, (LPVOID) "lcms
built-in");
> cmsAddTag(hProfile, icSigProfileDescriptionTag, (LPVOID)
"mjw_Description");
> cmsAddTag(hProfile, icSigCopyrightTag, (LPVOID) "No copyright, use
freely");
>
> // Save resultant profile
> _cmsSaveProfile(hProfile, "test.icm");
>
> // Tidy up
> cmsCloseProfile(hProfile);
>
> return (1);
> }
>
-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
Lcms-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/lcms-user