39 #include "RNA_prototypes.h"
68 # define ICON_GRID_COLS 26
69 # define ICON_GRID_ROWS 30
71 # define ICON_MONO_BORDER_OUTSET 2
72 # define ICON_GRID_MARGIN 10
73 # define ICON_GRID_W 32
74 # define ICON_GRID_H 32
87 #define ICON_TYPE_PREVIEW 0
88 #define ICON_TYPE_COLOR_TEXTURE 1
89 #define ICON_TYPE_MONO_TEXTURE 2
90 #define ICON_TYPE_BUFFER 3
91 #define ICON_TYPE_IMBUF 4
92 #define ICON_TYPE_VECTOR 5
93 #define ICON_TYPE_GEOM 6
94 #define ICON_TYPE_EVENT 7
95 #define ICON_TYPE_GPLAYER 8
96 #define ICON_TYPE_BLANK 9
148 #ifndef WITH_HEADLESS
151 # define DEF_ICON(name) {ICON_TYPE_MONO_TEXTURE, 0},
152 # define DEF_ICON_SCENE(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_SCENE},
153 # define DEF_ICON_COLLECTION(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_COLLECTION},
154 # define DEF_ICON_OBJECT(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_OBJECT},
155 # define DEF_ICON_OBJECT_DATA(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_OBJECT_DATA},
156 # define DEF_ICON_MODIFIER(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_MODIFIER},
157 # define DEF_ICON_SHADING(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_SHADING},
158 # define DEF_ICON_FOLDER(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_FOLDER},
159 # define DEF_ICON_FUND(name) {ICON_TYPE_MONO_TEXTURE, TH_ICON_FUND},
160 # define DEF_ICON_VECTOR(name) {ICON_TYPE_VECTOR, 0},
161 # define DEF_ICON_COLOR(name) {ICON_TYPE_COLOR_TEXTURE, 0},
162 # define DEF_ICON_BLANK(name) {ICON_TYPE_BLANK, 0},
169 ImBuf *bbuf,
int icon_id,
int xofs,
int yofs,
int size,
int type,
int theme_color)
198 if (
size == bbuf->
x &&
size == bbuf->
y && xofs == 0 && yofs == 0) {
243 int x,
int y,
int w,
int h,
float alpha,
short key_type,
short handle_type)
254 const float xco =
x +
w / 2 + 0.5f;
255 const float yco =
y + h / 2 + 0.5f;
357 const int a =
x +
w / 3;
358 const int b =
x +
w / 3 * 2;
381 # define DEF_ICON_VECTOR_COLORSET_DRAW_NTH(prefix, index) \
382 static void vicon_colorset_draw_##prefix(int x, int y, int w, int h, float alpha) \
384 vicon_colorset_draw(index, x, y, w, h, alpha); \
408 # undef DEF_ICON_VECTOR_COLORSET_DRAW_NTH
411 short color_tag,
int x,
int y,
int w,
int UNUSED(h),
float UNUSED(alpha))
419 x,
y, ICON_OUTLINER_COLLECTION, aspect, 1.0f, 0.0f, collection_color->
color,
true);
422 # define DEF_ICON_COLLECTION_COLOR_DRAW(index, color) \
423 static void vicon_collection_color_draw_##index(int x, int y, int w, int h, float alpha) \
425 vicon_collection_color_draw(color, x, y, w, h, alpha); \
437 # undef DEF_ICON_COLLECTION_COLOR_DRAW
440 short color_tag,
int x,
int y,
int w,
int UNUSED(h),
float UNUSED(alpha))
450 # define DEF_ICON_STRIP_COLOR_DRAW(index, color) \
451 static void vicon_strip_color_draw_##index(int x, int y, int w, int h, float alpha) \
453 vicon_strip_color_draw(color, x, y, w, h, alpha); \
466 # undef DEF_ICON_STRIP_COLOR_DRAW
468 # define ICON_INDIRECT_DATA_ALPHA 0.6f
471 int x,
int y,
int w,
int UNUSED(h),
float alpha)
480 int x,
int y,
int w,
int UNUSED(h),
float alpha)
486 ICON_LIBRARY_DATA_OVERRIDE,
519 # define INIT_BRUSH_ICON(icon_id, name) \
521 uchar *rect = (uchar *)datatoc_##name##_png; \
522 const int size = datatoc_##name##_png_size; \
525 di = def_internal_icon(NULL, icon_id, 0, 0, w, ICON_TYPE_BUFFER, 0); \
526 di->data.buffer.image->datatoc_rect = rect; \
527 di->data.buffer.image->datatoc_size = size; \
594 INIT_BRUSH_ICON(ICON_BRUSH_CURVES_GROW_SHRINK, curves_sculpt_grow_shrink);
599 INIT_BRUSH_ICON(ICON_BRUSH_CURVES_SNAKE_HOOK, curves_sculpt_snake_hook);
601 # undef INIT_BRUSH_ICON
620 if (di->
data.
input.event_type == event_type) {
641 memset(r_icon_mod, 0x0,
sizeof(
int[4]));
644 r_icon_mod[i++] = ICON_EVENT_CTRL;
647 r_icon_mod[i++] = ICON_EVENT_ALT;
650 r_icon_mod[i++] = ICON_EVENT_SHIFT;
653 r_icon_mod[i++] = ICON_EVENT_OS;
663 # define INIT_EVENT_ICON(icon_id, type, value) \
665 DrawInfo *di = def_internal_icon(NULL, icon_id, 0, 0, w, ICON_TYPE_EVENT, 0); \
666 di->data.input.event_type = type; \
667 di->data.input.event_value = value; \
668 di->data.input.icon = icon_id; \
669 di->data.input.next = di_next; \
728 # undef INIT_EVENT_ICON
742 if (bbuf->
x != iimg->
h && bbuf->
y != iimg->
w) {
753 int resolution_divider,
754 float border_intensity)
757 const float border_sharpness = 16.0 / (resolution_divider * resolution_divider);
773 sx =
sx / resolution_divider;
774 sy =
sy / resolution_divider;
777 const int blur_size = 2 / resolution_divider;
778 for (
int bx = 0; bx < icon_width; bx++) {
779 const int asx =
MAX2(bx - blur_size, 0);
780 const int aex =
MIN2(bx + blur_size + 1, icon_width);
781 for (
int by = 0; by < icon_height; by++) {
782 const int asy =
MAX2(by - blur_size, 0);
783 const int aey =
MIN2(by + blur_size + 1, icon_height);
787 float alpha_accum = 0.0;
788 uint alpha_samples = 0;
789 for (
int ax = asx; ax < aex; ax++) {
790 for (
int ay = asy; ay < aey; ay++) {
791 const int offset_read = (
sy + ay) * buf->
x + (
sx + ax);
792 const uint color_read = buf->
rect[offset_read];
793 const float alpha_read = ((color_read & 0xff000000) >> 24) / 255.0;
794 alpha_accum += alpha_read;
798 blurred_alpha_buffer[write_offset] = alpha_accum / alpha_samples;
803 for (
int bx = 0; bx < icon_width; bx++) {
804 for (
int by = 0; by < icon_height; by++) {
806 const int offset_write = (
sy + by) * buf->
x + (
sx + bx);
807 const float blurred_alpha = blurred_alpha_buffer[blurred_alpha_offset];
808 const float border_srgb[4] = {
809 0, 0, 0,
MIN2(1.0, blurred_alpha * border_sharpness) * border_intensity};
811 const uint color_read = buf->
rect[offset_write];
812 const uchar *orig_color = (
uchar *)&color_read;
814 float border_rgba[4];
824 const uint alpha_mask = ((
uint)(dest_srgb[3] * 255)) << 24;
825 const uint cpack =
rgb_to_cpack(dest_srgb[0], dest_srgb[1], dest_srgb[2]) | alpha_mask;
826 result->rect[offset_write] = cpack;
837 for (
int i = 0; i < 2; i++) {
852 const bool need_icons_with_border = icon_border_intensity > 0.0f;
854 if (b16buf ==
NULL) {
862 if (need_icons_with_border) {
869 if (b32buf ==
NULL) {
877 if (need_icons_with_border) {
884 if (b16buf && b32buf) {
906 "icons_border", b32buf_border->x, b32buf_border->y, 2,
GPU_RGBA8,
NULL);
921 if ((btheme !=
NULL) && btheme->tui.iconfile[0]) {
926 BLI_join_dirfile(iconfilestr,
sizeof(iconfilestr), icondir, btheme->tui.iconfile);
931 if (bbuf && (bbuf->x < ICON_IMAGE_W || bbuf->y < ICON_IMAGE_H)) {
934 "Icons file '%s' too small.\n"
935 "Using built-in Icons instead\n",
942 printf(
"%s: 'icons' data path not found, continuing\n", __func__);
1028 if (icondir ==
NULL) {
1036 for (
int i = 0; i < totfile; i++) {
1037 if (dir[i].
type & S_IFREG) {
1038 const char *filename = dir[i].
relname;
1059 ifilex = ifiley = 0;
1063 if ((ifilex != ICON_IMAGE_W) || (ifiley != ICON_IMAGE_H)) {
1064 printf(
"icon '%s' is wrong size %dx%d\n", iconfilestr, ifilex, ifiley);
1073 ifile->
index = index;
1090 for (ifile = list->
first; ifile; ifile = next_ifile) {
1091 next_ifile = ifile->
next;
1109 for (ifile = list->
first; ifile; ifile = ifile->
next) {
1111 return ifile->
index;
1127 #ifndef WITH_HEADLESS
1164 const int icon_data_type = icon->
obj_type;
1207 printf(
"%s: Internal error, no icon for icon ID: %d\n", __func__, icon_id);
1225 printf(
"%s: Internal error, no icon for icon ID: %d\n", __func__, icon_id);
1251 #ifndef WITH_HEADLESS
1280 printf(
"%s, error: requested preview image does not exist", __func__);
1284 prv_img->
w[
size] = render_size;
1285 prv_img->
h[
size] = render_size;
1297 short *
UNUSED(do_update),
1423 printf(
"%s: no preview image for this ID: %s\n", __func__,
id->
name);
1484 prv->
w[0] = bbuf->
x;
1485 prv->
h[0] = bbuf->
y;
1506 const float desaturate)
1515 if (
w <= 0 || h <= 0 || w > 2000 || h > 2000) {
1516 printf(
"%s: icons are %i x %i pixels?\n", __func__,
w, h);
1521 const float col[4] = {alpha, alpha, alpha, alpha};
1523 float scale_x = 1.0f;
1524 float scale_y = 1.0f;
1526 if (rw !=
w || rh != h) {
1530 draw_h = (int)(((
float)rh / (
float)rw) * (
float)
w);
1531 draw_y += (h - draw_h) / 2;
1534 draw_w = (int)(((
float)rw / (
float)rh) * (
float)h);
1536 draw_x += (
w - draw_w) / 2;
1538 scale_x = draw_w / (
float)rw;
1539 scale_y = draw_h / (
float)rh;
1545 if (desaturate != 0.0f) {
1558 &
state, draw_x, draw_y, rw, rh,
GPU_RGBA8,
true, rect, scale_x, scale_y, 1.0f, 1.0f,
col);
1566 #define ICON_DRAW_CACHE_SIZE 16
1594 if (texture_draw_calls->
calls == 0) {
1617 texture_draw_calls->
calls = 0;
1622 bool should_draw =
false;
1623 if (only_full_caches) {
1684 texture_call->
calls++;
1687 call->
pos.
xmin =
x * mvp[0][0] +
y * mvp[1][0] + mvp[3][0];
1688 call->
pos.
ymin =
x * mvp[0][1] +
y * mvp[1][1] + mvp[3][1];
1722 icon_draw_texture_cached(
x,
y,
w, h, ix, iy, iw, ih, alpha,
rgb, with_border);
1787 const float desaturate,
1788 const uchar mono_rgba[4],
1789 const bool mono_border)
1792 const float fdraw_size = (
float)draw_size;
1799 printf(
"%s: Internal error, no icon for icon ID: %d\n", __func__, icon_id);
1805 int w = (int)(fdraw_size / aspect + 0.5f);
1806 int h = (int)(fdraw_size / aspect + 0.5f);
1826 #ifdef USE_UI_TOOLBAR_HACK
1831 y = (
y + (h / 2)) - ((h * scale) / 2);
1839 const bool geom_inverted = di->
data.
geom.inverted;
1844 if ((ibuf ==
NULL) || (ibuf->
x !=
w) || (ibuf->
y != h) || (
invert != geom_inverted)) {
1848 if (
invert != geom_inverted) {
1861 const short event_type = di->
data.
input.event_type;
1862 const short event_value = di->
data.
input.event_value;
1892 float border_outset = 0.0;
1893 uint border_texel = 0;
1894 #ifndef WITH_HEADLESS
1903 (
float)
w + 2 * border_outset,
1904 (
float)h + 2 * border_outset,
1917 #ifndef WITH_HEADLESS
1949 #ifndef WITH_HEADLESS
1985 ID *id_to_render =
id;
1991 id_to_render = ob->
data;
2028 char space_type =
area->spacetype;
2056 if (
area->spacetype == space_type) {
2098 br->
id.
icon_id = ICON_GPBRUSH_ERASE_SOFT;
2101 br->
id.
icon_id = ICON_GPBRUSH_ERASE_HARD;
2104 br->
id.
icon_id = ICON_GPBRUSH_ERASE_STROKE;
2128 br->
id.
icon_id = ICON_GPBRUSH_THICKNESS;
2134 br->
id.
icon_id = ICON_GPBRUSH_RANDOMIZE;
2221 return ICON_LIBRARY_DATA_BROKEN;
2224 return ICON_LIBRARY_DATA_INDIRECT;
2226 return ICON_LIBRARY_DATA_DIRECT;
2231 return ICON_LIBRARY_DATA_OVERRIDE_NONEDITABLE;
2233 return ICON_LIBRARY_DATA_OVERRIDE;
2236 return ICON_ASSET_MANAGER;
2267 return ICON_SHADING_TEXTURE;
2270 return ICON_OUTLINER_DATA_MESH;
2273 return ICON_FILE_IMAGE;
2293 return icon ? icon : rnaicon;
2305 return ICON_ARMATURE_DATA;
2307 return ICON_BRUSH_DATA;
2309 return ICON_CAMERA_DATA;
2313 return ICON_CURVE_DATA;
2315 return ICON_OUTLINER_DATA_GREASEPENCIL;
2317 return ICON_OUTLINER_COLLECTION;
2319 return ICON_IMAGE_DATA;
2321 return ICON_LIGHT_DATA;
2323 return ICON_LINE_DATA;
2325 return ICON_LATTICE_DATA;
2327 return ICON_MATERIAL_DATA;
2329 return ICON_META_DATA;
2331 return ICON_TRACKER;
2333 return ICON_MESH_DATA;
2335 return ICON_MOD_MASK;
2337 return ICON_NODETREE;
2339 return ICON_OBJECT_DATA;
2341 return ICON_PARTICLE_DATA;
2345 return ICON_CURVE_BEZCURVE;
2347 return ICON_OUTLINER_DATA_LIGHTPROBE;
2349 return ICON_SCENE_DATA;
2351 return ICON_SPEAKER;
2355 return ICON_TEXTURE_DATA;
2359 return ICON_FONT_DATA;
2361 return ICON_CURVES_DATA;
2363 return ICON_POINTCLOUD_DATA;
2365 return ICON_VOLUME_DATA;
2367 return ICON_WORLD_DATA;
2369 return ICON_WORKSPACE;
2372 return ICON_PHYSICS;
2389 return ICON_OBJECT_DATAMODE;
2392 return ICON_EDITMODE_HLT;
2396 return ICON_SCULPTMODE_HLT;
2399 return ICON_VPAINT_HLT;
2402 return ICON_WPAINT_HLT;
2404 return ICON_TPAINT_HLT;
2406 return ICON_PARTICLEMODE;
2408 return ICON_POSE_HLT;
2410 return ICON_GREASEPENCIL;
2417 int icon = ICON_OUTLINER_COLLECTION;
2420 icon = ICON_COLLECTION_COLOR_01 + collection->
color_tag;
2447 const uchar mono_color[4],
2448 const bool mono_border)
2467 #ifdef WITH_HEADLESS
2471 const int ALERT_IMG_SIZE = 256;
2473 const int left = icon * ALERT_IMG_SIZE;
2474 const rcti crop = {
left,
left + ALERT_IMG_SIZE - 1, 0, ALERT_IMG_SIZE - 1};
typedef float(TangentPoint)[2]
void immDrawPixelsTexScaledFullSize(const IMMDrawPixelsTexState *state, float x, float y, int img_w, int img_h, eGPUTextureFormat gpu_format, bool use_filter, const void *rect, float scaleX, float scaleY, float xzoom, float yzoom, const float color[4])
IMMDrawPixelsTexState immDrawPixelsTexSetup(int builtin)
const char * BKE_appdir_folder_id(int folder_id, const char *subfolder)
struct ScrArea * CTX_wm_area(const bContext *C)
struct Scene * CTX_data_scene(const bContext *C)
struct wmWindowManager * CTX_wm_manager(const bContext *C)
struct Object * CTX_data_active_object(const bContext *C)
struct wmWindow * CTX_wm_window(const bContext *C)
struct PreviewImage * BKE_previewimg_id_ensure(struct ID *id)
bool BKE_previewimg_id_supports_jobs(const struct ID *id)
struct PreviewImage * BKE_previewimg_create(void)
struct ImBuf * BKE_icon_geom_rasterize(const struct Icon_Geom *geom, unsigned int size_x, unsigned int size_y)
#define ICON_RENDER_DEFAULT_HEIGHT
void BKE_icon_set(int icon_id, struct Icon *icon)
struct PreviewImage * BKE_previewimg_copy(const struct PreviewImage *prv)
struct Icon * BKE_icon_get(int icon_id)
void BKE_icons_free(void)
void BKE_icon_geom_invert_lightness(struct Icon_Geom *geom)
int BKE_icon_id_ensure(struct ID *id)
uint BKE_paint_get_brush_tool_offset_from_paintmode(ePaintMode mode)
const struct EnumPropertyItem * BKE_paint_get_tool_enum_from_paintmode(ePaintMode mode)
@ PAINT_MODE_SCULPT_CURVES
@ STUDIOLIGHT_TYPE_MATCAP
@ STUDIOLIGHT_TYPE_STUDIO
#define STUDIOLIGHT_ICON_SIZE
void BKE_studiolight_set_free_function(StudioLight *sl, StudioLightFreeFunction *free_function, void *data)
#define STUDIOLIGHT_FLAG_ORIENTATIONS
void BKE_studiolight_preview(uint *icon_buffer, StudioLight *sl, int icon_id_type)
#define BLI_assert_msg(a, msg)
unsigned int BLI_filelist_dir_contents(const char *dir, struct direntry **r_filelist)
void BLI_filelist_free(struct direntry *filelist, unsigned int nrentries)
Some types for dealing with directories.
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE int round_fl_to_int(float a)
MINLINE unsigned char rgb_to_grayscale_byte(const unsigned char rgb[3])
unsigned int rgb_to_cpack(float r, float g, float b)
MINLINE void srgb_to_linearrgb_uchar4(float linear[4], const unsigned char srgb[4])
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
void rgba_uchar_to_float(float r_col[4], const unsigned char col_ub[4])
MINLINE void linearrgb_to_srgb_v4(float srgb[4], const float linear[4])
MINLINE void blend_color_interpolate_float(float dst[4], const float src1[4], const float src2[4], float t)
MINLINE void mul_v4_fl(float r[4], float f)
MINLINE void copy_v4_fl4(float v[4], float x, float y, float z, float w)
MINLINE void copy_v4_fl(float r[4], float f)
bool BLI_path_extension_check(const char *str, const char *ext) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
void BLI_join_dirfile(char *__restrict dst, size_t maxlen, const char *__restrict dir, const char *__restrict file) ATTR_NONNULL()
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t maxncpy) ATTR_NONNULL()
#define POINTER_OFFSET(v, ofs)
#define ID_IS_OVERRIDE_LIBRARY_REAL(_id)
#define ID_IS_LINKED(_id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
@ IDOVERRIDE_LIBRARY_FLAG_SYSTEM_DEFINED
@ GP_BRUSH_ICON_ERASE_SOFT
@ GP_BRUSH_ICON_GPBRUSH_RANDOMIZE
@ GP_BRUSH_ICON_VERTEX_BLUR
@ GP_BRUSH_ICON_GPBRUSH_GRAB
@ GP_BRUSH_ICON_GPBRUSH_STRENGTH
@ GP_BRUSH_ICON_GPBRUSH_TWIST
@ GP_BRUSH_ICON_VERTEX_REPLACE
@ GP_BRUSH_ICON_VERTEX_DRAW
@ GP_BRUSH_ICON_GPBRUSH_WEIGHT
@ GP_BRUSH_ICON_GPBRUSH_PINCH
@ GP_BRUSH_ICON_VERTEX_SMEAR
@ GP_BRUSH_ICON_GPBRUSH_THICKNESS
@ GP_BRUSH_ICON_GPBRUSH_CLONE
@ GP_BRUSH_ICON_ERASE_STROKE
@ GP_BRUSH_ICON_ERASE_HARD
@ GP_BRUSH_ICON_GPBRUSH_SMOOTH
@ GP_BRUSH_ICON_GPBRUSH_PUSH
@ GP_BRUSH_ICON_VERTEX_AVERAGE
Object groups, one object can be in many groups at once.
@ MOD_DPAINT_SURFACE_F_PTEX
@ MOD_DPAINT_SURFACE_F_VERTEX
@ MOD_DPAINT_SURFACE_F_IMAGESEQ
Object is a sort of wrapper for general info.
const char datatoc_blender_icons32_png[]
int datatoc_blender_icons32_png_size
int datatoc_blender_icons16_png_size
int datatoc_alert_icons_png_size
const char datatoc_alert_icons_png[]
const char datatoc_blender_icons16_png[]
@ KEYFRAME_HANDLE_AUTO_CLAMP
@ KEYFRAME_HANDLE_ALIGNED
bool ED_preview_id_is_supported(const struct ID *id)
void ED_preview_icon_render(const struct bContext *C, struct Scene *scene, struct PreviewImage *prv_img, struct ID *id, enum eIconSizes icon_size)
void ED_preview_icon_job(const struct bContext *C, struct PreviewImage *prv_img, struct ID *id, enum eIconSizes icon_size, bool delay)
void GPU_batch_draw_instanced(GPUBatch *batch, int i_count)
void GPU_batch_set_shader(GPUBatch *batch, GPUShader *shader)
void GPU_batch_draw(GPUBatch *batch)
struct GPUBatch * GPU_batch_preset_quad(void)
_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 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
#define GPU_matrix_model_view_projection_get(x)
int GPU_shader_get_uniform(GPUShader *shader, const char *name)
struct GPUShader GPUShader
void GPU_shader_uniform_vector(GPUShader *shader, int location, int length, int arraysize, const float *value)
int GPU_shader_get_uniform_block_binding(GPUShader *shader, const char *name)
GPUShader * GPU_shader_get_builtin_shader(eGPUBuiltinShader shader)
void GPU_shader_bind(GPUShader *shader)
@ GPU_SHADER_KEYFRAME_SHAPE
@ GPU_SHADER_2D_IMAGE_DESATURATE_COLOR
@ GPU_SHADER_2D_IMAGE_MULTI_RECT_COLOR
@ GPU_SHADER_2D_UNIFORM_COLOR
@ GPU_SHADER_2D_IMAGE_RECT_COLOR
@ GPU_SHADER_2D_IMAGE_COLOR
int GPU_shader_get_texture_binding(GPUShader *shader, const char *name)
int GPU_shader_get_builtin_uniform(GPUShader *shader, int builtin)
void GPU_program_point_size(bool enable)
@ GPU_BLEND_ALPHA_PREMULT
void GPU_blend(eGPUBlend blend)
void GPU_texture_bind_ex(GPUTexture *tex, eGPUSamplerState state, int unit, bool set_number)
void GPU_texture_update_mipmap(GPUTexture *tex, int miplvl, eGPUDataFormat gpu_data_format, const void *pixels)
struct GPUTexture GPUTexture
void GPU_texture_free(GPUTexture *tex)
void GPU_texture_unbind(GPUTexture *tex)
GPUTexture * GPU_texture_create_2d(const char *name, int w, int h, int mip_len, eGPUTextureFormat format, const float *data)
bool IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
struct ImBuf * IMB_dupImBuf(const struct ImBuf *ibuf1)
void IMB_rect_crop(struct ImBuf *ibuf, const struct rcti *crop)
struct ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
void IMB_premultiply_alpha(struct ImBuf *ibuf)
struct ImBuf * IMB_ibImageFromMemory(const unsigned char *mem, size_t size, int flags, char colorspace[IM_MAX_SPACE], const char *descr)
Contains defines and structs used throughout the imbuf module.
#define PREVIEW_RENDER_DEFAULT_HEIGHT
Read Guarded memory(de)allocation.
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
void UI_widgetbase_draw_cache_flush(void)
#define ICON_DEFAULT_HEIGHT
#define ICON_DEFAULT_HEIGHT_TOOLBAR
#define PREVIEW_DEFAULT_HEIGHT
#define ICON_DEFAULT_WIDTH
void UI_Theme_Restore(struct bThemeState *theme_state)
struct bTheme * UI_GetTheme(void)
void UI_GetThemeColor4fv(int colorid, float col[4])
bool UI_GetIconThemeColor4ubv(int colorid, unsigned char col[4])
void UI_SetTheme(int spacetype, int regionid)
void UI_Theme_Store(struct bThemeState *theme_state)
@ WM_JOB_TYPE_STUDIOLIGHT
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
SyclQueue void void size_t num_bytes void
struct @211::@212 surface
void IMB_freeImBuf(ImBuf *UNUSED(ibuf))
void UI_icons_free_drawinfo(void *drawinfo)
static struct ListBase iconfilelist
static void vicon_collection_color_draw(short color_tag, int x, int y, int w, int UNUSED(h), float UNUSED(alpha))
int UI_icon_from_object_mode(const int mode)
void UI_icon_draw_cache_end(void)
static void vicon_keytype_draw_wrapper(int x, int y, int w, int h, float alpha, short key_type, short handle_type)
#define ICON_TYPE_MONO_TEXTURE
static void ui_studiolight_icon_job_exec(void *customdata, short *UNUSED(stop), short *UNUSED(do_update), float *UNUSED(progress))
static void icon_draw_cache_flush_ex(bool only_full_caches)
#define ICON_TYPE_COLOR_TEXTURE
static void ui_id_preview_image_render_size(const bContext *C, Scene *scene, ID *id, PreviewImage *pi, int size, const bool use_job)
#define DEF_ICON_VECTOR_COLORSET_DRAW_NTH(prefix, index)
static void vicon_handletype_aligned_draw(int x, int y, int w, int h, float alpha)
#define DEF_ICON_COLLECTION_COLOR_DRAW(index, color)
struct IconImage IconImage
int UI_icon_from_rnaptr(const bContext *C, PointerRNA *ptr, int rnaicon, const bool big)
static DrawInfo * icon_ensure_drawinfo(Icon *icon)
static IconTexture icongltex
void(* VectorDrawFunc)(int x, int y, int w, int h, float alpha)
static void init_iconfile_list(struct ListBase *list)
static void icon_draw_texture(float x, float y, float w, float h, int ix, int iy, int iw, int ih, float alpha, const float rgb[3], bool with_border)
static void vicon_handletype_auto_clamp_draw(int x, int y, int w, int h, float alpha)
static void vicon_keytype_keyframe_draw(int x, int y, int w, int h, float alpha)
void UI_icons_reload_internal_textures(void)
void ui_icon_ensure_deferred(const bContext *C, const int icon_id, const bool big)
static const IconType icontypes[]
#define ICON_INDIRECT_DATA_ALPHA
int UI_icon_from_idcode(const int idcode)
void UI_icon_draw_alpha(float x, float y, int icon_id, float alpha)
static void vicon_gplayer_color_draw(Icon *icon, int x, int y, int w, int h)
static void vicon_keytype_jitter_draw(int x, int y, int w, int h, float alpha)
void UI_icon_draw(float x, float y, int icon_id)
static void vicon_handletype_vector_draw(int x, int y, int w, int h, float alpha)
static void vicon_colorset_draw(int index, int x, int y, int w, int h, float UNUSED(alpha))
static void vicon_strip_color_draw_library_data_override_noneditable(int x, int y, int w, int UNUSED(h), float alpha)
#define INIT_BRUSH_ICON(icon_id, name)
static void free_icons_textures(void)
void UI_icon_draw_cache_begin(void)
static void free_iconfile_list(struct ListBase *list)
static void icon_verify_datatoc(IconImage *iimg)
IconTextureDrawCall normal
static void vicon_handletype_free_draw(int x, int y, int w, int h, float alpha)
static void ui_studiolight_icon_job_end(void *customdata)
struct IconTextureDrawCall IconTextureDrawCall
void UI_icon_render_id(const bContext *C, Scene *scene, ID *id, const enum eIconSizes size, const bool use_job)
struct IconTexture IconTexture
PreviewImage * UI_icon_to_preview(int icon_id)
int ui_id_icon_get(const bContext *C, ID *id, const bool big)
static int ui_id_screen_get_icon(const bContext *C, ID *id)
static void vicon_strip_color_draw_library_data_indirect(int x, int y, int w, int UNUSED(h), float alpha)
static void init_brush_icons(void)
int UI_icon_from_keymap_item(const wmKeyMapItem *kmi, int r_icon_mod[4])
int UI_icon_get_height(int icon_id)
bool UI_icon_get_theme_color(int icon_id, uchar color[4])
static void vicon_keytype_moving_hold_draw(int x, int y, int w, int h, float alpha)
void UI_icon_render_id_ex(const bContext *C, Scene *scene, ID *id_to_render, const enum eIconSizes size, const bool use_job, PreviewImage *r_preview_image)
static DrawInfo * icon_create_drawinfo(Icon *icon)
ImBuf * UI_icon_alert_imbuf_get(eAlertIcon icon)
static void vicon_handletype_auto_draw(int x, int y, int w, int h, float alpha)
static void def_internal_vicon(int icon_id, VectorDrawFunc drawFunc)
int UI_icon_from_library(const ID *id)
static void ui_studiolight_free_function(StudioLight *sl, void *data)
static ImBuf * create_mono_icon_with_border(ImBuf *buf, int resolution_divider, float border_intensity)
int UI_iconfile_get_index(const char *filename)
#define ICON_MONO_BORDER_OUTSET
#define ICON_DRAW_CACHE_SIZE
int UI_icon_from_event_type(short event_type, short event_value)
int UI_icon_color_from_collection(const Collection *collection)
static DrawInfo * def_internal_icon(ImBuf *bbuf, int icon_id, int xofs, int yofs, int size, int type, int theme_color)
ListBase * UI_iconfile_list(void)
static void icon_draw_rect(float x, float y, int w, int h, float UNUSED(aspect), int rw, int rh, uint *rect, float alpha, const float desaturate)
void UI_icon_draw_preview(float x, float y, int icon_id, float aspect, float alpha, int size)
#define ICON_TYPE_GPLAYER
static void vicon_keytype_extreme_draw(int x, int y, int w, int h, float alpha)
static int ui_id_brush_get_icon(const bContext *C, ID *id)
static void init_internal_icons(void)
#define DEF_ICON_STRIP_COLOR_DRAW(index, color)
#define ICON_TYPE_PREVIEW
struct IconDrawCall IconDrawCall
static int get_draw_size(enum eIconSizes size)
int UI_icon_preview_to_render_size(enum eIconSizes size)
static DrawInfo * g_di_event_list
int UI_icon_get_width(int icon_id)
static void icon_draw_texture_cached(float x, float y, float w, float h, int ix, int iy, int UNUSED(iw), int ih, float alpha, const float rgb[3], bool with_border)
static void ui_studiolight_kill_icon_preview_job(wmWindowManager *wm, int icon_id)
static void vicon_keytype_breakdown_draw(int x, int y, int w, int h, float alpha)
#define INIT_EVENT_ICON(icon_id, type, value)
static void init_event_icons(void)
void UI_icon_draw_ex(float x, float y, int icon_id, float aspect, float alpha, float desaturate, const uchar mono_color[4], const bool mono_border)
static void vicon_strip_color_draw(short color_tag, int x, int y, int w, int UNUSED(h), float UNUSED(alpha))
static void icon_draw_cache_texture_flush_ex(GPUTexture *texture, IconTextureDrawCall *texture_draw_calls)
static void icon_draw_size(float x, float y, int icon_id, float aspect, float alpha, enum eIconSizes size, int draw_size, const float desaturate, const uchar mono_rgba[4], const bool mono_border)
static void icon_create_rect(struct PreviewImage *prv_img, enum eIconSizes size)
static struct @417 g_icon_draw_cache
IconTextureDrawCall border
static void ui_id_icon_render(const bContext *C, ID *id, bool use_jobs)
static void icon_set_image(const bContext *C, Scene *scene, ID *id, PreviewImage *prv_img, enum eIconSizes size, const bool use_job)
void icon_draw_rect_input(float x, float y, int w, int h, float UNUSED(alpha), short event_type, short UNUSED(event_value))
CCL_NAMESPACE_BEGIN ccl_device float invert(float color, float factor)
ccl_gpu_kernel_postfix ccl_global float int int sy
ccl_gpu_kernel_postfix ccl_global float int sx
void draw_keyframe_shape(float x, float y, float size, bool sel, short key_type, short mode, float alpha, const KeyframeShaderBindings *sh_bindings, short handle_type, short extreme_type)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
static void area(int d1, int d2, int e1, int e2, float weights[2])
static const pxr::TfToken b("b", pxr::TfToken::Immortal)
static const pxr::TfToken rgb("rgb", pxr::TfToken::Immortal)
smooth(Type::FLOAT, "mask_weight")
bool RNA_struct_is_a(const StructRNA *type, const StructRNA *srna)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
bool RNA_struct_is_ID(const StructRNA *type)
bool RNA_enum_icon_from_value(const EnumPropertyItem *item, int value, int *r_icon)
int RNA_int_get(PointerRNA *ptr, const char *name)
struct BrushGpencilSettings * gpencil_settings
struct DrawInfo::@418::@420 geom
struct DrawInfo::@418::@421 buffer
struct DrawInfo::@418::@422 texture
struct DrawInfo::@418::@419 vector
union DrawInfo::@418 data
struct DrawInfo::@418::@423 input
IDOverrideLibrary * override_library
const uchar * datatoc_rect
IconDrawCall drawcall_cache[ICON_DRAW_CACHE_SIZE]
struct GPUTexture * tex[2]
DrawInfoFreeFP drawinfo_free
short changed_timestamp[2]
int icon_id_matcap_flipped
float icon_border_intensity
uiWidgetColors wcol_toolbar_item
ThemeStripColor strip_color[9]
ThemeCollectionColor collection_color[8]
void WM_jobs_start(wmWindowManager *wm, wmJob *wm_job)
void WM_jobs_kill_type(struct wmWindowManager *wm, const void *owner, int job_type)
void WM_jobs_callbacks(wmJob *wm_job, wm_jobs_start_callback startjob, void(*initjob)(void *), void(*update)(void *), void(*endjob)(void *))
void WM_jobs_customdata_set(wmJob *wm_job, void *customdata, void(*free)(void *))
void WM_jobs_timer(wmJob *wm_job, double timestep, unsigned int note, unsigned int endnote)
wmJob * WM_jobs_get(wmWindowManager *wm, wmWindow *win, const void *owner, const char *name, int flag, int job_type)