PIKApp/libpikacolor/pikacolortypes.h

113 lines
2.7 KiB
C
Raw Normal View History

2023-09-26 00:35:21 +02:00
/* LIBPIKA - The PIKA Library
* Copyright (C) 1995-1997 Peter Mattis and Spencer Kimball
*
* This library is free software: you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 3 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library. If not, see
* <https://www.gnu.org/licenses/>.
*/
#ifndef __PIKA_COLOR_TYPES_H__
#define __PIKA_COLOR_TYPES_H__
#include <libpikabase/pikabasetypes.h>
#include <libpikaconfig/pikaconfigtypes.h>
G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
typedef struct _PikaColorManaged PikaColorManaged; /* dummy typedef */
typedef struct _PikaColorProfile PikaColorProfile;
typedef struct _PikaColorTransform PikaColorTransform;
/* usually we don't keep the structure definitions in the types file
* but PikaRGB appears in too many header files...
*/
typedef struct _PikaRGB PikaRGB;
typedef struct _PikaHSV PikaHSV;
typedef struct _PikaHSL PikaHSL;
typedef struct _PikaCMYK PikaCMYK;
/**
* PikaRGB:
* @r: the red component
* @g: the green component
* @b: the blue component
* @a: the alpha component
*
* Used to keep RGB and RGBA colors. All components are in a range of
* [0.0..1.0].
**/
struct _PikaRGB
{
gdouble r, g, b, a;
};
/**
* PikaHSV:
* @h: the hue component
* @s: the saturation component
* @v: the value component
* @a: the alpha component
*
* Used to keep HSV and HSVA colors. All components are in a range of
* [0.0..1.0].
**/
struct _PikaHSV
{
gdouble h, s, v, a;
};
/**
* PikaHSL:
* @h: the hue component
* @s: the saturation component
* @l: the lightness component
* @a: the alpha component
*
* Used to keep HSL and HSLA colors. All components are in a range of
* [0.0..1.0].
**/
struct _PikaHSL
{
gdouble h, s, l, a;
};
/**
* PikaCMYK:
* @c: the cyan component
* @m: the magenta component
* @y: the yellow component
* @k: the black component
* @a: the alpha component
*
* Used to keep CMYK and CMYKA colors. All components are in a range
* of [0.0..1.0]. An alpha value is somewhat useless in the CMYK
* colorspace, but we keep one around anyway so color conversions
* going to CMYK and back can preserve alpha.
**/
struct _PikaCMYK
{
gdouble c, m, y, k, a;
};
G_END_DECLS
#endif /* __PIKA_COLOR_TYPES_H__ */