54 #define ICON_SIZE_FROM_BUTRECT(rect) (0.8f * BLI_rcti_size_y(rect))
136 cp[0] = (int)((1.0f - fac) * cp[0] + fac * cpstate[0]);
137 cp[1] = (int)((1.0f - fac) * cp[1] + fac * cpstate[1]);
138 cp[2] = (int)((1.0f - fac) * cp[2] + fac * cpstate[2]);
148 const int facm = 255 - faci;
150 r_col[0] = (faci * col1[0] + facm * col2[0]) / 256;
151 r_col[1] = (faci * col1[1] + facm * col2[1]) / 256;
152 r_col[2] = (faci * col1[2] + facm * col2[2]) / 256;
153 r_col[3] = (faci * col1[3] + facm * col2[3]) / 256;
158 cp[0] =
clamp_i(cp[0] + tint, 0, 255);
159 cp[1] =
clamp_i(cp[1] + tint, 0, 255);
160 cp[2] =
clamp_i(cp[2] + tint, 0, 255);
168 const int delta = item_value - inner_value;
170 if (contrast > delta) {
175 if (contrast > -delta) {
183 float rgb[3], hsl[3];
227 #define WIDGET_CURVE_RESOLU 9
228 #define WIDGET_SIZE_MAX (WIDGET_CURVE_RESOLU * 4)
297 {0.468813, -0.481430},
298 {-0.155755, -0.352820},
299 {0.219306, -0.238501},
300 {-0.393286, -0.110949},
301 {-0.024699, 0.013908},
302 {0.343805, 0.147431},
303 {-0.272855, 0.269918},
304 {0.095909, 0.388710},
306 #define WIDGET_AA_JITTER UI_PIXEL_AA_JITTER
307 #define jit ui_pixel_jitter
310 {-0.352077, 0.532607},
311 {-0.352077, -0.549313},
312 {0.330000, -0.008353},
319 {0.382684, 0.923879},
320 {0.000001, 1.000000},
321 {-0.382683, 0.923880},
322 {-0.707107, 0.707107},
323 {-0.923879, 0.382684},
324 {-1.000000, 0.000000},
325 {-0.923880, -0.382684},
326 {-0.707107, -0.707107},
327 {-0.382683, -0.923880},
328 {0.000000, -1.000000},
329 {0.382684, -0.923880},
330 {0.707107, -0.707107},
331 {0.923880, -0.382684},
332 {1.000000, -0.000000},
333 {0.923880, 0.382683},
334 {0.707107, 0.707107},
364 {-0.578579, 0.253369},
365 {-0.392773, 0.412794},
366 {-0.004241, -0.328551},
367 {-0.003001, 0.034320},
368 {1.055313, 0.864744},
369 {0.866408, 1.026895},
379 #define OY (-0.2 / 2)
380 #define SC (0.35 * 2)
382 {-0.5 +
SC, 1.0 +
OY},
384 {0.5, 0.0 +
OY +
SC},
441 *
data |= corner_v << 2;
444 *
data |= (inner) ? (1 << 10) : 0;
445 *
data |= (emboss) ? (1 << 11) : 0;
485 for (
int c = 0;
c < 4;
c++) {
498 for (
int c1 = 0, c2 = 3; c1 < 2; c1++, c2--) {
523 float x1,
float y1,
float x2,
float y2,
float x3,
float y3,
const float color[4])
525 const float tri_arr[3][2] = {{x1,
y1}, {
x2, y2}, {x3, y3}};
557 const float f3 = 0.05 *
U.widget_unit;
558 const float f5 = 0.15 *
U.widget_unit;
559 const float f7 = 0.25 *
U.widget_unit;
564 else if (dir ==
't') {
613 float (*vert)[2],
const rcti *rect,
float rad,
int roundboxalign,
float step)
624 const float minx = rect->
xmin - step;
625 const float miny = rect->
ymin - step;
626 const float maxx = rect->
xmax + step;
627 const float maxy = rect->
ymax + step;
638 vert[tot][0] = minx + rad - vec[
a][0];
639 vert[tot][1] = maxy - vec[
a][1];
651 vert[tot][0] = minx + vec[
a][1];
652 vert[tot][1] = miny + rad - vec[
a][0];
664 vert[tot][0] = maxx - rad + vec[
a][0];
665 vert[tot][1] = miny + vec[
a][1];
677 vert[tot][0] = maxx - vec[
a][1];
678 vert[tot][1] = maxy - rad + vec[
a][0];
692 uiWidgetBase *wt,
int roundboxalign,
const rcti *rect,
float rad,
float radi)
695 const float minx = rect->
xmin, miny = rect->
ymin, maxx = rect->
xmax, maxy = rect->
ymax;
696 const float minxi = minx +
U.pixelsize;
697 const float maxxi = maxx -
U.pixelsize;
698 const float minyi = miny +
U.pixelsize;
699 const float maxyi = maxy -
U.pixelsize;
701 const float facxi = (maxxi != minxi) ? 1.0f / (maxxi - minxi) : 0.0f;
702 const float facyi = (maxyi != minyi) ? 1.0f / (maxyi - minyi) : 0.0f;
719 if (2.0f * rad > minsize) {
720 rad = 0.5f * minsize;
723 if (2.0f * (radi + 1.0f) > minsize) {
724 radi = 0.5f * minsize -
U.pixelsize;
749 wt->
inner_v[tot][0] = minxi + veci[
a][1];
750 wt->
inner_v[tot][1] = minyi + radi - veci[
a][0];
752 wt->
outer_v[tot][0] = minx + vec[
a][1];
753 wt->
outer_v[tot][1] = miny + rad - vec[
a][0];
775 wt->
inner_v[tot][0] = maxxi - radi + veci[
a][0];
776 wt->
inner_v[tot][1] = minyi + veci[
a][1];
778 wt->
outer_v[tot][0] = maxx - rad + vec[
a][0];
779 wt->
outer_v[tot][1] = miny + vec[
a][1];
803 wt->
inner_v[tot][0] = maxxi - veci[
a][1];
804 wt->
inner_v[tot][1] = maxyi - radi + veci[
a][0];
806 wt->
outer_v[tot][0] = maxx - vec[
a][1];
807 wt->
outer_v[tot][1] = maxy - rad + vec[
a][0];
829 wt->
inner_v[tot][0] = minxi + radi - veci[
a][0];
830 wt->
inner_v[tot][1] = maxyi - veci[
a][1];
832 wt->
outer_v[tot][0] = minx + rad - vec[
a][0];
833 wt->
outer_v[tot][1] = maxy - vec[
a][1];
874 const float verts[][2],
876 const uint tris[][3],
885 float centx = (
float)rect->
xmin + 0.4f * minsize;
886 float centy = (
float)rect->
ymin + 0.5f * minsize;
887 tria->
size = sizex = sizey = -0.5f * triasize * minsize;
890 centx = (
float)rect->
xmax - 0.4f * minsize;
893 else if (where ==
't') {
894 centx = (
float)rect->
xmin + 0.5f * minsize;
895 centy = (
float)rect->
ymax - 0.5f * minsize;
900 else if (where ==
'b') {
901 centx = (
float)rect->
xmin + 0.5f * minsize;
907 for (
int a = 0;
a < verts_tot;
a++) {
909 tria->
vec[
a][1] = sizey *
verts[
a][i2] + centy;
915 tria->
tot = tris_tot;
980 for (
int i = 0; i < totvert; i++) {
993 float centx, centy,
size;
1007 for (
int a = 0;
a < 6;
a++) {
1018 float centx, centy,
size;
1027 for (
int a = 0;
a < 6;
a++) {
1049 coltop[3] =
color[3];
1054 coldown[3] =
color[3];
1062 for (
a = 0;
a < totvert;
a++) {
1080 const bool alpha_check,
1081 const float discard_factor)
1106 const uchar *outline,
1107 const uchar *emboss,
1109 const bool alpha_check)
1128 #define MAX_WIDGET_BASE_BATCH 6
1129 #define MAX_WIDGET_PARAMETERS 12
1139 const float checker_params[3] = {
1216 const float checker_params[3] = {
1230 bool show_alpha_checkers)
1232 uchar inner_col1[4] = {0};
1233 uchar inner_col2[4] = {0};
1234 uchar emboss_col[4] = {0};
1235 uchar outline_col[4] = {0};
1236 uchar tria_col[4] = {0};
1239 show_alpha_checkers =
false;
1246 inner_col1[0] = inner_col2[0] = wcol->
inner[0];
1247 inner_col1[1] = inner_col2[1] = wcol->
inner[1];
1248 inner_col1[2] = inner_col2[2] = wcol->
inner[2];
1249 inner_col1[3] = inner_col2[3] = wcol->
inner[3];
1258 outline_col[0] = wcol->
outline[0];
1259 outline_col[1] = wcol->
outline[1];
1260 outline_col[2] = wcol->
outline[2];
1261 outline_col[3] = wcol->
outline[3];
1270 tria_col[0] = wcol->
item[0];
1271 tria_col[1] = wcol->
item[1];
1272 tria_col[2] = wcol->
item[2];
1273 tria_col[3] = wcol->
item[3];
1277 if (inner_col1[3] || inner_col2[3] || outline_col[3] || emboss_col[3] || tria_col[3] ||
1278 show_alpha_checkers) {
1280 wtb, inner_col1, inner_col2, outline_col, emboss_col, tria_col, show_alpha_checkers);
1299 #define UI_TEXT_CLIP_MARGIN (0.25f * U.widget_unit / but->block->aspect)
1301 #define PREVIEW_PAD 4
1321 if (icon == ICON_NONE) {
1331 const int y = rect->
ymin + h / 2 -
size / 2;
1359 const float aspect = but->
block->
aspect *
U.inv_dpi_fac;
1376 if (but->
a1 == 1.0f) {
1389 if (icon && icon != ICON_BLANK1) {
1390 const float ofs = 1.0f / aspect;
1396 but->
str && but->
str[0] ==
'\0') {
1397 xs = rect->
xmin + 2.0f * ofs;
1400 xs = rect->
xmin + 2.0f * ofs;
1403 xs = rect->
xmin + 4.0f * ofs;
1412 if (aspect > 0.95f && aspect < 1.05f) {
1418 uchar color[4] = {mono_color[0], mono_color[1], mono_color[2], mono_color[3]};
1448 const float aspect = but->
block->
aspect *
U.inv_dpi_fac;
1451 const int xs = rect->
xmax - tria_width;
1452 const int ys = (rect->
ymin + rect->
ymax - tria_height) / 2.0f;
1459 BLI_rctf_init(&tria_rect, xs, xs + tria_width, ys, ys + tria_height);
1471 const int bytes =
str + but->
ofs - prev_utf8;
1479 const int bytes = next_utf8 - (
str + but->
ofs);
1491 const size_t max_len,
1492 const float okwidth,
1495 const float sep_strwidth,
1496 size_t *r_final_len)
1505 memcpy(
str + l_end, sep, sep_len + 1);
1507 *r_final_len = (size_t)(l_end) + sep_len;
1515 *r_final_len = (size_t)l_end;
1523 const float minwidth,
1524 const size_t max_len,
1525 const char rpart_sep)
1539 if ((okwidth > 0.0f) && (strwidth > okwidth)) {
1541 const char sep[] = {0xe2, 0x80, 0xA6, 0x0};
1542 const int sep_len =
sizeof(sep) - 1;
1546 float rpart_width = 0.0f;
1547 size_t rpart_len = 0;
1548 size_t final_lpart_len;
1551 rpart = strrchr(
str, rpart_sep);
1554 rpart_len = strlen(rpart);
1556 okwidth -= rpart_width;
1557 strwidth -= rpart_width;
1559 if (okwidth < 0.0f) {
1562 memmove(
str, rpart, rpart_len + 1);
1564 okwidth += rpart_width;
1565 strwidth = rpart_width;
1570 const float parts_strwidth = (okwidth - sep_strwidth) / 2.0f;
1573 strcpy(rpart_buf, rpart);
1580 if (l_end < 10 ||
min_ff(parts_strwidth, strwidth - okwidth) < minwidth) {
1585 fstyle,
str, max_len, okwidth, sep, sep_len, sep_strwidth, &final_lpart_len);
1588 size_t r_offset, r_len;
1591 r_len = strlen(
str + r_offset) + 1;
1593 if (l_end + sep_len + r_len + rpart_len > max_len) {
1601 fstyle,
str, max_len, okwidth, sep, sep_len, sep_strwidth, &final_lpart_len);
1604 memmove(
str + l_end + sep_len,
str + r_offset, r_len);
1605 memcpy(
str + l_end, sep, sep_len);
1607 final_lpart_len = (size_t)(l_end + sep_len + r_len - 1);
1615 char *
c =
str + l_end + sep_len;
1616 memmove(
c,
c + 1, r_len);
1623 memcpy(
str + final_lpart_len, rpart, rpart_len + 1);
1624 okwidth += rpart_width;
1645 const size_t max_len =
sizeof(but->
drawstr);
1668 const size_t max_len =
sizeof(but->
drawstr);
1689 if (but->
ofs > but->
pos) {
1700 const int editstr_len = strlen(but->
editstr);
1701 int len = editstr_len;
1710 if (
width > okwidth - 20) {
1716 if (width < 20 && but->ofs > 0) {
1744 int drawstr_len = strlen(but->
drawstr);
1745 const char *cpend = but->
drawstr + drawstr_len;
1760 char *cpoin = strrchr(but->
drawstr,
':');
1762 if (cpoin && (cpoin < cpend - 2)) {
1768 const int bytes = cp2 - prev_utf8;
1772 memmove(cp2 - bytes, cp2, drawstr_len + 1);
1775 drawstr_len -= bytes;
1786 while ((but->
strwidth > okwidth) && (but->
ofs < 2)) {
1802 drawstr_len - but->
ofs,
1807 but->
drawstr[drawstr_len] = 0;
1811 #ifdef WITH_INPUT_IME
1812 static void widget_draw_text_ime_underline(
const uiFontStyle *fstyle,
1816 const wmIMEData *ime_data,
1817 const char *drawstr)
1821 int sel_start = ime_data->sel_start, sel_end = ime_data->sel_end;
1824 if (drawstr[0] != 0) {
1825 if (but->
pos >= but->
ofs) {
1833 fstyle->
uifont_id, drawstr + but->
ofs, ime_data->composite_len + but->
pos - but->
ofs);
1837 rect->
ymin + 6 *
U.pixelsize,
1843 if (sel_start != -1 && sel_end != -1) {
1844 sel_end -= sel_start;
1845 sel_start += but->
pos;
1847 if (sel_start >= but->
ofs) {
1857 rect->
ymin + 6 *
U.pixelsize,
1873 const size_t str_step_ofs,
1874 const rcti *glyph_step_bounds,
1875 const int UNUSED(glyph_advance_x),
1876 const rcti *glyph_bounds,
1877 const int UNUSED(glyph_bearing[2]),
1899 const char *drawstr = but->
drawstr;
1900 const char *drawstr_right =
NULL;
1901 bool use_right_only =
false;
1903 #ifdef WITH_INPUT_IME
1904 const wmIMEData *ime_data;
1933 drawstr_left_len = INT_MAX;
1935 #ifdef WITH_INPUT_IME
1937 ime_data = ui_but_ime_data_get(but);
1939 if (ime_data && ime_data->composite_len) {
1946 ime_data->str_composite,
1961 #ifdef WITH_INPUT_IME
1962 bool ime_reposition_window =
false;
1963 int ime_win_x, ime_win_y;
1968 int selsta_draw, selwidth_draw;
1970 if (drawstr[0] != 0) {
1989 rcti selection_shape;
1990 selection_shape.
xmin = rect->
xmin + selsta_draw;
1992 selection_shape.
ymin = rect->
ymin +
U.pixelsize;
1993 selection_shape.
ymax = rect->
ymax -
U.pixelsize;
1996 selection_shape.
xmin,
1997 selection_shape.
ymin,
1998 selection_shape.
xmax,
1999 selection_shape.
ymax);
2003 #ifdef WITH_INPUT_IME
2005 if (!ime_reposition_window) {
2006 ime_reposition_window =
true;
2007 ime_win_x = selection_shape.
xmin;
2008 ime_win_y = selection_shape.
ymin;
2015 but_pos_ofs = but->
pos;
2017 #ifdef WITH_INPUT_IME
2019 if (ime_data && ime_data->composite_len && ime_data->cursor_pos != -1) {
2020 but_pos_ofs += ime_data->cursor_pos;
2024 if (but->
pos >= but->
ofs) {
2026 if (drawstr[0] != 0) {
2044 rcti but_cursor_shape;
2045 but_cursor_shape.
xmin = (rect->
xmin +
t) -
U.pixelsize;
2046 but_cursor_shape.
ymin = rect->
ymin +
U.pixelsize;
2047 but_cursor_shape.
xmax = (rect->
xmin +
t) +
U.pixelsize;
2048 but_cursor_shape.
ymax = rect->
ymax -
U.pixelsize;
2052 but_cursor_shape.
xmin,
2053 but_cursor_shape.
ymin,
2054 but_cursor_shape.
xmax,
2055 but_cursor_shape.
ymax);
2059 #ifdef WITH_INPUT_IME
2061 if (!ime_reposition_window) {
2062 ime_reposition_window =
true;
2063 ime_win_x = but_cursor_shape.
xmax + 5;
2064 ime_win_y = but_cursor_shape.
ymin + 3;
2069 #ifdef WITH_INPUT_IME
2071 if (ime_reposition_window) {
2072 ui_but_ime_reposition(but, ime_win_x, ime_win_y,
false);
2074 if (ime_data && ime_data->composite_len) {
2076 widget_draw_text_ime_underline(fstyle, wcol, but, rect, ime_data, drawstr);
2082 ui_rasterpos_safe(
x,
y, but->aspect);
2083 transopts = ui_translate_buttons();
2086 bool use_drawstr_right_as_hint =
false;
2091 if (drawstr_right) {
2092 use_drawstr_right_as_hint =
true;
2093 drawstr_left_len = (drawstr_right - drawstr);
2098 #ifdef USE_NUMBUTS_LR_ALIGN
2103 drawstr_right = strrchr(drawstr + but->
ofs,
':');
2104 if (drawstr_right) {
2106 drawstr_left_len = (drawstr_right - drawstr - 1);
2108 while (*drawstr_right ==
' ') {
2114 drawstr_right = drawstr + but->
ofs;
2115 use_right_only =
true;
2120 if (!use_right_only) {
2122 int font_xofs, font_yofs;
2124 int drawlen = (drawstr_left_len == INT_MAX) ? strlen(drawstr + but->
ofs) :
2125 (drawstr_left_len - but->
ofs);
2141 const char *drawstr_ofs = drawstr + but->
ofs;
2146 const char *drawstr_end = drawstr_ofs + drawlen;
2149 const char *drawstr_menu = strchr(drawstr_ofs, keys[i]);
2150 if (drawstr_menu !=
NULL && drawstr_menu < drawstr_end) {
2151 ul_index = (int)(drawstr_menu - drawstr_ofs);
2157 if (ul_index != -1) {
2162 .width_px = ul_width,
2184 if (drawstr_right) {
2187 if (use_drawstr_right_as_hint) {
2214 rect->
xmax -= 0.2 * icon_size;
2220 float alpha_this = alpha;
2224 if (op_icon->disabled) {
2227 else if (!op_icon->highlighted) {
2228 alpha_this *= 0.75f;
2232 const int old_drawflags = but->
drawflag;
2237 rect->
xmax -= icon_size;
2272 const float alpha = (
float)wcol->
text[3] / 255.0f;
2287 no_text_padding =
true;
2310 icon_size -= text_size;
2314 rect->
ymin += text_size;
2320 rect->
ymin -= text_size;
2321 rect->
ymax -= icon_size;
2332 #ifdef USE_UI_TOOLBAR_HACK
2341 const float icon_size = icon_size_init / (but->
block->
aspect *
U.inv_dpi_fac);
2344 #ifdef USE_UI_TOOLBAR_HACK
2359 rect->
xmin += 0.3f *
U.widget_unit;
2364 rect->
xmin += 0.2f *
U.widget_unit;
2370 if (show_menu_icon) {
2375 #ifdef USE_UI_TOOLBAR_HACK
2382 if (!no_text_padding) {
2386 rect->
xmin += text_padding;
2391 rect->
xmin += text_padding;
2395 rect->
xmin += text_padding;
2398 rect->
xmax -= text_padding;
2406 rect->
xmin +=
U.pixelsize;
2409 rect->
xmax -=
U.pixelsize;
2427 else if (but->
drawstr[0] ==
'\0') {
2452 #undef UI_TEXT_CLIP_MARGIN
2471 wcol_theme_s.
outline[3] *= factor;
2472 wcol_theme_s.
inner[3] *= factor;
2474 wcol_theme_s.
item[3] *= factor;
2475 wcol_theme_s.
text[3] *= factor;
2476 wcol_theme_s.
text_sel[3] *= factor;
2537 if (color_blend !=
NULL) {
2552 if (color_blend !=
NULL) {
2601 return wcol->
roundness *
U.widget_unit * zoom;
2626 if (color_blend !=
NULL) {
2756 if (radout == 0.0f) {
2765 rect1.
ymax -= radout;
2784 for (
int step = 1; step <= (int)radout; step++) {
2785 const float expfac =
sqrtf(step / radout);
2800 uiWidgetColors *wcol,
rcti *rect,
const int block_flag,
const int direction,
const float zoom)
2814 rect->
ymin -= 0.1f *
U.widget_unit;
2818 rect->
ymax += 0.1f *
U.widget_unit;
2834 const float radius = zoom * 3.0f *
U.pixelsize;
2854 const rcti *rect,
const float mx,
const float my,
float *r_val_rad,
float *r_val_dist)
2860 const float m_delta[2] = {mx - centx, my - centy};
2863 *r_val_dist = (dist_sq < (radius * radius)) ?
sqrtf(dist_sq) / radius : 1.0f;
2868 const ColorPicker *cpicker,
const rcti *rect,
const float *hsv,
float *r_xpos,
float *r_ypos)
2879 radius_t = (1.0f -
pow3f(1.0f - hsv[1]));
2885 const float rad =
clamp_f(radius_t, 0.0f, 1.0f) * radius;
2886 *r_xpos = centx +
cosf(-ang) * rad;
2887 *r_ypos = centy +
sinf(-ang) * rad;
2895 const float radstep = 2.0f * (
float)
M_PI / (
float)tot;
2901 float rgb[3], hsv[3], rgb_center[3];
2912 CLAMP(hsv[2], 0.0f, 1.0f);
2926 const float hsv_center[3] = {0.0f, 0.0f, hsv[2]};
2930 if (!is_color_gamma) {
2945 for (
int a = 0;
a <= tot;
a++, ang += radstep) {
2946 const float si =
sinf(ang);
2947 const float co =
cosf(ang);
2952 rect, centx + co * radius, centy + si * radius, hsv_ang, hsv_ang + 1);
2953 hsv_ang[2] = hsv[2];
2958 if (!is_color_gamma) {
3009 const int steps = 48;
3012 const float h = hsv[0], s = hsv[1],
v = hsv[2];
3013 float dx, dy, sx1, sx2,
sy;
3021 hsv_to_rgb(h, 0.0, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]);
3022 hsv_to_rgb(h, 0.0, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]);
3023 hsv_to_rgb(h, 0.0, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]);
3024 hsv_to_rgb(h, 0.0, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]);
3027 hsv_to_rgb(0.0, s, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]);
3028 hsv_to_rgb(0.0, s, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]);
3029 hsv_to_rgb(0.0, s, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]);
3030 hsv_to_rgb(0.0, s, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]);
3033 hsv_to_rgb(0.0, 0.0,
v, &col1[0][0], &col1[0][1], &col1[0][2]);
3034 hsv_to_rgb(0.0, 0.333,
v, &col1[1][0], &col1[1][1], &col1[1][2]);
3035 hsv_to_rgb(0.0, 0.666,
v, &col1[2][0], &col1[2][1], &col1[2][2]);
3036 hsv_to_rgb(0.0, 1.0,
v, &col1[3][0], &col1[3][1], &col1[3][2]);
3039 hsv_to_rgb(0.0, 1.0, 1.0, &col1[0][0], &col1[0][1], &col1[0][2]);
3045 hsv_to_rgb(1.0, 0.0, 1.0, &col1[1][0], &col1[1][1], &col1[1][2]);
3051 hsv_to_rgb(1.0, 1.0, 0.0, &col1[2][0], &col1[2][1], &col1[2][2]);
3058 hsv_to_rgb(1.0, 1.0, 1.0, &col1[2][0], &col1[2][1], &col1[2][2]);
3074 for (dx = 0.0f; dx < 0.999f; dx +=
color_step) {
3086 hsv_to_rgb(h, dx, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]);
3087 hsv_to_rgb(h, dx, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]);
3088 hsv_to_rgb(h, dx, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]);
3089 hsv_to_rgb(h, dx, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]);
3092 hsv_to_rgb(dx_next, s, 0.0, &col1[0][0], &col1[0][1], &col1[0][2]);
3093 hsv_to_rgb(dx_next, s, 0.333, &col1[1][0], &col1[1][1], &col1[1][2]);
3094 hsv_to_rgb(dx_next, s, 0.666, &col1[2][0], &col1[2][1], &col1[2][2]);
3095 hsv_to_rgb(dx_next, s, 1.0, &col1[3][0], &col1[3][1], &col1[3][2]);
3098 hsv_to_rgb(dx_next, 0.0,
v, &col1[0][0], &col1[0][1], &col1[0][2]);
3099 hsv_to_rgb(dx_next, 0.333,
v, &col1[1][0], &col1[1][1], &col1[1][2]);
3100 hsv_to_rgb(dx_next, 0.666,
v, &col1[2][0], &col1[2][1], &col1[2][2]);
3101 hsv_to_rgb(dx_next, 1.0,
v, &col1[3][0], &col1[3][1], &col1[3][2]);
3106 hsv_to_rgb(dx_next, 1.0, 1.0, &col1[0][0], &col1[0][1], &col1[0][2]);
3112 hsv_to_rgb(h, dx, 1.0, &col1[1][0], &col1[1][1], &col1[1][2]);
3118 hsv_to_rgb(h, 1.0, dx, &col1[2][0], &col1[2][1], &col1[2][2]);
3133 for (
a = 0;
a < 3;
a++,
sy += dy) {
3140 immAttr4f(
col, col1[
a + 1][0], col1[
a + 1][1], col1[
a + 1][2], alpha);
3146 immAttr4f(
col, col1[
a + 1][0], col1[
a + 1][1], col1[
a + 1][2], alpha);
3149 immAttr4f(
col, col0[
a + 1][0], col0[
a + 1][1], col0[
a + 1][2], alpha);
3159 const uiButHSVCube *hsv_but,
const rcti *rect,
const float *hsv,
float *r_xp,
float *r_yp)
3161 float x = 0.0f,
y = 0.0f;
3209 float x = 0.0f,
y = 0.0f;
3249 float rgb[3], hsv[3],
v;
3276 .outline = {0, 0, 0, 255},
3277 .inner = {128, 128, 128, 255},
3332 #define NUM_BUT_PADDING_FACTOR 0.425f
3364 int roundboxalign_zone;
3378 rect_zone.
xmax = rect->
xmin + handle_width +
U.pixelsize;
3398 rect_zone.
xmin = rect->
xmax - handle_width -
U.pixelsize;
3417 rect_zone.
xmin = rect->
xmin + handle_width -
U.pixelsize;
3418 rect_zone.
xmax = rect->
xmax - handle_width +
U.pixelsize;
3431 if (!
state->is_text_input) {
3434 rect->
xmin += text_padding;
3435 rect->
xmax -= text_padding;
3478 int UNUSED(roundboxalign))
3556 if (wcol->
item[0] > 48) {
3557 wcol->
item[0] -= 48;
3559 if (wcol->
item[1] > 48) {
3560 wcol->
item[1] -= 48;
3562 if (wcol->
item[2] > 48) {
3563 wcol->
item[2] -= 48;
3565 wcol->
item[3] = 255;
3568 rcti slider_inset = *slider;
3569 slider_inset.
xmin += 0.05 *
U.widget_unit;
3570 slider_inset.
xmax -= 0.05 *
U.widget_unit;
3587 int UNUSED(roundboxalign),
3588 const float UNUSED(zoom))
3647 rcti rect_prog = *rect, rect_bar = *rect;
3654 const float value = but_progressbar->
progress;
3661 rect_bar.xmax = rect_bar.xmin +
w;
3677 int UNUSED(roundboxalign),
3697 int UNUSED(roundboxalign),
3698 const float UNUSED(zoom))
3705 uchar old_inner[3], old_outline[3];
3719 rect->
xmin = cent_x - radi;
3720 rect->
xmax = cent_x + radi;
3721 rect->
ymin = cent_y - radi;
3722 rect->
ymax = cent_y + radi;
3751 if (!
state->is_text_input) {
3752 int roundboxalign_slider = roundboxalign;
3764 float factor, factor_ui;
3765 float factor_discard = 1.0f;
3767 const float softmin = but->
softmin;
3768 const float softmax = but->
softmax;
3769 const float softrange = softmax - softmin;
3772 switch (scale_type) {
3775 factor = value / softmax;
3778 factor = (value - softmin) / softrange;
3783 const float logmin =
fmaxf(softmin, 0.5e-8f);
3784 const float base = softmax / logmin;
3785 factor =
logf(value / logmin) /
logf(base);
3789 const float cubicmin =
cube_f(softmin);
3790 const float cubicmax =
cube_f(softmax);
3791 const float cubicrange = cubicmax - cubicmin;
3792 const float f = (value - softmin) * cubicrange / softrange + cubicmin;
3793 factor = (cbrtf(f) - softmin) / softrange;
3799 factor_ui = factor *
width;
3802 const float min_width = 2.0f * rad;
3804 if (factor_ui >
width - rad) {
3806 factor_discard = factor;
3808 else if (factor_ui > min_width) {
3811 rect1.
xmax = rect1.
xmin + factor_ui;
3816 rect1.
xmax = rect1.
xmin + min_width;
3817 factor_discard = factor_ui / min_width;
3839 if (!
state->is_text_input) {
3841 rect->
xmax -= text_padding;
3842 rect->
xmin += text_padding;
3847 #define SWATCH_KEYED_BORDER 3
3898 const bool show_alpha_checkers = (wcol->
inner[3] < 255);
3916 bw += (bw < 0.5f) ? 0.5f : -0.5f;
3942 int UNUSED(roundboxalign),
3956 if (
state->but_flag &
4001 int UNUSED(roundboxalign),
4002 const float UNUSED(zoom))
4044 wcol->
inner[3] *= 1.0f - back[3];
4060 int UNUSED(roundboxalign),
4067 const float padding = zoom * 0.125f *
U.widget_unit;
4084 int UNUSED(roundboxalign),
4106 int UNUSED(roundboxalign),
4119 wcol->
inner[3] *= fac;
4121 wcol->
item[3] *= fac;
4122 wcol->
text[3] *= fac;
4132 int UNUSED(roundboxalign),
4149 int UNUSED(roundboxalign),
4150 const float UNUSED(zoom))
4155 rcti recttemp = *rect;
4161 if (text_before_widget) {
4186 const float offset = delta * 0.9;
4187 if (text_before_widget) {
4253 if (but !=
NULL && but->
col[3]) {
4287 const float rad = wcol->
roundness *
U.widget_unit;
4307 if (
state->has_hold_action) {
4333 uchar theme_col_tab_highlight[3];
4335 #ifdef USE_TAB_SHADED_HIGHLIGHT
4352 #ifdef USE_TAB_SHADED_HIGHLIGHT
4362 #ifdef USE_TAB_SHADED_HIGHLIGHT
4367 #ifndef USE_TAB_SHADED_HIGHLIGHT
4376 const float rad = wcol->
roundness *
U.widget_unit;
4612 rect->
ymax +=
U.pixelsize;
4615 rect->
xmin -=
U.pixelsize;
4685 switch (but->
type) {
4703 switch (but->
type) {
4721 switch (but->
type) {
4745 #ifdef USE_UI_TOOLBAR_HACK
4966 state.is_text_input =
true;
4970 state.has_hold_action =
true;
4973 bool use_alpha_blend =
false;
4976 use_alpha_blend =
true;
4981 #ifdef USE_UI_POPOVER_ONCE
4997 else if (wt->
draw) {
5002 if (use_alpha_blend) {
5006 wt->
text(fstyle, &wt->
wcol, but, rect);
5007 if (use_alpha_blend) {
5016 float draw_color[4];
5022 draw_color[3] = 1.0f;
5041 const float zoom = 1.0f / block->
aspect;
5058 const float unit_size,
5059 const float mval_origin[2])
5062 const float unit_half = unit_size / 2;
5063 const float cent_x = mval_origin ?
CLAMPIS(mval_origin[0],
5064 rect->
xmin + unit_size,
5065 rect->
xmax - unit_size) :
5090 const int sign = is_down ? 1 : -1;
5091 float y = is_down ? rect->
ymax : rect->
ymin;
5101 y =
y -
sign * round(
U.pixelsize * 1.41);
5139 const float zoom = 1.0f / block->
aspect;
5152 const uchar col1[4],
5153 const uchar col2[4],
5156 const float radius_ext_scale = (0.5f / radius_ext);
5171 for (
int i = 0; i < subd; i++) {
5172 const float a = start + ((i) / (
float)(subd - 1)) *
angle;
5173 const float s =
sinf(
a);
5175 const float y1 = s * radius_int;
5176 const float y2 = s * radius_ext;
5180 const float fac = (
y1 + radius_ext) * radius_ext_scale;
5188 const float fac = (y2 + radius_ext) * radius_ext_scale;
5207 const float pie_radius_internal =
U.dpi_fac *
U.pie_menu_threshold;
5208 const float pie_radius_external =
U.dpi_fac * (
U.pie_menu_threshold + 7.0f);
5210 const int subd = 40;
5212 const float angle =
atan2f(pie_dir[1], pie_dir[0]);
5220 uchar col1[4], col2[4];
5227 (
float)(
M_PI * 2.0),
5228 pie_radius_internal,
5229 pie_radius_external,
5237 (
float)(
M_PI * 2.0),
5238 pie_radius_internal,
5239 pie_radius_external,
5248 uchar col1[4], col2[4];
5256 pie_radius_internal,
5257 pie_radius_external,
5266 pie_radius_internal,
5267 pie_radius_external,
5285 if (
U.pie_menu_confirm > 0 &&
5287 const float pie_confirm_radius =
U.dpi_fac * (pie_radius_internal +
U.pie_menu_confirm);
5288 const float pie_confirm_external =
U.dpi_fac *
5289 (pie_radius_internal +
U.pie_menu_confirm + 7.0f);
5295 pie_confirm_external,
5318 const float color[4])
5337 else if (wt->
draw) {
5371 const rcti _rect = *rect;
5373 int max_hint_width = INT_MAX;
5374 int padding = 0.25f * row_height;
5378 state.but_flag = but_flag;
5388 rect->
xmin += row_height;
5412 if ((name_width + hint_width) > available_width) {
5414 max_hint_width = available_width * 0.40f;
5416 rect->
xmax = (hint_width < max_hint_width) ?
5417 (rect->
xmax - hint_width) :
5418 (rect->
xmin + (available_width - max_hint_width));
5430 const size_t max_len =
sizeof(drawstr);
5438 int xofs = 0, yofs = 0;
5446 .align = UI_STYLE_TEXT_LEFT,
5451 if (r_xmax !=
NULL) {
5452 *r_xmax = xofs + info.
width;
5485 const size_t max_len =
sizeof(hint_drawstr);
5488 BLI_strncpy(hint_drawstr, cpoin + 1,
sizeof(hint_drawstr));
5489 if (hint_drawstr[0] && (max_hint_width < INT_MAX)) {
5498 sizeof(hint_drawstr),
5501 .align = UI_STYLE_TEXT_RIGHT,
5512 const uchar text_col[4],
5517 float font_dims[2] = {0.0f, 0.0f};
5518 const bool has_text = name && name[0];
5522 rect->
ymin += text_size;
5536 trect.
ymin +=
U.widget_unit / 2;
5537 trect.
ymax = trect.
ymin + font_dims[1];
5545 const size_t max_len =
sizeof(drawstr);
5557 .align = text_align,
5572 state.but_flag = but_flag;
typedef float(TangentPoint)[2]
void BLF_width_and_height(int fontid, const char *str, size_t str_len, float *r_width, float *r_height) ATTR_NONNULL()
size_t BLF_width_to_strlen(int fontid, const char *str, size_t str_len, float width, float *r_width) ATTR_NONNULL(2)
#define BLF_DRAW_STR_DUMMY_MAX
size_t BLF_width_to_rstrlen(int fontid, const char *str, size_t str_len, float width, float *r_width) ATTR_NONNULL(2)
void BLF_disable(int fontid, int option)
void BLF_boundbox_foreach_glyph(int fontid, const char *str, size_t str_len, BLF_GlyphBoundsFn user_fn, void *user_data) ATTR_NONNULL(2)
float BLF_width(int fontid, const char *str, size_t str_len) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void BLF_draw(int fontid, const char *str, size_t str_len) ATTR_NONNULL(2)
void BLF_color4ubv(int fontid, const unsigned char rgba[4])
void BLF_position(int fontid, float x, float y, float z)
#define BLI_assert_unreachable()
#define BLI_assert_msg(a, msg)
#define ATTR_NONNULL(...)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH_BACKWARD(type, var, list)
MINLINE int round_fl_to_int(float a)
MINLINE float max_ff(float a, float b)
MINLINE int min_ii(int a, int b)
MINLINE float clamp_f(float value, float min, float max)
MINLINE float min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE float cube_f(float a)
MINLINE float pow3f(float x)
MINLINE int clamp_i(int value, int min, int max)
void rgb_to_hsv_v(const float rgb[3], float r_hsv[3])
#define rgba_float_args_set_ch(col, r, g, b, a)
void rgb_to_hsv_compat_v(const float rgb[3], float r_hsv[3])
MINLINE unsigned char rgb_to_grayscale_byte(const unsigned char rgb[3])
MINLINE float rgb_to_grayscale(const float rgb[3])
void hsl_to_rgb_v(const float hsl[3], float r_rgb[3])
void hsv_to_rgb(float h, float s, float v, float *r_r, float *r_g, float *r_b)
void rgba_uchar_to_float(float r_col[4], const unsigned char col_ub[4])
void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
void rgb_to_hsl_v(const float rgb[3], float r_hsl[3])
void rgb_uchar_to_float(float r_col[3], const unsigned char col_ub[3])
void rgb_float_to_uchar(unsigned char r_col[3], const float col_f[3])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
MINLINE void copy_v3_v3_uchar(unsigned char r[3], const unsigned char a[3])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void interp_v3_v3v3_uchar(unsigned char target[3], const unsigned char a[3], const unsigned char b[3], float t)
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE float BLI_rcti_cent_x_fl(const struct rcti *rct)
void BLI_rcti_translate(struct rcti *rect, int x, int y)
void BLI_rctf_scale(rctf *rect, float scale)
void BLI_rcti_resize(struct rcti *rect, int x, int y)
void BLI_rctf_init(struct rctf *rect, float xmin, float xmax, float ymin, float ymax)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
BLI_INLINE float BLI_rcti_cent_y_fl(const struct rcti *rct)
BLI_INLINE int BLI_rcti_cent_y(const struct rcti *rct)
void BLI_rctf_rcti_copy(struct rctf *dst, const struct rcti *src)
BLI_INLINE float BLI_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
BLI_INLINE int BLI_rcti_cent_x(const struct rcti *rct)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
int BLI_str_utf8_size(const char *p) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
const char const char * BLI_str_find_next_char_utf8(const char *p, const char *str_end) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1
const char * BLI_str_find_prev_char_utf8(const char *p, const char *str_start) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(1
void rect_copy(int dst[2][2], int src[2][2])
void ED_node_socket_draw(struct bNodeSocket *sock, const struct rcti *rect, const float color[4], float scale)
void GPU_batch_draw_instanced(GPUBatch *batch, int i_count)
#define GPU_batch_uniform_4fv_array(batch, name, len, val)
void GPU_batch_program_set_builtin(GPUBatch *batch, eGPUBuiltinShader shader_id)
GPUBatch * GPU_batch_create_ex(GPUPrimType prim, GPUVertBuf *vert, GPUIndexBuf *elem, eGPUBatchFlag owns_flag)
void GPU_batch_draw(GPUBatch *batch)
#define GPU_batch_uniform_3fv(batch, name, val)
void gpu_batch_presets_register(struct GPUBatch *preset_batch)
void GPU_indexbuf_init(GPUIndexBufBuilder *, GPUPrimType, uint prim_len, uint vertex_len)
GPUIndexBuf * GPU_indexbuf_build(GPUIndexBufBuilder *)
void GPU_indexbuf_add_tri_verts(GPUIndexBufBuilder *, uint v1, uint v2, uint v3)
_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 height
_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 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 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 i1
_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 width
_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 blue
_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 t
void GPU_matrix_pop(void)
void GPU_matrix_push(void)
void GPU_matrix_translate_2f(float x, float y)
@ GPU_SHADER_2D_SMOOTH_COLOR
@ GPU_SHADER_2D_UNIFORM_COLOR
@ GPU_SHADER_2D_WIDGET_BASE_INST
@ GPU_SHADER_2D_WIDGET_BASE
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
void GPU_line_smooth(bool enable)
#define GPU_vertbuf_create_with_format(format)
struct GPUVertBuf GPUVertBuf
void GPU_vertbuf_data_alloc(GPUVertBuf *, uint v_len)
GPU_INLINE void * GPU_vertbuf_raw_step(GPUVertBufRaw *a)
void GPU_vertbuf_attr_get_raw_data(GPUVertBuf *, uint a_idx, GPUVertBufRaw *access)
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position CLAMP
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a producing a negative Combine Generate a color from its red
Group Output data from inside of a node group A color picker Mix two input colors RGB to Convert a color s luminance to a grayscale value Generate a normal vector and a dot product Bright Control the brightness and contrast of the input color Vector Map an input vectors to used to fine tune the interpolation of the input Camera Retrieve information about the camera and how it relates to the current shading point s position Clamp a value between a minimum and a maximum Vector Perform vector math operation Invert a color
@ UI_BUT_ALIGN_STITCH_TOP
@ UI_BUT_ANIMATED_CHANGED
@ UI_BUT_ALIGN_STITCH_LEFT
#define UI_ALPHA_CHECKER_LIGHT
@ UI_EMBOSS_NONE_OR_STATUS
void UI_fontstyle_set(const struct uiFontStyle *fs)
void UI_fontstyle_draw_ex(const struct uiFontStyle *fs, const struct rcti *rect, const char *str, size_t str_len, const uchar col[4], const struct uiFontStyleDraw_Params *fs_params, int *r_xofs, int *r_yofs, struct ResultBLF *r_info)
void UI_draw_text_underline(int pos_x, int pos_y, int len, int height, const float color[4])
const struct uiStyle * UI_style_get(void)
@ UI_BLOCK_THEME_STYLE_POPUP
#define UI_ALPHA_CHECKER_DARK
void UI_but_drawflag_disable(uiBut *but, int flag)
void UI_fontstyle_draw(const struct uiFontStyle *fs, const struct rcti *rect, const char *str, size_t str_len, const uchar col[4], const struct uiFontStyleDraw_Params *fs_params)
bool UI_but_is_tool(const uiBut *but)
@ UI_BLOCK_NO_DRAW_OVERRIDDEN_STATE
#define ICON_DEFAULT_HEIGHT
#define ICON_DEFAULT_HEIGHT_TOOLBAR
bool UI_icon_get_theme_color(int icon_id, unsigned char color[4])
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], bool mono_border)
void UI_icon_draw_preview(float x, float y, int icon_id, float aspect, float alpha, int size)
#define ICON_DEFAULT_WIDTH
void UI_GetThemeColor3ubv(int colorid, unsigned char col[3])
int UI_ThemeMenuShadowWidth(void)
struct bTheme * UI_GetTheme(void)
void UI_GetThemeColor4fv(int colorid, float col[4])
void UI_GetThemeColor4ubv(int colorid, unsigned char col[4])
ATTR_WARN_UNUSED_RESULT const BMVert * v
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
SyclQueue void void size_t num_bytes void
uiBut * ui_but_drag_multi_edit_get(uiBut *but)
PropertyScaleType ui_but_scale_type(const uiBut *but)
double ui_but_value_get(uiBut *but)
void ui_block_cm_to_display_space_v3(uiBlock *block, float pixel[3])
void ui_window_to_block_fl(const ARegion *region, uiBlock *block, float *r_x, float *r_y)
bool ui_but_menu_draw_as_popover(const uiBut *but)
void ui_but_v3_get(uiBut *but, float vec[3])
bool ui_but_drag_is_draggable(const uiBut *but)
void ui_draw_but_WAVEFORM(ARegion *UNUSED(region), uiBut *but, const uiWidgetColors *UNUSED(wcol), const rcti *recti)
void ui_draw_but_CURVE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect)
void ui_draw_but_IMAGE(ARegion *UNUSED(region), uiBut *but, const uiWidgetColors *UNUSED(wcol), const rcti *rect)
void ui_draw_but_TRACKPREVIEW(ARegion *UNUSED(region), uiBut *but, const uiWidgetColors *UNUSED(wcol), const rcti *recti)
void ui_draw_but_COLORBAND(uiBut *but, const uiWidgetColors *UNUSED(wcol), const rcti *rect)
void ui_draw_but_UNITVEC(uiBut *but, const uiWidgetColors *wcol, const rcti *rect, const float radius)
void ui_draw_but_CURVEPROFILE(ARegion *region, uiBut *but, const uiWidgetColors *wcol, const rcti *rect)
void ui_draw_but_HISTOGRAM(ARegion *UNUSED(region), uiBut *but, const uiWidgetColors *UNUSED(wcol), const rcti *recti)
void ui_draw_but_TAB_outline(const rcti *rect, float rad, uchar highlight[3], uchar highlight_fade[3])
void ui_draw_but_VECTORSCOPE(ARegion *UNUSED(region), uiBut *but, const uiWidgetColors *UNUSED(wcol), const rcti *recti)
int ui_but_menu_direction(uiBut *but)
void ui_but_text_password_hide(char password_str[UI_MAX_PASSWORD_STR], uiBut *but, const bool restore)
IconTextureDrawCall border
void ui_perceptual_to_scene_linear_space(uiBut *but, float rgb[3])
void ui_color_picker_hsv_to_rgb(const float r_cp[3], float rgb[3])
#define UI_MENU_SUBMENU_PADDING
bool ui_block_is_pie_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT
void ui_scene_linear_to_perceptual_space(uiBut *but, float rgb[3])
bool ui_block_is_menu(const uiBlock *block) ATTR_WARN_UNUSED_RESULT
@ UI_PIE_DEGREES_RANGE_LARGE
void ui_color_picker_rgb_to_hsv_compat(const float rgb[3], float r_cp[3])
@ UI_BLOCK_CONTAINS_SUBMENU_BUT
int ui_but_icon(const uiBut *but)
bool ui_but_is_popover_once_compat(const uiBut *but) ATTR_WARN_UNUSED_RESULT
bool ui_but_is_color_gamma(uiBut *but)
@ ROUNDBOX_TRIA_HOLD_ACTION_ARROW
#define UI_PIXEL_AA_JITTER
@ UI_SEARCH_FILTER_NO_MATCH
@ UI_MENU_ITEM_SEPARATOR_NONE
@ UI_MENU_ITEM_SEPARATOR_HINT
@ UI_MENU_ITEM_SEPARATOR_SHORTCUT
ccl_gpu_kernel_postfix ccl_global float int int sy
ccl_gpu_kernel_postfix ccl_global float int int int int float bool int offset
MINLINE unsigned char unit_float_to_uchar_clamp(float val)
ccl_device_inline float2 fabs(const float2 &a)
static const pxr::TfToken rgb("rgb", pxr::TfToken::Immortal)
float RNA_property_float_get_index(PointerRNA *ptr, PropertyRNA *prop, int index)
int RNA_property_array_length(PointerRNA *ptr, PropertyRNA *prop)
PropertySubType RNA_property_subtype(PropertyRNA *prop)
uiWidgetColors wcol_pulldown
uiWidgetColors wcol_numslider
uiWidgetColors wcol_list_item
uiWidgetColors wcol_progress
uiWidgetColors wcol_menu_back
uiWidgetColors wcol_menu_item
uiWidgetColors wcol_toggle
uiWidgetColors wcol_regular
uiWidgetColors wcol_tooltip
uiWidgetColors wcol_option
uiWidgetStateColors wcol_state
uiWidgetColors wcol_radio
uiWidgetColors wcol_scroll
uiWidgetColors wcol_pie_menu
uiWidgetColors wcol_view_item
uiWidgetColors wcol_toolbar_item
struct PieMenuData pie_data
void(* drawextra)(const struct bContext *C, void *idv, void *arg1, void *arg2, rcti *rect)
eButGradientType gradient_type
struct uiHandleButtonData * active
uiButHandleHoldFunc hold_func
char drawstr[UI_MAX_DRAW_STR]
struct PropertyRNA * rnaprop
struct PointerRNA rnapoin