@node CLUT Manipulation
@chapter CLUT Manipulation
@command{libclut} has a number of function-like macros
for manipulating colour lookup tables. These have
3 common initial parameters, that describe the
colour lookup table that shall be manipulated.
@table @code
@item clut
Pointer to the gamma ramps. This must be a pointer
to an instance of a @code{struct} that must at least
have the array members @code{red}, @code{green}, and
@code{blue}, whose elements shall be of the time
specified by the parameter @code{type}. The struct
must also have the scalar members @code{red_size},
@code{green_size}, and @code{blue_size}, and shall be
of the type @code{size_t}; they shall specify the
number of stops (elements) in the arrays @code{.red},
@code{.green}, and @code{.blue}, respectively, which
shall be the gamma ramp for the ``red'', green, and
blue channels respectively.
@item max
The maximum value on each stop in the ramps.
@item type
The data type used for each stop in the ramps.
@end table
@noindent
Additionally, these macros do not allow that arguments
have side-effects. None, if the macros have a return
value.
@table @code
@item libclut_rgb_contrast(clut, max, type, r, g, b)
Apply contrast correction on the colour curves using sRGB.
In this context, contrast is a measure of difference between
the whitepoint and blackpoint, if the difference is 0 than
they are both grey.
Parameters:
@table @code
@item r
The contrast parameter for the red curve.
@item g
The contrast parameter for the green curve.
@item b
The contrast parameter for the blue curve.
@end table
@item libclut_cie_contrast(clut, max, type, r, g, b)
Apply contrast correction on the colour curves using CIE xyY.
In this context, contrast is a measure of difference between
the whitepoint and blackpoint, if the difference is 0 than
they are both grey.
Parameters:
@table @code
@item r
The contrast parameter for the red curve.
@item g
The contrast parameter for the green curve.
@item b
The contrast parameter for the blue curve.
@end table
@item libclut_rgb_brightness(clut, max, type, r, g, b)
Apply brightness correction on the colour curves using sRGB.
In this context, brightness is a measure of the whiteness
of the whitepoint.
Parameters:
@table @code
@item r
The brightness parameter for the red curve.
@item g
The brightness parameter for the green curve.
@item b
The brightness parameter for the blue curve.
@end table
@item libclut_cie_brightness(clut, max, type, r, g, b)
Apply brightness correction on the colour curves using CIE xyY.
In this context, brightness is a measure of the whiteness
of the whitepoint.
Parameters:
@table @code
@item r
The brightness parameter for the red curve.
@item g
The brightness parameter for the green curve.
@item b
The brightness parameter for the blue curve.
@end table
@item libclut_linearise(clut, max, type, r, g, b)
Convert the curves from formatted in standard RGB to linear RGB.
Parameters:
@table @code
@item r
Whether to convert the red colour curve.
@item g
Whether to convert the green colour curve.
@item b
Whether to convert the blue colour curve.
@end table
@item libclut_standardise(clut, max, type, r, g, b)
Convert the curves from formatted in linear RGB to standard RGB.
Parameters:
@table @code
@item r
Whether to convert the red colour curve.
@item g
Whether to convert the green colour curve.
@item b
Whether to convert the blue colour curve.
@end table
@item libclut_gamma(clut, max, type, r, g, b)
Apply gamma correction on the colour curves.
Parameters:
@table @code
@item r
The gamma parameter for the red curve.
@item g
The gamma parameter for the green curve.
@item b
The gamma parameter for the blue curve.
@end table
@item libclut_negative(clut, max, type, r, g, b)
Reverse the colour curves (negative image with gamma preservation.)
Parameters:
@table @code
@item r
Whether to reverse the red colour curve.
@item g
Whether to reverse the green colour curve.
@item b
Whether to reverse the blue colour curve.
@end table
@item libclut_rgb_invert(clut, max, type, r, g, b)
Invert the colour curves (negative image with gamma
invertion), using sRGB.
Parameters:
@table @code
@item r
Whether to invert the red colour curve.
@item g
Whether to invert the green colour curve.
@item b
Whether to invert the blue colour curve.
@end table
@item libclut_cie_invert(clut, max, type, r, g, b)
Invert the colour curves (negative image with gamma
invertion), using CIE xyY.
Parameters:
@table @code
@item r
Whether to invert the red colour curve.
@item g
Whether to invert the green colour curve.
@item b
Whether to invert the blue colour curve.
@end table
@item libclut_sigmoid(clut, max, type, rp, gp, bp)
Apply S-curve correction on the colour curves.
This is intended for fine tuning LCD monitors,
4.5 is good value start start testing at.
You would probably like to use @code{rgb_limits}
before this to adjust the blackpoint as that is
the only way to adjust the blackpoint on many LCD
monitors.
Parameters:
@table @code
@item rp
Pointer to the sigmoid parameter for the red curve.
@code{NULL} for no adjustment.
@item gp
Pointer to the sigmoid parameter for the green curve.
@code{NULL} for no adjustment.
@item bp
Pointer to the sigmoid parameter for the blue curve.
@code{NULL} for no adjustment.
@end table
@item libclut_rgb_limits(clut, max, type, rmin, rmax, gmin, gmax, bmin, bmax)
Changes the blackpoint and the whitepoint, using sRGB.
Parameters:
@table @code
@item rmin
The red component value of the blackpoint.
That is, the brightness on the red channel.
@item rmax
The red component value of the whitepoint.
That is, the contrast on the red channel.
@item gmin
The green component value of the blackpoint.
That is, the brightness on the green channel.
@item gmax
The green component value of the whitepoint.
That is, the contrast on the green channel.
@item bmin
The blue component value of the blackpoint.
That is, the brightness on the blue channel.
@item bmax
The blue component value of the whitepoint.
That is, the contrast on the blue channel.
@end table
@item libclut_cie_limits(clut, max, type, rmin, rmax, gmin, gmax, bmin, bmax)
Changes the blackpoint and the whitepoint, using CIE xyY.
Parameters:
@table @code
@item rmin
The red component value of the blackpoint.
That is, the brightness on the red channel.
@item rmax
The red component value of the whitepoint.
That is, the contrast on the red channel.
@item gmin
The green component value of the blackpoint.
That is, the brightness on the green channel.
@item gmax
The green component value of the whitepoint.
That is, the contrast on the green channel.
@item bmin
The blue component value of the blackpoint.
That is, the brightness on the blue channel.
@item bmax
The blue component value of the whitepoint.
That is, the contrast on the blue channel.
@end table
@end table
@c TODO Which macros require -lclut?