aboutsummaryrefslogtreecommitdiffstats
path: root/doc/info/chap/clut-manipulation.texinfo
blob: dd08715f066e64fc8e7cf309391017c06b9f967a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
@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?