| Index: third_party/qcms/qcms.h
|
| ===================================================================
|
| --- third_party/qcms/qcms.h (revision 0)
|
| +++ third_party/qcms/qcms.h (revision 0)
|
| @@ -0,0 +1,153 @@
|
| +#ifndef QCMS_H
|
| +#define QCMS_H
|
| +
|
| +#ifdef __cplusplus
|
| +extern "C" {
|
| +#endif
|
| +
|
| +/* if we've already got an ICC_H header we can ignore the following */
|
| +#ifndef ICC_H
|
| +/* icc34 defines */
|
| +
|
| +/*****************************************************************
|
| + Copyright (c) 1994-1996 SunSoft, Inc.
|
| +
|
| + Rights Reserved
|
| +
|
| +Permission is hereby granted, free of charge, to any person
|
| +obtaining a copy of this software and associated documentation
|
| +files (the "Software"), to deal in the Software without restrict-
|
| +ion, including without limitation the rights to use, copy, modify,
|
| +merge, publish distribute, sublicense, and/or sell copies of the
|
| +Software, and to permit persons to whom the Software is furnished
|
| +to do so, subject to the following conditions:
|
| +
|
| +The above copyright notice and this permission notice shall be
|
| +included in all copies or substantial portions of the Software.
|
| +
|
| +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
| +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
| +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-
|
| +INFRINGEMENT. IN NO EVENT SHALL SUNSOFT, INC. OR ITS PARENT
|
| +COMPANY BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
| +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
| +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
| +OTHER DEALINGS IN THE SOFTWARE.
|
| +
|
| +Except as contained in this notice, the name of SunSoft, Inc.
|
| +shall not be used in advertising or otherwise to promote the
|
| +sale, use or other dealings in this Software without written
|
| +authorization from SunSoft Inc.
|
| +******************************************************************/
|
| +
|
| +/*
|
| + * Color Space Signatures
|
| + * Note that only icSigXYZData and icSigLabData are valid
|
| + * Profile Connection Spaces (PCSs)
|
| + */
|
| +typedef enum {
|
| + icSigXYZData = 0x58595A20L, /* 'XYZ ' */
|
| + icSigLabData = 0x4C616220L, /* 'Lab ' */
|
| + icSigLuvData = 0x4C757620L, /* 'Luv ' */
|
| + icSigYCbCrData = 0x59436272L, /* 'YCbr' */
|
| + icSigYxyData = 0x59787920L, /* 'Yxy ' */
|
| + icSigRgbData = 0x52474220L, /* 'RGB ' */
|
| + icSigGrayData = 0x47524159L, /* 'GRAY' */
|
| + icSigHsvData = 0x48535620L, /* 'HSV ' */
|
| + icSigHlsData = 0x484C5320L, /* 'HLS ' */
|
| + icSigCmykData = 0x434D594BL, /* 'CMYK' */
|
| + icSigCmyData = 0x434D5920L, /* 'CMY ' */
|
| + icSig2colorData = 0x32434C52L, /* '2CLR' */
|
| + icSig3colorData = 0x33434C52L, /* '3CLR' */
|
| + icSig4colorData = 0x34434C52L, /* '4CLR' */
|
| + icSig5colorData = 0x35434C52L, /* '5CLR' */
|
| + icSig6colorData = 0x36434C52L, /* '6CLR' */
|
| + icSig7colorData = 0x37434C52L, /* '7CLR' */
|
| + icSig8colorData = 0x38434C52L, /* '8CLR' */
|
| + icSig9colorData = 0x39434C52L, /* '9CLR' */
|
| + icSig10colorData = 0x41434C52L, /* 'ACLR' */
|
| + icSig11colorData = 0x42434C52L, /* 'BCLR' */
|
| + icSig12colorData = 0x43434C52L, /* 'CCLR' */
|
| + icSig13colorData = 0x44434C52L, /* 'DCLR' */
|
| + icSig14colorData = 0x45434C52L, /* 'ECLR' */
|
| + icSig15colorData = 0x46434C52L, /* 'FCLR' */
|
| + icMaxEnumData = 0xFFFFFFFFL
|
| +} icColorSpaceSignature;
|
| +#endif
|
| +
|
| +#include <stdio.h>
|
| +
|
| +typedef int qcms_bool;
|
| +
|
| +struct _qcms_transform;
|
| +typedef struct _qcms_transform qcms_transform;
|
| +
|
| +struct _qcms_profile;
|
| +typedef struct _qcms_profile qcms_profile;
|
| +
|
| +/* these values match the Rendering Intent values from the ICC spec */
|
| +typedef enum {
|
| + QCMS_INTENT_DEFAULT = 0,
|
| + QCMS_INTENT_PERCEPTUAL = 0,
|
| + QCMS_INTENT_RELATIVE_COLORIMETRIC = 1,
|
| + QCMS_INTENT_SATURATION = 2,
|
| + QCMS_INTENT_ABSOLUTE_COLORIMETRIC = 3
|
| +} qcms_intent;
|
| +
|
| +//XXX: I don't really like the _DATA_ prefix
|
| +typedef enum {
|
| + QCMS_DATA_RGB_8,
|
| + QCMS_DATA_RGBA_8,
|
| + QCMS_DATA_GRAY_8,
|
| + QCMS_DATA_GRAYA_8
|
| +} qcms_data_type;
|
| +
|
| +/* the names for the following two types are sort of ugly */
|
| +typedef struct
|
| +{
|
| + double x;
|
| + double y;
|
| + double Y;
|
| +} qcms_CIE_xyY;
|
| +
|
| +typedef struct
|
| +{
|
| + qcms_CIE_xyY red;
|
| + qcms_CIE_xyY green;
|
| + qcms_CIE_xyY blue;
|
| +} qcms_CIE_xyYTRIPLE;
|
| +
|
| +qcms_profile* qcms_profile_create_rgb_with_gamma(
|
| + qcms_CIE_xyY white_point,
|
| + qcms_CIE_xyYTRIPLE primaries,
|
| + float gamma);
|
| +
|
| +qcms_profile* qcms_profile_from_memory(const void *mem, size_t size);
|
| +
|
| +qcms_profile* qcms_profile_from_file(FILE *file);
|
| +qcms_profile* qcms_profile_from_path(const char *path);
|
| +qcms_profile* qcms_profile_sRGB(void);
|
| +void qcms_profile_release(qcms_profile *profile);
|
| +
|
| +qcms_bool qcms_profile_is_bogus(qcms_profile *profile);
|
| +qcms_intent qcms_profile_get_rendering_intent(qcms_profile *profile);
|
| +icColorSpaceSignature qcms_profile_get_color_space(qcms_profile *profile);
|
| +
|
| +void qcms_profile_precache_output_transform(qcms_profile *profile);
|
| +
|
| +qcms_transform* qcms_transform_create(
|
| + qcms_profile *in, qcms_data_type in_type,
|
| + qcms_profile* out, qcms_data_type out_type,
|
| + qcms_intent intent);
|
| +
|
| +void qcms_transform_release(qcms_transform *);
|
| +
|
| +void qcms_transform_data(qcms_transform *transform, void *src, void *dest, size_t length);
|
| +
|
| +
|
| +
|
| +#ifdef __cplusplus
|
| +}
|
| +#endif
|
| +
|
| +#endif
|
|
|