2
* lcmswrapper.cpp - encapsulates typical "user" functions of LittleCMS,
3
* providing a Profile and Transform class
5
* Copyright (c) 2004 by Alastair M. Robinson
6
* Distributed under the terms of the GNU General Public License -
7
* see the file named "COPYING" for more details.
9
* TODO: Report pixel type, support Lab, XYZ, etc.
22
#include "../imagesource/imagesource_types.h"
25
class CMSRGBPrimaries;
32
CMSProfile(const char *filename);
33
CMSProfile(char *buffer,int length);
34
CMSProfile(CMSRGBPrimaries &primaries,CMSRGBGamma &gamma,CMSWhitePoint &whitepoint);
36
enum IS_TYPE GetColourSpace();
37
enum IS_TYPE GetDeviceLinkOutputSpace();
39
const char *GetName();
40
const char *GetManufacturer();
41
const char *GetModel();
42
const char *GetDescription();
43
const char *GetInfo();
44
const char *GetCopyright();
45
const char *GetFilename();
47
bool operator==(const CMSProfile &other);
52
friend class CMSTransform;
59
CMSTransform(CMSProfile *in,CMSProfile *out,int intent=INTENT_PERCEPTUAL);
60
CMSTransform(CMSProfile *devicelink,int intent=INTENT_PERCEPTUAL);
61
CMSTransform(CMSProfile *profiles[],int profilecount,int intent=INTENT_PERCEPTUAL);
63
void Transform(unsigned short *src,unsigned short *dst,int pixels);
64
enum IS_TYPE GetInputColourSpace();
65
enum IS_TYPE GetOutputColourSpace();
67
void MakeTransform(CMSProfile *in,CMSProfile *out,int intent);
68
enum IS_TYPE inputtype;
69
enum IS_TYPE outputtype;
70
cmsHTRANSFORM transform;
77
CMSWhitePoint(int degk)
79
cmsWhitePointFromTemp(degk,&whitepoint);
83
friend class CMSProfile;
89
CMSRGBPrimaries(float rx,float ry,float gx,float gy,float bx,float by)
96
primaries.Green.Y=1.0;
102
cmsCIExyYTRIPLE primaries;
103
friend class CMSProfile;
110
CMSGamma(float gamma)
112
gammatable=cmsBuildGamma(256,gamma);
116
cmsFreeGamma(gammatable);
119
LPGAMMATABLE gammatable;
120
friend class CMSProfile;
121
friend class CMSRGBGamma;
127
CMSRGBGamma(float rgamma,float ggamma,float bgamma)
128
: redgamma(rgamma),greengamma(ggamma),bluegamma(bgamma)
130
gammatables[0]=redgamma.gammatable;
131
gammatables[1]=greengamma.gammatable;
132
gammatables[2]=bluegamma.gammatable;
135
CMSGamma redgamma,greengamma,bluegamma;
136
LPGAMMATABLE gammatables[3];
137
friend class CMSProfile;
140
int CMS_GetIntentCount();
141
const char *CMS_GetIntentName(int intent);
142
const char *CMS_GetIntentDescription(int intent);