54 CurveMapping *cumap,
int tot,
float minx,
float miny,
float maxx,
float maxy)
57 float clipminx, clipminy, clipmaxx, clipmaxy;
64 clipminx =
min_ff(minx, maxx);
65 clipminy =
min_ff(miny, maxy);
66 clipmaxx =
max_ff(minx, maxx);
67 clipmaxy =
max_ff(miny, maxy);
75 for (
a = 0;
a < tot;
a++) {
157 const float white[3],
162 for (
a = 0;
a < 3;
a++) {
163 const float delta =
max_ff(white[
a] - black[
a], 1e-5f);
164 r_bwmul[
a] = 1.0f / delta;
169 const float black[3],
170 const float white[3])
190 int a, b, removed = 0;
201 if (&cuma->
curve[
a] != point) {
213 return (removed != 0);
220 int a, b, removed = 0;
223 cmp[0] = cuma->
curve[0];
245 bool foundloc =
false;
250 if ((foundloc ==
false) && ((
a + 1 == cuma->
totpoint) || (x < cuma->
curve[
a].x))) {
350 for (
int i = 0; i < cuma->
totpoint; i++) {
378 cuma->
curve[0].
y = 0.025f;
380 cuma->
curve[1].
y = 0.135f;
381 cuma->
curve[2].
x = 0.298f;
390 cuma->
curve[5].
y = 0.135f;
392 cuma->
curve[6].
y = 0.025f;
396 cuma->
curve[0].
y = 0.025f;
402 cuma->
curve[2].
y = 0.025f;
412 for (i = 0; i < cuma->
totpoint; i++) {
413 newpoints[i].
y = cuma->
curve[last - i].
y;
417 cuma->
curve = newpoints;
420 const int num_points = cuma->
totpoint * 2 - 1;
422 "curve symmetric points");
423 for (
int i = 0; i < cuma->
totpoint; i++) {
424 const int src_last_point = cuma->
totpoint - i - 1;
425 const int dst_last_point = num_points - i - 1;
426 new_points[i] = cuma->
curve[src_last_point];
427 new_points[i].
x = (1.0f - cuma->
curve[src_last_point].
x) * 0.5f;
428 new_points[dst_last_point] = new_points[i];
429 new_points[dst_last_point].
x = 0.5f + cuma->
curve[src_last_point].
x * 0.5f;
433 cuma->
curve = new_points;
473 #define p2_h1 ((p2)-3)
474 #define p2_h2 ((p2) + 3)
476 const float *p1, *p3;
479 float len, len_a, len_b;
480 float dvec_a[2], dvec_b[2];
482 if (bezt->
h1 == 0 && bezt->
h2 == 0) {
490 pt[0] = 2.0f * p2[0] - p3[0];
491 pt[1] = 2.0f * p2[1] - p3[1];
500 pt[0] = 2.0f * p2[0] - p1[0];
501 pt[1] = 2.0f * p2[1] - p1[1];
523 tvec[0] = dvec_b[0] / len_b + dvec_a[0] / len_a;
524 tvec[1] = dvec_b[1] / len_b + dvec_a[1] / len_a;
534 const float ydiff1 = prev->
vec[1][1] - bezt->
vec[1][1];
535 const float ydiff2 =
next->vec[1][1] - bezt->
vec[1][1];
536 if ((ydiff1 <= 0.0f && ydiff2 <= 0.0f) || (ydiff1 >= 0.0f && ydiff2 >= 0.0f)) {
537 bezt->
vec[0][1] = bezt->
vec[1][1];
540 if (ydiff1 <= 0.0f) {
541 if (prev->
vec[1][1] > bezt->
vec[0][1]) {
542 bezt->
vec[0][1] = prev->
vec[1][1];
546 if (prev->
vec[1][1] < bezt->
vec[0][1]) {
547 bezt->
vec[0][1] = prev->
vec[1][1];
558 const float ydiff1 = prev->
vec[1][1] - bezt->
vec[1][1];
559 const float ydiff2 =
next->vec[1][1] - bezt->
vec[1][1];
560 if ((ydiff1 <= 0.0f && ydiff2 <= 0.0f) || (ydiff1 >= 0.0f && ydiff2 >= 0.0f)) {
561 bezt->
vec[2][1] = bezt->
vec[1][1];
564 if (ydiff1 <= 0.0f) {
565 if (
next->vec[1][1] < bezt->
vec[2][1]) {
566 bezt->
vec[2][1] =
next->vec[1][1];
570 if (
next->vec[1][1] > bezt->
vec[2][1]) {
571 bezt->
vec[2][1] =
next->vec[1][1];
596 const float first[2],
605 if (cuma->
ext_in[0] == 0.0f) {
606 return first[1] + cuma->
ext_in[1] * 10000.0f;
609 return first[1] + cuma->
ext_in[1] * (
x - first[0]) / cuma->
ext_in[0];
617 if (cuma->
ext_out[0] == 0.0f) {
618 return last[1] - cuma->
ext_out[1] * 10000.0f;
647 bezt[
a].
vec[1][0] = cmp[
a].
x;
648 bezt[
a].
vec[1][1] = cmp[
a].
y;
664 bezt_prev = &bezt[
a];
670 float hlen, nlen, vec[3];
674 hlen =
len_v3v3(bezt[0].vec[1], bezt[0].vec[2]);
677 if (vec[0] < bezt[0].vec[1][0]) {
678 vec[0] = bezt[0].
vec[1][0];
683 if (nlen > FLT_EPSILON) {
692 hlen =
len_v3v3(bezt[
a].vec[1], bezt[
a].vec[0]);
695 if (vec[0] > bezt[
a].vec[1][0]) {
696 vec[0] = bezt[
a].
vec[1][0];
701 if (nlen > FLT_EPSILON) {
714 float *allpoints =
MEM_callocN(totpoint * 2 *
sizeof(
float),
"table");
715 float *point = allpoints;
719 bezt[
a].vec[1], bezt[
a].vec[2], bezt[
a + 1].vec[0], bezt[
a + 1].vec[1]);
722 bezt[
a + 1].vec[0][0],
723 bezt[
a + 1].vec[1][0],
729 bezt[
a + 1].vec[0][1],
730 bezt[
a + 1].vec[1][1],
737 cuma->
ext_in[0] = bezt[0].
vec[0][0] - bezt[0].
vec[1][0];
738 cuma->
ext_in[1] = bezt[0].
vec[0][1] - bezt[0].
vec[1][1];
741 cuma->
ext_in[0] /= ext_in_range;
742 cuma->
ext_in[1] /= ext_in_range;
745 cuma->
ext_out[0] = bezt[out_a].
vec[1][0] - bezt[out_a].
vec[2][0];
746 cuma->
ext_out[1] = bezt[out_a].
vec[1][1] - bezt[out_a].
vec[2][1];
749 cuma->
ext_out[0] /= ext_out_range;
750 cuma->
ext_out[1] /= ext_out_range;
756 cuma->
range = 1.0f / range;
759 float *firstpoint = allpoints;
760 float *lastpoint = allpoints + 2 * (totpoint - 1);
770 while (cur_x >= point[0] && point != lastpoint) {
775 if (point == firstpoint || (point == lastpoint && cur_x >= point[0])) {
787 float fac1 = point[0] - point[-2];
788 float fac2 = point[0] - cur_x;
789 if (fac1 > FLT_EPSILON) {
795 cmp[
a].
y = fac1 * point[-1] + (1.0f - fac1) * point[1];
811 for (
a = 0;
a < 3;
a++) {
828 for (
a = 0;
a < 3;
a++) {
843 for (
a = 0;
a < 3;
a++) {
883 float dx = 0.0f, dy = 0.0f;
892 if (cmp[
a].x < clipr->xmin) {
895 else if (cmp[
a].
x > clipr->
xmax) {
898 if (cmp[
a].y < clipr->ymin) {
901 else if (cmp[
a].
y > clipr->
ymax) {
927 if (rem_doubles && cuma->
totpoint > 2) {
929 dx = cmp[
a].
x - cmp[
a + 1].
x;
930 dy = cmp[
a].
y - cmp[
a + 1].
y;
931 if (
sqrtf(dx * dx + dy * dy) < thresh) {
956 int a, cur = cumap->
cur;
994 return (1.0f - fi) * cuma->
table[i].
y + (fi)*cuma->
table[i + 1].
y;
1005 if (val < cumap->curr.ymin) {
1027 const float vecin[3])
1039 const float vecin[3],
1040 const int channel_offset[3])
1042 const float v0in = vecin[channel_offset[0]];
1043 const float v1in = vecin[channel_offset[1]];
1044 const float v2in = vecin[channel_offset[2]];
1048 const float v1 =
v2 + ((v0 -
v2) * (v1in - v2in) / (v0in - v2in));
1050 vecout[channel_offset[0]] = v0;
1051 vecout[channel_offset[1]] =
v1;
1052 vecout[channel_offset[2]] =
v2;
1067 const float vecin[3],
1068 const float black[3],
1069 const float bwmul[3])
1071 const float r = (vecin[0] - black[0]) * bwmul[0];
1072 const float g = (vecin[1] - black[1]) * bwmul[1];
1073 const float b = (vecin[2] - black[2]) * bwmul[2];
1075 switch (cumap->
tone) {
1087 const int shuffeled_channels[] = {0, 1, 2};
1092 const int shuffeled_channels[] = {2, 0, 1};
1097 const int shuffeled_channels[] = {0, 2, 1};
1105 vecout[2] = vecout[1];
1111 const int shuffeled_channels[] = {1, 0, 2};
1116 const int shuffeled_channels[] = {2, 1, 0};
1121 const int shuffeled_channels[] = {1, 2, 0};
1133 const float vecin[3])
1140 unsigned char vecout_byte[3],
1141 const unsigned char vecin_byte[3])
1143 float vecin[3], vecout[3];
1145 vecin[0] = (
float)vecin_byte[0] / 255.0f;
1146 vecin[1] = (
float)vecin_byte[1] / 255.0f;
1147 vecin[2] = (
float)vecin_byte[2] / 255.0f;
1158 if (cumap->
black[0] != 0.0f) {
1161 if (cumap->
black[1] != 0.0f) {
1164 if (cumap->
black[2] != 0.0f) {
1167 if (cumap->
white[0] != 1.0f) {
1170 if (cumap->
white[1] != 1.0f) {
1173 if (cumap->
white[2] != 1.0f) {
1204 if (cumap ==
NULL) {
1224 (*array)[
a * 4 + 0] = cumap->
cm[0].
table[
a].
y;
1227 (*array)[
a * 4 + 1] = cumap->
cm[1].
table[
a].
y;
1230 (*array)[
a * 4 + 2] = cumap->
cm[2].
table[
a].
y;
1233 (*array)[
a * 4 + 3] = cumap->
cm[3].
table[
a].
y;
1266 #define INV_255 (1.0f / 255.0f)
1270 int bin = (int)((f * 255.0f) + 0.5f);
1279 Scopes *scopes,
const int idx,
const float fx,
const float rgb[3],
const float ycc[3])
1285 scopes->
vecscope[idx + 0] = yuv[1];
1286 scopes->
vecscope[idx + 1] = yuv[2];
1325 int x1 = roundf(hist->
co[0][0] * ibuf->
x);
1326 int x2 = roundf(hist->
co[1][0] * ibuf->
x);
1327 int y1 = roundf(hist->
co[0][1] * ibuf->
y);
1328 int y2 = roundf(hist->
co[1][1] * ibuf->
y);
1345 for (i = 0; i < 256; i++) {
1346 x = (int)(0.5f + x1 + (
float)i * (
x2 - x1) / 255.0f);
1347 y = (int)(0.5f +
y1 + (
float)i * (y2 -
y1) / 255.0f);
1349 if (
x < 0 || y < 0 || x >= ibuf->
x ||
y >= ibuf->
y) {
1381 hist->
data_r[i] = rgba[0];
1382 hist->
data_g[i] = rgba[1];
1383 hist->
data_b[i] = rgba[2];
1384 hist->
data_a[i] = rgba[3];
1386 else if (ibuf->
rect) {
1387 cp = (
unsigned char *)(ibuf->
rect +
y * ibuf->
x +
x);
1429 const unsigned char *display_buffer =
data->display_buffer;
1430 const int ycc_mode =
data->ycc_mode;
1433 unsigned int *bin_lum = data_chunk->
bin_lum;
1434 unsigned int *bin_r = data_chunk->
bin_r;
1435 unsigned int *bin_g = data_chunk->
bin_g;
1436 unsigned int *bin_b = data_chunk->
bin_b;
1437 unsigned int *bin_a = data_chunk->
bin_a;
1438 float *
min = data_chunk->
min;
1439 float *
max = data_chunk->
max;
1441 const float *rf =
NULL;
1442 const unsigned char *rc =
NULL;
1443 const int rows_per_sample_line = ibuf->
y / scopes->
sample_lines;
1444 const int savedlines =
y / rows_per_sample_line;
1445 const bool do_sample_line = (savedlines < scopes->
sample_lines) &&
1446 (
y % rows_per_sample_line) == 0;
1453 rc = display_buffer + ((size_t)
y) * ibuf->
x * ibuf->
channels;
1456 for (
int x = 0;
x < ibuf->
x;
x++) {
1457 float rgba[4], ycc[3], luma;
1483 for (
int c = 4;
c--;) {
1492 if (ycc_mode == -1) {
1496 rgb_to_ycc(rgba[0], rgba[1], rgba[2], &ycc[0], &ycc[1], &ycc[2], ycc_mode);
1508 if (do_sample_line) {
1509 const float fx = (
float)
x / (
float)ibuf->
x;
1510 const int idx = 2 * (ibuf->
x * savedlines +
x);
1520 void *__restrict chunk_join,
1521 void *__restrict chunk)
1526 unsigned int *bin_lum = join_chunk->
bin_lum;
1527 unsigned int *bin_r = join_chunk->
bin_r;
1528 unsigned int *bin_g = join_chunk->
bin_g;
1529 unsigned int *bin_b = join_chunk->
bin_b;
1530 unsigned int *bin_a = join_chunk->
bin_a;
1531 const unsigned int *bin_lum_c = data_chunk->
bin_lum;
1532 const unsigned int *bin_r_c = data_chunk->
bin_r;
1533 const unsigned int *bin_g_c = data_chunk->
bin_g;
1534 const unsigned int *bin_b_c = data_chunk->
bin_b;
1535 const unsigned int *bin_a_c = data_chunk->
bin_a;
1537 const float *
min = data_chunk->
min;
1538 const float *
max = data_chunk->
max;
1540 for (
int b = 256; b--;) {
1541 bin_lum[b] += bin_lum_c[b];
1542 bin_r[b] += bin_r_c[b];
1543 bin_g[b] += bin_g_c[b];
1544 bin_b[b] += bin_b_c[b];
1545 bin_a[b] += bin_a_c[b];
1548 for (
int c = 3;
c--;) {
1564 unsigned int nl, na, nr, ng, nb;
1565 double divl, diva, divr, divg, divb;
1566 const unsigned char *display_buffer =
NULL;
1568 void *cache_handle =
NULL;
1575 if (scopes->
ok == 1) {
1618 for (
a = 0;
a < 3;
a++) {
1619 scopes->
minmax[
a][0] = 25500.0f;
1620 scopes->
minmax[
a][1] = -25500.0f;
1639 "waveform point channel 1");
1641 "waveform point channel 2");
1643 "waveform point channel 3");
1645 "vectorscope point channel");
1652 ibuf, view_settings, display_settings, &cache_handle);
1659 .cm_processor = cm_processor,
1660 .display_buffer = display_buffer,
1661 .ycc_mode = ycc_mode,
1675 nl = na = nr = nb = ng = 0;
1676 for (
a = 0;
a < 256;
a++) {
1680 if (data_chunk.
bin_r[
a] > nr) {
1681 nr = data_chunk.
bin_r[
a];
1683 if (data_chunk.
bin_g[
a] > ng) {
1684 ng = data_chunk.
bin_g[
a];
1686 if (data_chunk.
bin_b[
a] > nb) {
1687 nb = data_chunk.
bin_b[
a];
1689 if (data_chunk.
bin_a[
a] > na) {
1690 na = data_chunk.
bin_a[
a];
1693 divl = nl ? 1.0 / (
double)nl : 1.0;
1694 diva = na ? 1.0 / (
double)na : 1.0;
1695 divr = nr ? 1.0 / (
double)nr : 1.0;
1696 divg = ng ? 1.0 / (
double)ng : 1.0;
1697 divb = nb ? 1.0 / (
double)nb : 1.0;
1699 for (
a = 0;
a < 256;
a++) {
1771 const char *view_transform)
1776 if (!view_transform) {
1785 view_settings->
flag = 0;
1786 view_settings->
gamma = 1.0f;
1808 new_settings->
flag = settings->
flag;
typedef float(TangentPoint)[2]
void BKE_curve_correct_bezpart(const float v1[2], float v2[2], float v3[2], const float v4[2])
void BKE_curve_forward_diff_bezier(float q0, float q1, float q2, float q3, float *p, int it, int stride)
#define BLI_assert_unreachable()
MINLINE float max_ff(float a, float b)
MINLINE int compare_ff(float a, float b, const float max_diff)
MINLINE float min_ff(float a, float b)
#define BLI_YUV_ITU_BT709
#define BLI_YCC_JFIF_0_255
#define BLI_YCC_ITU_BT601
void rgb_to_ycc(float r, float g, float b, float *r_y, float *r_cb, float *r_cr, int colorspace)
void rgb_to_yuv(float r, float g, float b, float *r_y, float *r_u, float *r_v, int colorspace)
#define BLI_YCC_ITU_BT709
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE float len_v3v3(const float a[3], const float b[3]) ATTR_WARN_UNUSED_RESULT
void minmax_v3v3_v3(float min[3], float max[3], const float vec[3])
MINLINE void copy_v2_fl2(float v[2], float x, float y)
MINLINE void madd_v2_v2v2fl(float r[2], const float a[2], const float b[2], float f)
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void mul_v2_v2(float r[2], const float a[2])
MINLINE void sub_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void add_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE void zero_v2(float r[2])
MINLINE void copy_v3_fl(float r[3], float f)
MINLINE float len_v2(const float a[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float len_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
#define STRNCPY(dst, src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
void BLI_task_parallel_range(const int start, const int stop, void *userdata, TaskParallelRangeFunc func, const TaskParallelSettings *settings)
BLI_INLINE void BLI_parallel_range_settings_defaults(TaskParallelSettings *settings)
#define INIT_MINMAX(min, max)
#define BLO_read_data_address(reader, ptr_p)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_write_struct_array(writer, struct_name, array_size, data_ptr)
typedef double(DMatrix)[4][4]
@ CUMA_EXTEND_EXTRAPOLATE
#define SCOPES_WAVEFRM_RGB_PARADE
#define SCOPES_WAVEFRM_YCC_JPEG
#define SCOPES_WAVEFRM_RGB
#define SCOPES_WAVEFRM_YCC_601
#define SCOPES_WAVEFRM_YCC_709
#define SCOPES_WAVEFRM_LUMA
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble y1
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble GLdouble r _GL_VOID_RET _GL_VOID GLfloat GLfloat r _GL_VOID_RET _GL_VOID GLint GLint r _GL_VOID_RET _GL_VOID GLshort GLshort r _GL_VOID_RET _GL_VOID GLdouble GLdouble r
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble x2
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble v1
void IMB_colormanagement_processor_apply_v3(struct ColormanageProcessor *cm_processor, float pixel[3])
BLI_INLINE unsigned char IMB_colormanagement_get_luminance_byte(const unsigned char[3])
void IMB_colormanagement_processor_free(struct ColormanageProcessor *cm_processor)
void IMB_colormanagement_validate_settings(const struct ColorManagedDisplaySettings *display_settings, struct ColorManagedViewSettings *view_settings)
void IMB_colormanagement_processor_apply_v4(struct ColormanageProcessor *cm_processor, float pixel[4])
void IMB_display_buffer_release(void *cache_handle)
struct ColormanageProcessor * IMB_colormanagement_display_processor_new(const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings)
BLI_INLINE float IMB_colormanagement_get_luminance(const float rgb[3])
void IMB_colormanagement_init_default_view_settings(struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings)
unsigned char * IMB_display_buffer_acquire(struct ImBuf *ibuf, const struct ColorManagedViewSettings *view_settings, const struct ColorManagedDisplaySettings *display_settings, void **cache_handle)
const char * IMB_colormanagement_display_get_default_name(void)
struct ColorManagedDisplay * IMB_colormanagement_display_get_named(const char *name)
const char * IMB_colormanagement_display_get_default_view_transform_name(struct ColorManagedDisplay *display)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
Group RGB to Bright Vector Camera CLAMP
ATTR_WARN_UNUSED_RESULT const BMVert * v2
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
MINLINE unsigned char unit_float_to_uchar_clamp(float val)
struct CurveMapping * curve_mapping
CurveMapPoint * premultable
unsigned int bin_lum[256]
struct ColormanageProcessor * cm_processor
const unsigned char * display_buffer
TaskParallelReduceFunc func_reduce
size_t userdata_chunk_size