51 #define DNA_DEPRECATED_ALLOW
132 const Image *image_src = (
const Image *)id_src;
155 for (
int eye = 0; eye < 2; eye++) {
203 .offset_in_ID = offsetof(
Image, cache),
204 .cache_v = image->
cache,
206 function_callback(
id, &key, (
void **)&image->
cache, 0,
user_data);
208 for (
int eye = 0; eye < 2; eye++) {
218 function_callback(
id, &key, (
void **)&image->
rr, 0,
user_data);
223 function_callback(
id, &key, (
void **)&slot->render, 0,
user_data);
231 if (ima->
id.
us > 0 || is_undo) {
265 ima->packedfile =
NULL;
289 ima->packedfile =
NULL;
322 .struct_size =
sizeof(
Image),
324 .name_plural =
"images",
339 .blend_read_expand =
NULL,
341 .blend_read_undo_preserve =
NULL,
343 .lib_override_apply_post =
NULL,
353 #define IMA_NO_INDEX 0x7FEFEFEF
356 #define IMA_MAKE_INDEX(entry, index) (((entry) << 10) + (index))
357 #define IMA_INDEX_ENTRY(index) ((index) >> 10)
359 # define IMA_INDEX_PASS(index) (index & ~1023)
379 return (
a->index != b->
index);
546 for (
int i = 0; i < 8; i++) {
608 for (imapf_src = lb_src->
first; imapf_src; imapf_src = imapf_src->
next) {
623 if (dest && source && dest != source) {
626 struct MovieCacheIter *iter;
657 return (ibuf !=
NULL);
662 for (
int eye = 0; eye < 2; eye++) {
679 if ((tile_number != 0) && (tile_number < 1001 || tile_number >
IMA_UDIM_MAX)) {
685 if (
ELEM(tile_number, 0, 1001)) {
694 if (tile->tile_number == tile_number) {
726 int tile_number = 1001 + 10 * iy + ix;
743 const float co_floor[2] = {
floorf(co[0]),
floorf(co[1])};
745 float dist_best_sq = FLT_MAX;
746 int tile_number_best = -1;
749 const int tile_index = tile->tile_number - 1001;
751 const float tile_index_co[2] = {tile_index % 10, tile_index / 10};
754 return tile->tile_number;
760 if (dist_sq < dist_best_sq) {
761 dist_best_sq = dist_sq;
762 tile_number_best = tile->tile_number;
766 return tile_number_best;
891 const float color[4],
895 unsigned char *rect =
NULL;
896 float *rect_float =
NULL;
902 if (colorspace_settings->
name[0] ==
'\0') {
926 if (colorspace_settings->
name[0] ==
'\0') {
934 rect = (
unsigned char *)ibuf->
rect;
970 const float color[4],
1003 for (view_id = 0; view_id < 2; view_id++) {
1008 int entry = tiled ? 1001 : 0;
1138 if (totfiles == 1) {
1169 const size_t data_len)
1173 if (totfiles != 1) {
1174 BKE_report(reports,
RPT_ERROR,
"Cannot pack multiview images from raw data currently...");
1215 ibufm = ibuf->
mipmap[level];
1244 printf(
"\ntotal image memory len: %.3f MB\n", (
double)totsize / (
double)(1024 * 1024));
1250 printf(
"%s len: %.3f MB\n", ima->
id.
name + 2, (
double)
size / (
double)(1024 * 1024));
1262 #undef CHECK_FREED_SIZE
1266 #ifdef CHECK_FREED_SIZE
1282 #ifdef CHECK_FREED_SIZE
1288 #ifdef CHECK_FREED_SIZE
1293 #ifdef CHECK_FREED_SIZE
1294 printf(
"%s: freed total %lu MB\n", __func__, tot_freed_size / (1024 * 1024));
1300 int except_frame = *(
int *)userdata;
1330 memset(r_options, 0,
sizeof(*r_options));
1344 return IMB_FTYPE_RADHDR;
1353 return IMB_FTYPE_DDS;
1361 return IMB_FTYPE_TIF;
1369 return IMB_FTYPE_CINEON;
1372 return IMB_FTYPE_DPX;
1375 #ifdef WITH_OPENJPEG
1377 r_options->
flag |= JP2_JP2;
1379 return IMB_FTYPE_JP2;
1396 if (ftype == IMB_FTYPE_RADHDR) {
1404 if (ftype == IMB_FTYPE_DDS) {
1412 if (ftype == IMB_FTYPE_TIF) {
1420 if (ftype == IMB_FTYPE_CINEON) {
1423 if (ftype == IMB_FTYPE_DPX) {
1434 #ifdef WITH_OPENJPEG
1435 if (ftype == IMB_FTYPE_JP2) {
1571 if (
STREQ(imtype_arg,
"TGA")) {
1574 if (
STREQ(imtype_arg,
"IRIS")) {
1578 if (
STREQ(imtype_arg,
"DDS")) {
1582 if (
STREQ(imtype_arg,
"JPEG")) {
1585 if (
STREQ(imtype_arg,
"IRIZ")) {
1588 if (
STREQ(imtype_arg,
"RAWTGA")) {
1591 if (
STREQ(imtype_arg,
"AVIRAW")) {
1594 if (
STREQ(imtype_arg,
"AVIJPEG")) {
1597 if (
STREQ(imtype_arg,
"PNG")) {
1600 if (
STREQ(imtype_arg,
"BMP")) {
1604 if (
STREQ(imtype_arg,
"HDR")) {
1609 if (
STREQ(imtype_arg,
"TIFF")) {
1614 if (
STREQ(imtype_arg,
"OPEN_EXR")) {
1617 if (
STREQ(imtype_arg,
"OPEN_EXR_MULTILAYER")) {
1620 if (
STREQ(imtype_arg,
"EXR")) {
1623 if (
STREQ(imtype_arg,
"MULTILAYER")) {
1627 if (
STREQ(imtype_arg,
"FFMPEG")) {
1631 if (
STREQ(imtype_arg,
"CINEON")) {
1634 if (
STREQ(imtype_arg,
"DPX")) {
1638 #ifdef WITH_OPENJPEG
1639 if (
STREQ(imtype_arg,
"JP2")) {
1651 const char *extension =
NULL;
1652 const char *extension_test;
1657 extension = extension_test;
1662 extension = extension_test;
1668 extension = extension_test;
1672 else if (
ELEM(imtype,
1679 extension = extension_test;
1685 extension = extension_test;
1691 extension = extension_test;
1696 extension = extension_test;
1702 extension = extension_test;
1706 #ifdef WITH_OPENIMAGEIO
1709 extension = extension_test;
1716 extension = extension_test;
1723 extension = extension_test;
1728 extension = extension_test;
1732 #ifdef WITH_OPENJPEG
1737 extension = extension_test;
1742 extension = extension_test;
1746 BLI_assert(!
"Unsupported jp2 codec was specified in im_format->jp2_codec");
1751 extension = extension_test;
1758 extension = extension_test;
1787 memset(im_format, 0,
sizeof(*im_format));
1801 int ftype = imbuf->
ftype;
1813 else if (ftype == IMB_FTYPE_RADHDR) {
1828 else if (ftype == IMB_FTYPE_DDS) {
1836 else if (ftype == IMB_FTYPE_TIF) {
1838 if (custom_flags & TIF_16BIT) {
1841 if (custom_flags & TIF_COMPRESS_NONE) {
1844 if (custom_flags & TIF_COMPRESS_DEFLATE) {
1847 if (custom_flags & TIF_COMPRESS_LZW) {
1850 if (custom_flags & TIF_COMPRESS_PACKBITS) {
1872 else if (ftype == IMB_FTYPE_CINEON) {
1875 else if (ftype == IMB_FTYPE_DPX) {
1880 if (custom_flags &
RAWTGA) {
1887 #ifdef WITH_OPENJPEG
1888 else if (ftype == IMB_FTYPE_JP2) {
1892 if (custom_flags & JP2_16BIT) {
1895 else if (custom_flags & JP2_12BIT) {
1899 if (custom_flags & JP2_YCC) {
1903 if (custom_flags & JP2_CINE) {
1905 if (custom_flags & JP2_CINE_48FPS) {
1910 if (custom_flags & JP2_JP2) {
1913 else if (custom_flags & JP2_J2K) {
1917 BLI_assert(!
"Unsupported jp2 codec was specified in file type");
1931 #define STAMP_NAME_SIZE ((MAX_ID_NAME - 2) + 16)
1965 #undef STAMP_NAME_SIZE
1980 do_prefix ?
"File %s" :
"%s",
1984 stamp_data->
file[0] =
'\0';
1992 stamp_data->
note[0] =
'\0';
1999 "%04d/%02d/%02d %02d:%02d:%02d",
2006 SNPRINTF(stamp_data->
date, do_prefix ?
"Date %s" :
"%s", text);
2009 stamp_data->
date[0] =
'\0';
2022 SNPRINTF(stamp_data->
marker, do_prefix ?
"Marker %s" :
"%s", text);
2025 stamp_data->
marker[0] =
'\0';
2032 SNPRINTF(stamp_data->
time, do_prefix ?
"Timecode %s" :
"%s", text);
2035 stamp_data->
time[0] =
'\0';
2046 SNPRINTF(fmtstr, do_prefix ?
"Frame %%0%di" :
"%%0%di", digits);
2050 stamp_data->
frame[0] =
'\0';
2055 do_prefix ?
"Frame Range %d:%d" :
"%d:%d",
2065 do_prefix ?
"Camera %s" :
"%s",
2066 camera ? camera->
id.
name + 2 :
"<none>");
2069 stamp_data->
camera[0] =
'\0';
2090 stamp_data->
scene[0] =
'\0';
2103 SNPRINTF(stamp_data->
strip, do_prefix ?
"Strip %s" :
"%s", text);
2106 stamp_data->
strip[0] =
'\0';
2126 stamp_data->
memory[0] =
'\0';
2131 do_prefix ?
"Frame Range %d:%d" :
"%d:%d",
2142 SNPRINTF(stamp_data->
hostname, do_prefix ?
"Hostname %s" :
"%s", hostname);
2155 SNPRINTF(stamp_data->
file, do_prefix ?
"File %s" :
"%s", stamp_data_template->
file);
2158 stamp_data->
file[0] =
'\0';
2164 stamp_data->
note[0] =
'\0';
2167 SNPRINTF(stamp_data->
date, do_prefix ?
"Date %s" :
"%s", stamp_data_template->
date);
2170 stamp_data->
date[0] =
'\0';
2176 stamp_data->
marker[0] =
'\0';
2179 SNPRINTF(stamp_data->
time, do_prefix ?
"Timecode %s" :
"%s", stamp_data_template->
time);
2182 stamp_data->
time[0] =
'\0';
2185 SNPRINTF(stamp_data->
frame, do_prefix ?
"Frame %s" :
"%s", stamp_data_template->
frame);
2188 stamp_data->
frame[0] =
'\0';
2194 stamp_data->
camera[0] =
'\0';
2204 SNPRINTF(stamp_data->
scene, do_prefix ?
"Scene %s" :
"%s", stamp_data_template->
scene);
2207 stamp_data->
scene[0] =
'\0';
2210 SNPRINTF(stamp_data->
strip, do_prefix ?
"Strip %s" :
"%s", stamp_data_template->
strip);
2213 stamp_data->
strip[0] =
'\0';
2217 do_prefix ?
"RenderTime %s" :
"%s",
2224 SNPRINTF(stamp_data->
memory, do_prefix ?
"Peak Memory %s" :
"%s", stamp_data_template->
memory);
2227 stamp_data->
memory[0] =
'\0';
2231 stamp_data->
hostname, do_prefix ?
"Hostname %s" :
"%s", stamp_data_template->
hostname);
2241 unsigned char *rect,
2253 const char *display_device;
2264 #define TEXT_SIZE_CHECK(str, w, h) \
2265 ((str[0]) && ((void)(h = h_fixed), (w = BLF_width(mono, str, sizeof(str)))))
2268 #define TEXT_SIZE_CHECK_WORD_WRAP(str, w, h) \
2269 ((str[0]) && (BLF_boundbox_ex(mono, str, sizeof(str), &wrap.rect, &wrap.info), \
2270 (void)(h = h_fixed * wrap.info.lines), \
2271 (w = BLI_rctf_size_x(&wrap.rect))))
2273 #define BUFF_MARGIN_X 2
2274 #define BUFF_MARGIN_Y 1
2276 if (!rect && !rectf) {
2284 if (stamp_data_template ==
NULL) {
2605 #undef TEXT_SIZE_CHECK
2606 #undef TEXT_SIZE_CHECK_WORD_WRAP
2607 #undef BUFF_MARGIN_X
2608 #undef BUFF_MARGIN_Y
2629 if (!allocate_only) {
2695 #define CALL(member, value_str) \
2696 if (noskip || stamp_data->member[0]) { \
2697 callback(data, value_str, stamp_data->member, sizeof(stamp_data->member)); \
2719 if (noskip || custom_field->value[0]) {
2720 callback(
data, custom_field->key, custom_field->value, strlen(custom_field->value) + 1);
2735 "StampData Custom Field");
2743 if (stamp_data ==
NULL) {
2759 if (stamp_data ==
NULL) {
2817 for (tot = ibuf->
x * ibuf->
y; tot--; buf += 4) {
2818 if (buf[3] < 1.0f) {
2823 else if (ibuf->
rect) {
2824 unsigned char *buf = (
unsigned char *)ibuf->
rect;
2825 for (tot = ibuf->
x * ibuf->
y; tot--; buf += 4) {
2826 if (buf[3] != 255) {
2839 char imtype = imf->
imtype;
2851 ibuf->
ftype = IMB_FTYPE_RADHDR;
2854 else if (
ELEM(imtype,
2872 ibuf->
ftype = IMB_FTYPE_DDS;
2880 ibuf->
ftype = IMB_FTYPE_TIF;
2915 ibuf->
ftype = IMB_FTYPE_CINEON;
2930 ibuf->
ftype = IMB_FTYPE_DPX;
2952 #ifdef WITH_OPENJPEG
2957 ibuf->
ftype = IMB_FTYPE_JP2;
2985 BLI_assert(!
"Unsupported jp2 codec was specified in im_format->jp2_codec");
3017 ImBuf ibuf_back = *ibuf;
3051 const char *relbase,
3056 const bool use_frames,
3059 if (
string ==
NULL) {
3080 const char *relbase,
3084 const bool use_frames,
3088 string, base, relbase,
frame, im_format->
imtype, im_format, use_ext, use_frames, suffix);
3093 const char *relbase,
3097 const bool use_frames,
3128 printf(
"not an anim: %s\n",
name);
3131 printf(
"anim file doesn't exist: %s\n",
name);
3179 if (ima->
id.
us == 0) {
3218 if (is_multiview && !do_reset) {
3274 callback(ima,
id, iuser, customdata);
3283 callback(ima,
id, iuser, customdata);
3292 bool skip_nested_nodes,
3422 Image *changed_image = customdata;
3437 Image *changed_image = customdata;
3439 if (ima == changed_image) {
3480 for (
int eye = 0; eye < 2; eye++) {
3490 for (
int i = 0; i < totviews; i++) {
3549 for (
ImageTile *tile = base_tile->
next, *tile_next; tile; tile = tile_next) {
3550 tile_next = tile->next;
3598 printf(
"ERROR: Image \"%s\" not available. Keeping packed image\n", imapf->
filepath);
3665 const char *rp_name =
"";
3667 for (rpass = rl->
passes.
first; rpass; rpass = rpass->
next, rp_index++) {
3668 if (rp_index == pass) {
3675 rp_name = rpass->
name;
3685 if (rpass_ret ==
NULL) {
3691 *r_passindex = (rpass == rpass_ret ? rp_index : pass);
3704 if (tile->
label[0]) {
3718 if (tile_number < 1001 || tile_number >
IMA_UDIM_MAX) {
3725 for (next_tile = ima->
tiles.
first; next_tile; next_tile = next_tile->
next) {
3750 for (
int eye = 0; eye < 2; eye++) {
3787 const float color[4],
3801 if (tile_ibuf !=
NULL) {
3823 short index = 0, rv_index, rl_index = 0;
3832 if (iuser->
layer == rl_index) {
3854 if ((iuser->
view < 0) ||
3905 bool modified =
false;
3906 for (; rv; rv = rv->
next, iv = iv->
next) {
3996 if (free_current_slot) {
4028 if (left_iv ==
NULL) {
4043 static void image_create_multilayer(
Image *ima,
ImBuf *ibuf,
int framenr)
4108 if (!is_multiview) {
4120 Image *ima,
ImageUser *iuser,
int frame,
const int view_id,
bool *r_assign)
4138 iuser_t.
view = view_id;
4149 printf(
AT " loaded %s\n",
name);
4152 printf(
AT " missed %s\n",
name);
4162 image_create_multilayer(ima, ibuf, frame);
4192 bool assign =
false;
4194 if (!is_multiview) {
4202 struct ImBuf **ibuf_arr;
4206 for (
int i = 0; i < totfiles; i++) {
4215 ibuf = ibuf_arr[(iuser ? iuser->
multi_index : 0)];
4218 for (
int i = 0; i < totviews; i++) {
4224 for (
int i = 0; i < totviews; i++) {
4225 if (ibuf_arr[i] != ibuf) {
4260 printf(
"error, multi is normal image\n");
4287 iuser->
ok = tile->
ok;
4315 iuser_t.
view = view_id;
4323 if (ia->
anim && iuser && iuser->
frames == 0) {
4330 int fra = frame - 1;
4335 if (fra > (dur - 1)) {
4364 for (
int i = 0; i < totfiles; i++) {
4371 if (!is_multiview) {
4376 struct ImBuf **ibuf_arr;
4379 ibuf_arr =
MEM_mallocN(
sizeof(
ImBuf *) * totviews,
"Image Views (movie) Imbufs");
4381 for (
int i = 0; i < totfiles; i++) {
4389 for (
int i = 0; i < totviews; i++) {
4399 ibuf = ibuf_arr[(iuser ? iuser->
multi_index : 0)];
4402 for (
int i = 0; i < totviews; i++) {
4403 if (ibuf_arr[i] != ibuf) {
4413 iuser->
ok = tile->
ok;
4423 const bool has_packed,
4462 iuser_t.
view = view_id;
4476 image_create_multilayer(ima, ibuf, cfra);
4513 bool assign =
false;
4529 if (!is_multiview) {
4536 struct ImBuf **ibuf_arr;
4542 for (
int i = 0; i < totfiles; i++) {
4548 totfiles == 1 && totviews >= 2) {
4557 for (i = 0; i < totviews; i++) {
4563 for (i = 0; i < totviews; i++) {
4564 if (ibuf_arr[i] != ibuf) {
4575 iuser->
ok = tile->
ok;
4615 iuser->
ok = tile->
ok;
4629 float *rectf, *rectz;
4637 if (!(iuser && iuser->
scene)) {
4649 layer = iuser->
layer;
4651 actview = iuser->
view;
4707 else if (
rect && layer == 0) {
4720 rectf = rpass->
rect;
4729 rectz = rpass->
rect;
4825 if (is_multilayer) {
4858 frame = (iuser && iuser->
tile) ? iuser->
tile : 1001;
4896 iuser->
ok = tile->
ok;
4923 entry = (iuser && iuser->
tile) ? iuser->
tile : 1001;
4931 if (iuser !=
NULL) {
4956 if (iuser->
ok == 0) {
4965 if (tile->
ok == 0) {
4979 int entry = 0,
index = 0;
5034 if (ima->
gen_x == 0) {
5037 if (ima->
gen_y == 0) {
5155 return ibuf !=
NULL;
5186 if (item->ibuf !=
NULL) {
5203 for (item =
pool->image_buffers.first; item; item = item->
next) {
5204 if (item->
image == image && item->
entry == entry && item->
index == index) {
5249 item->
entry = entry;
5250 item->
index = index;
5275 if (r_is_in_range) {
5276 *r_is_in_range =
false;
5284 cfra = cfra - iuser->
sfra + 1;
5288 cfra = ((cfra) %
len);
5296 if (r_is_in_range) {
5297 *r_is_in_range =
true;
5304 else if (cfra >
len) {
5308 if (r_is_in_range) {
5309 *r_is_in_range =
true;
5315 if (framenr > iuser->
frames) {
5320 framenr = ((framenr) %
len);
5321 while (framenr < 0) {
5330 framenr += iuser->
offset;
5366 if (iuser->
ok == 0) {
5372 if (tile->ok == 0) {
5388 int cfra = *(
int *)customdata;
5409 *(
bool *)customdata =
true;
5417 bool has_animation =
false;
5418 bool skip_nested_nodes =
true;
5420 return has_animation;
5447 bool skip_nested_nodes =
true;
5468 unsigned short numlen;
5475 index = (iuser && iuser->
tile) ? iuser->
tile : 1001;
5492 planes = (ibuf ? ibuf->
planes : 0);
5507 if (image !=
NULL) {
5511 if (ibuf && ibuf->
x > 0 && ibuf->
y > 0) {
5513 *r_height = ibuf->
y;
5530 if (image !=
NULL) {
5550 *r_aspy = image->
aspy / image->
aspx;
5563 unsigned char *pixels =
NULL;
5571 pixels = (
unsigned char *)ibuf->
rect;
5593 float *pixels =
NULL;
5654 bool is_dirty =
false;
5655 bool is_writable =
false;
5674 if (r_is_writable) {
5675 *r_is_writable = is_writable;
5707 ibuf->
ftype = ftype;
5718 bool has_loaded_ibuf =
false;
5725 has_loaded_ibuf =
true;
5732 return has_loaded_ibuf;
5750 ibuf = current_ibuf;
5803 if (!is_multiview) {
5809 for (
int i = 0; i < 2; i++) {
5818 const char *ext =
NULL;
5822 if (prefix[0] ==
'\0') {
5871 if (name && name[0]) {
5886 if (
G.is_rendering) {
5892 if (index >= num_slots || num_slots == 1) {
5901 if (current_slot == remove_slot) {
5905 next_slot = current_slot;
5910 if (remove_slot == current_last_slot) {
5914 if (current_slot == remove_slot) {
5915 next_last_slot = next_slot;
5918 next_last_slot = current_slot;
5930 current_last_slot = next_last_slot;
5933 current_slot = next_slot;
5940 if (remove_slot->
render) {
5954 if (
G.is_rendering) {
typedef float(TangentPoint)[2]
void BKE_icon_id_delete(struct ID *id)
void BKE_icon_changed(const int icon_id)
void BKE_previewimg_free(struct PreviewImage **prv)
void BKE_previewimg_id_copy(struct ID *new_id, const struct ID *old_id)
void BKE_previewimg_blend_read(struct BlendDataReader *reader, struct PreviewImage *prv)
void BKE_previewimg_blend_write(struct BlendWriter *writer, const struct PreviewImage *prv)
int BKE_icon_id_ensure(struct ID *id)
@ IDTYPE_FLAGS_NO_ANIMDATA
void(* IDTypeForeachCacheFunctionCallback)(struct ID *id, const struct IDCacheKey *cache_key, void **cache_p, uint flags, void *user_data)
void() StampCallback(void *data, const char *propname, char *propvalue, int len)
#define IMA_CHAN_FLAG_RGB
void BKE_image_buf_fill_checker_color(unsigned char *rect, float *rect_float, int width, int height)
void BKE_image_buf_fill_checker(unsigned char *rect, float *rect_float, int width, int height)
#define IMA_SIGNAL_COLORMANAGE
#define IMA_CHAN_FLAG_ALPHA
void BKE_image_free_gputextures(struct Image *ima)
#define IMA_SIGNAL_SRC_CHANGE
#define IMA_SIGNAL_USER_NEW_IMAGE
#define IMA_SIGNAL_RELOAD
void BKE_image_buf_fill_color(unsigned char *rect, float *rect_float, int width, int height, const float color[4])
void * BKE_libblock_alloc(struct Main *bmain, short type, const char *name, const int flag) ATTR_WARN_UNUSED_RESULT
void BKE_id_free(struct Main *bmain, void *idv)
void id_us_ensure_real(struct ID *id)
void id_us_plus(struct ID *id)
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
const char * BKE_main_blendfile_path(const struct Main *bmain) ATTR_NONNULL()
const char * BKE_main_blendfile_path_from_global(void)
#define SH_NODE_TEX_ENVIRONMENT
bool nodeUpdateID(struct bNodeTree *ntree, struct ID *id)
struct PackedFile * BKE_packedfile_new_from_memory(void *mem, int memlen)
struct PackedFile * BKE_packedfile_duplicate(const struct PackedFile *pf_src)
void BKE_packedfile_blend_write(struct BlendWriter *writer, struct PackedFile *pf)
struct PackedFile * BKE_packedfile_new(struct ReportList *reports, const char *filename, const char *basepath)
void BKE_packedfile_blend_read(struct BlendDataReader *reader, struct PackedFile **pf_p)
void BKE_packedfile_free(struct PackedFile *pf)
void BKE_report(ReportList *reports, ReportType type, const char *message)
bool BKE_scene_multiview_is_stereo3d(const struct RenderData *rd)
bool BKE_scene_multiview_is_render_view_active(const struct RenderData *rd, const struct SceneRenderView *srv)
void BKE_scene_multiview_view_prefix_get(struct Scene *scene, const char *name, char *r_prefix, const char **r_ext)
const char * BKE_scene_find_last_marker_name(const struct Scene *scene, int frame)
int BKE_scene_multiview_num_views_get(const struct RenderData *rd)
struct bScreen * BKE_workspace_active_screen_get(const struct WorkSpaceInstanceHook *hook) GETTER_ATTRS
float BLF_width_max(int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_draw_buffer(int fontid, const char *str, size_t len) ATTR_NONNULL(2)
#define BLF_DRAW_STR_DUMMY_MAX
void BLF_disable(int fontid, int option)
void BLF_buffer_col(int fontid, const float rgba[4]) ATTR_NONNULL(2)
float BLF_descender(int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_buffer(int fontid, float *fbuf, unsigned char *cbuf, int w, int h, int nch, struct ColorManagedDisplay *display)
void BLF_size(int fontid, int size, int dpi)
void BLF_enable(int fontid, int option)
int BLF_height_max(int fontid) ATTR_WARN_UNUSED_RESULT
void BLF_wordwrap(int fontid, int wrap_width)
void BLF_position(int fontid, float x, float y, float z)
int BLI_open(const char *filename, int oflag, int pmode) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
unsigned int BLI_ghashutil_strhash_p(const void *ptr)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void void void void void BLI_duplicatelist(struct ListBase *dst, const struct ListBase *src) ATTR_NONNULL(1
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void BLI_insertlinkafter(struct ListBase *listbase, void *vprevlink, void *vnewlink) ATTR_NONNULL(1)
int BLI_listbase_count_at_most(const struct ListBase *listbase, const int count_max) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void * BLI_findstring(const struct ListBase *listbase, const char *id, const int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_insertlinkbefore(struct ListBase *listbase, void *vnextlink, void *vnewlink) ATTR_NONNULL(1)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
MINLINE int integer_digits_i(const int i)
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE float len_squared_v2v2(const float a[2], const float b[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE bool equals_v2v2(const float v1[2], const float v2[2]) ATTR_WARN_UNUSED_RESULT
MINLINE void zero_v2(float r[2])
BLI_mempool * BLI_mempool_create(unsigned int esize, unsigned int totelem, unsigned int pchunk, unsigned int flag) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void * BLI_mempool_alloc(BLI_mempool *pool) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void BLI_mempool_destroy(BLI_mempool *pool) ATTR_NONNULL(1)
bool BLI_path_extension_check_array(const char *str, const char **ext_array) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
const char * BLI_path_basename(const char *path) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
bool BLI_path_frame(char *path, int frame, int digits) ATTR_NONNULL()
bool BLI_make_existing_file(const char *name)
bool BLI_path_extension_ensure(char *path, size_t maxlen, const char *ext) ATTR_NONNULL()
int BLI_path_sequence_decode(const char *string, char *head, char *tail, unsigned short *r_num_len)
bool BLI_path_extension_replace(char *path, size_t maxlen, const char *ext) ATTR_NONNULL()
bool BLI_path_extension_check(const char *str, const char *ext) ATTR_NONNULL() ATTR_WARN_UNUSED_RESULT
void BLI_path_sequence_encode(char *string, const char *head, const char *tail, unsigned short numlen, int pic)
bool BLI_path_extension_check_n(const char *str,...) ATTR_NONNULL(1) ATTR_SENTINEL(0)
bool BLI_path_abs(char *path, const char *basepath) ATTR_NONNULL()
bool BLI_path_suffix(char *string, size_t maxlen, const char *suffix, const char *sep) ATTR_NONNULL()
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)
#define SNPRINTF(dst, format,...)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL() ATTR_MALLOC
size_t BLI_snprintf(char *__restrict dst, size_t maxncpy, const char *__restrict format,...) ATTR_NONNULL(1
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, const size_t maxncpy) ATTR_NONNULL()
void BLI_hostname_get(char *buffer, size_t bufsize)
void BLI_thread_unlock(int type)
void BLI_mutex_free(ThreadMutex *mutex)
void BLI_thread_lock(int type)
ThreadMutex * BLI_mutex_alloc(void)
int BLI_thread_is_main(void)
void BLI_mutex_lock(ThreadMutex *mutex)
void BLI_mutex_unlock(ThreadMutex *mutex)
pthread_mutex_t ThreadMutex
size_t BLI_timecode_string_from_time(char *str, const size_t maxncpy, const int brevity_level, const float time_seconds, const double scene_fps, const short timecode_style) ATTR_NONNULL()
size_t BLI_timecode_string_from_time_simple(char *str, const size_t maxncpy, const double time_seconds) ATTR_NONNULL()
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_read_data_address(reader, ptr_p)
bool BLO_read_data_is_undo(BlendDataReader *reader)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_write_struct(writer, struct_name, data_ptr)
void BLO_read_list(BlendDataReader *reader, struct ListBase *list)
#define BLO_write_struct_list(writer, struct_name, list_ptr)
bool BLO_write_is_undo(BlendWriter *writer)
#define BLT_I18NCONTEXT_ID_IMAGE
#define CLOG_STR_ERROR(clg_ref, str)
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
float DEG_get_ctime(const Depsgraph *graph)
eEvaluationMode DEG_get_mode(const Depsgraph *graph)
@ ID_RECALC_COPY_ON_WRITE
#define ID_BLEND_PATH_FROM_GLOBAL(_id)
#define ID_BLEND_PATH(_bmain, _id)
#define ID_IS_OVERRIDE_LIBRARY(_id)
#define DNA_struct_default_get(struct_name)
@ IMA_USER_FRAME_IN_RANGE
#define IMA_NEED_FRAME_RECALC
@ IMA_ALPHA_CHANNEL_PACKED
Object is a sort of wrapper for general info.
#define R_IMF_IMTYPE_TARGA
#define R_IMF_IMTYPE_FFMPEG
#define R_IMF_IMTYPE_H264
#define R_STAMP_RENDERTIME
#define R_IMF_IMTYPE_THEORA
#define R_IMF_IMTYPE_CINEON
#define R_IMF_IMTYPE_AVIJPEG
#define R_IMF_IMTYPE_TIFF
#define R_IMF_JP2_CODEC_J2K
#define R_IMF_EXR_CODEC_ZIP
#define R_STAMP_FRAME_RANGE
#define R_IMF_IMTYPE_RAWTGA
#define R_IMF_IMTYPE_IRIZ
#define R_IMF_IMTYPE_MULTILAYER
#define R_IMF_JP2_FLAG_CINE_PRESET
#define R_IMF_IMTYPE_IRIS
#define R_STAMP_HIDE_LABELS
#define R_IMF_IMTYPE_XVID
#define R_IMF_PLANES_RGBA
#define R_IMF_CINEON_FLAG_LOG
#define STEREO_LEFT_SUFFIX
#define R_IMF_IMTYPE_AVIRAW
#define STEREO_RIGHT_NAME
#define STEREO_RIGHT_SUFFIX
#define R_IMF_IMTYPE_RADHDR
#define R_IMF_JP2_FLAG_YCC
#define R_IMF_JP2_CODEC_JP2
#define R_IMF_JP2_FLAG_CINE_48
#define R_STAMP_CAMERALENS
#define R_IMF_IMTYPE_INVALID
#define R_IMF_IMTYPE_OPENEXR
@ R_IMF_TIFF_CODEC_PACKBITS
@ R_IMF_TIFF_CODEC_DEFLATE
#define R_IMF_IMTYPE_JPEG90
#define IMG_SIZE_FALLBACK
@ USER_TIMECODE_SMPTE_FULL
_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 type
_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 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_texture_free(GPUTexture *tex)
bool IMB_colormanagement_space_name_is_data(const char *name)
void IMB_colormanagement_assign_rect_colorspace(struct ImBuf *ibuf, const char *name)
const char * IMB_colormanagement_role_colorspace_name_get(int role)
void IMB_colormanagement_check_is_data(struct ImBuf *ibuf, const char *name)
@ COLOR_ROLE_DEFAULT_FLOAT
@ COLOR_ROLE_DEFAULT_BYTE
struct ColorManagedDisplay * IMB_colormanagement_display_get_named(const char *name)
struct ImBuf * IMB_makeSingleUser(struct ImBuf *ibuf)
void IMB_freezbuffloatImBuf(struct ImBuf *ibuf)
bool IMB_scaleImBuf(struct ImBuf *ibuf, unsigned int newx, unsigned int newy)
void IMB_free_anim(struct anim *anim)
struct ImBuf * IMB_allocImBuf(unsigned int x, unsigned int y, unsigned char planes, unsigned int flags)
void IMB_freeImBuf(struct ImBuf *ibuf)
void imb_freerectImBuf(struct ImBuf *ibuf)
void IMB_ImBufFromStereo3d(struct Stereo3dFormat *s3d, struct ImBuf *ibuf_stereo, struct ImBuf **r_ibuf_left, struct ImBuf **r_ibuf_right)
void IMB_refImBuf(struct ImBuf *ibuf)
struct anim * IMB_open_anim(const char *name, int ib_flags, int streamindex, char colorspace[IM_MAX_SPACE])
void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height, const float col[4], struct ColorManagedDisplay *display, int x1, int y1, int x2, int y2)
struct ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
struct ImBuf * IMB_ibImageFromMemory(const unsigned char *mem, size_t size, int flags, char colorspace[IM_MAX_SPACE], const char *descr)
struct ImBuf * IMB_anim_absolute(struct anim *anim, int position, IMB_Timecode_Type tc, IMB_Proxy_Size preview_size)
bool IMB_saveiff(struct ImBuf *ibuf, const char *filepath, int flags)
int IMB_anim_get_duration(struct anim *anim, IMB_Timecode_Type tc)
Contains defines and structs used throughout the imbuf module.
@ IB_DISPLAY_BUFFER_INVALID
const char * imb_ext_movie[]
#define IMB_MIPMAP_LEVELS
@ IB_alphamode_channel_packed
const char * imb_ext_image[]
struct MovieCache * IMB_moviecache_create(const char *name, int keysize, GHashHashFP hashfp, GHashCmpFP cmpfp)
void IMB_moviecache_set_getdata_callback(struct MovieCache *cache, MovieCacheGetKeyDataFP getdatafp)
void IMB_moviecacheIter_free(struct MovieCacheIter *iter)
void IMB_moviecache_remove(struct MovieCache *cache, void *userkey)
void IMB_moviecache_cleanup(struct MovieCache *cache, bool(cleanup_check_cb)(struct ImBuf *ibuf, void *userkey, void *userdata), void *userdata)
struct MovieCacheIter * IMB_moviecacheIter_new(struct MovieCache *cache)
struct ImBuf * IMB_moviecache_get(struct MovieCache *cache, void *userkey)
void IMB_moviecache_put(struct MovieCache *cache, void *userkey, struct ImBuf *ibuf)
void IMB_moviecache_free(struct MovieCache *cache)
bool IMB_moviecacheIter_done(struct MovieCacheIter *iter)
void IMB_moviecacheIter_step(struct MovieCacheIter *iter)
void * IMB_moviecacheIter_getUserKey(struct MovieCacheIter *iter)
struct ImBuf * IMB_moviecacheIter_getImBuf(struct MovieCacheIter *iter)
Read Guarded memory(de)allocation.
static void init_data(ModifierData *md)
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume TEX_IMAGE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume SH_NODE_TEX_IMAGE
Group RGB to Bright Vector Camera Vector Combine Material Light Line Style Layer Add Ambient Diffuse Glossy Refraction Transparent Toon Principled Hair Volume Principled Light Particle Volume Image Sky Noise Wave Voronoi Brick Texture Vector Combine Vertex Separate Vector White RGB Map Separate Set CMP_NODE_IMAGE
Platform independent time functions.
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
struct MovieCache * cache
struct ListBase packedfiles
struct PreviewImage * preview
ColorManagedColorspaceSettings colorspace_settings
struct GPUTexture * gputexture[3][2]
ListBase gpu_refresh_areas
struct Stereo3dFormat * stereo3d_format
CCL_NAMESPACE_BEGIN struct Options options
const Depsgraph * depsgraph
DEGForeachIDComponentCallback callback
#define pf(_x, _i)
Prefetch 64.
static void image_blend_read_lib(BlendLibReader *UNUSED(reader), ID *id)
static void image_init_color_management(Image *ima)
ImBuf * BKE_image_get_first_ibuf(Image *image)
static void image_free_tile(Image *ima, ImageTile *tile)
static RenderPass * image_render_pass_get(RenderLayer *rl, const int pass, const int view, int *r_passindex)
ImageTile * BKE_image_get_tile_from_iuser(Image *ima, const ImageUser *iuser)
void BKE_image_ensure_viewer_views(const RenderData *rd, Image *ima, ImageUser *iuser)
static void image_walk_ntree_all_users(bNodeTree *ntree, ID *id, void *customdata, void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata))
bool BKE_imtype_supports_compress(const char imtype)
void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra)
RenderSlot * BKE_image_get_renderslot(Image *ima, int index)
BLI_INLINE bool image_quick_test(Image *ima, const ImageUser *iuser)
void BKE_image_alpha_mode_from_extension(Image *image)
static void image_viewer_create_views(const RenderData *rd, Image *ima)
void BKE_image_get_size_fl(Image *image, ImageUser *iuser, float r_size[2])
void BKE_image_free_buffers_ex(Image *ima, bool do_lock)
static void stampdata(const Scene *scene, Object *camera, StampData *stamp_data, int do_prefix, bool use_dynamic)
bool BKE_image_user_id_has_animation(ID *id)
static ImBuf * image_load_sequence_multilayer(Image *ima, ImageUser *iuser, int entry, int frame)
ImageTile * BKE_image_get_tile(Image *ima, int tile_number)
void BKE_image_get_aspect(Image *image, float *r_aspx, float *r_aspy)
bool BKE_image_fill_tile(struct Image *ima, ImageTile *tile, int width, int height, const float color[4], int gen_type, int planes, bool is_float)
int BKE_image_imtype_to_ftype(const char imtype, ImbFormatOptions *r_options)
int BKE_imbuf_write_stamp(Scene *scene, struct RenderResult *rr, ImBuf *ibuf, const char *name, const struct ImageFormatData *imf)
static void imagecache_keydata(void *userkey, int *framenr, int *proxy, int *render_flags)
static void metadata_copy_custom_fields(const char *field, const char *value, void *rr_v)
static void metadata_get_field(void *data, const char *propname, char *propvalue, int len)
bool BKE_image_has_multiple_ibufs(Image *image)
static void image_remove_ibuf(Image *ima, int index, int entry)
void BKE_image_release_renderresult(Scene *scene, Image *ima)
static void image_get_entry_and_index(Image *ima, ImageUser *iuser, int *r_entry, int *r_index)
static void image_init_data(ID *id)
static ImBuf * add_ibuf_size(unsigned int width, unsigned int height, const char *name, int depth, int floatbuf, short gen_type, const float color[4], ColorManagedColorspaceSettings *colorspace_settings)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
bool BKE_imtype_supports_zbuf(const char imtype)
static bool imagecache_check_free_anim(ImBuf *ibuf, void *UNUSED(userkey), void *userdata)
void BKE_stamp_info_from_imbuf(RenderResult *rr, struct ImBuf *ibuf)
bool BKE_imtype_requires_linear_float(const char imtype)
struct ImagePoolItem ImagePoolItem
static unsigned int imagecache_hashhash(const void *key_v)
static uintptr_t image_mem_size(Image *image)
bool BKE_image_clear_renderslot(Image *ima, ImageUser *iuser, int index)
static void image_tag_reload(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata)
void BKE_image_tag_time(Image *ima)
static void image_init_multilayer_multiview(Image *ima, RenderResult *rr)
void BKE_image_merge(Main *bmain, Image *dest, Image *source)
static void image_user_id_has_animation(Image *ima, ID *UNUSED(iuser_id), ImageUser *UNUSED(iuser), void *customdata)
bool BKE_image_memorypack(Image *ima)
void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath)
char BKE_imtype_valid_depths(const char imtype)
#define IMA_MAKE_INDEX(entry, index)
Image * BKE_image_load(Main *bmain, const char *filepath)
void BKE_image_packfiles_from_mem(ReportList *reports, Image *ima, char *data, const size_t data_len)
bool BKE_image_remove_tile(struct Image *ima, ImageTile *tile)
bool BKE_image_is_dirty(Image *image)
static const char * stamp_metadata_fields[]
void BKE_imbuf_stamp_info(RenderResult *rr, struct ImBuf *ibuf)
void BKE_stamp_data_free(StampData *stamp_data)
struct StampData * BKE_stamp_info_from_scene_static(const Scene *scene)
void BKE_image_free_anim_ibufs(Image *ima, int except_frame)
Image * BKE_image_add_from_imbuf(Main *bmain, ImBuf *ibuf, const char *name)
bool BKE_image_has_filepath(Image *ima)
void BKE_image_pool_free(ImagePool *pool)
int BKE_image_user_frame_get(const ImageUser *iuser, int cfra, bool *r_is_in_range)
static void image_tag_frame_recalc(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata)
static void stampdata_from_template(StampData *stamp_data, const Scene *scene, const StampData *stamp_data_template, bool do_prefix)
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
bool BKE_image_has_alpha(struct Image *image)
ImagePool * BKE_image_pool_new(void)
#define CALL(member, value_str)
static void image_user_id_eval_animation(Image *ima, ID *UNUSED(iduser_id), ImageUser *iuser, void *customdata)
struct StampData StampData
struct anim * openanim_noload(const char *name, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
Image * BKE_image_load_exists(Main *bmain, const char *filepath)
static ImBuf * image_load_sequence_file(Image *ima, ImageUser *iuser, int entry, int frame)
static void image_editors_update_frame(Image *ima, ID *UNUSED(iuser_id), ImageUser *iuser, void *customdata)
void BKE_image_free_packedfiles(Image *ima)
void BKE_image_multiview_index(Image *ima, ImageUser *iuser)
static ImBuf * image_get_cached_ibuf(Image *ima, ImageUser *iuser, int *r_entry, int *r_index)
static void image_walk_id_all_users(ID *id, bool skip_nested_nodes, void *customdata, void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata))
void BKE_image_free_buffers(Image *ima)
void BKE_imbuf_write_prepare(ImBuf *ibuf, const ImageFormatData *imf)
void BKE_image_stamp_buf(Scene *scene, Object *camera, const StampData *stamp_data_template, unsigned char *rect, float *rectf, int width, int height, int channels)
static void image_foreach_cache(ID *id, IDTypeForeachCacheFunctionCallback function_callback, void *user_data)
void BKE_image_backup_render(Scene *scene, Image *ima, bool free_current_slot)
float * BKE_image_get_float_pixels_for_frame(struct Image *image, int frame, int tile)
int BKE_image_path_ensure_ext_from_imformat(char *string, const ImageFormatData *im_format)
char BKE_imtype_from_arg(const char *imtype_arg)
void BKE_images_init(void)
StampData * BKE_stamp_data_copy(const StampData *stamp_data)
bool BKE_image_has_opengl_texture(Image *ima)
static ImBuf * image_get_ibuf_multilayer(Image *ima, ImageUser *iuser)
static void image_free_anims(Image *ima)
bool BKE_image_scale(Image *image, int width, int height)
BLI_INLINE ImBuf * image_pool_find_item(ImagePool *pool, Image *image, int entry, int index, bool *found)
bool BKE_image_is_multilayer(Image *ima)
static bool do_add_image_extension(char *string, const char imtype, const ImageFormatData *im_format)
void BKE_image_free(Image *ima)
int BKE_imbuf_write_as(ImBuf *ibuf, const char *name, ImageFormatData *imf, const bool save_copy)
int BKE_imbuf_write(ImBuf *ibuf, const char *name, const ImageFormatData *imf)
struct anim * openanim(const char *name, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
bool BKE_imbuf_alpha_test(ImBuf *ibuf)
char BKE_imtype_valid_channels(const char imtype, bool write_file)
static void image_assign_ibuf(Image *ima, ImBuf *ibuf, int index, int entry)
void BKE_image_path_from_imtype(char *string, const char *base, const char *relbase, int frame, const char imtype, const bool use_ext, const bool use_frames, const char *suffix)
static bool image_memorypack_imbuf(Image *ima, ImBuf *ibuf, const char *filepath)
void BKE_imageuser_default(ImageUser *iuser)
bool BKE_image_has_anim(Image *ima)
#define TEXT_SIZE_CHECK(str, w, h)
static void do_makepicstring(char *string, const char *base, const char *relbase, int frame, const char imtype, const ImageFormatData *im_format, const bool use_ext, const bool use_frames, const char *suffix)
RenderSlot * BKE_image_add_renderslot(Image *ima, const char *name)
static ImBuf * image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
static struct ImBuf * imagecache_get(Image *image, int index)
void BKE_image_free_all_textures(Main *bmain)
bool BKE_image_has_packedfile(Image *ima)
ImBuf * BKE_image_get_ibuf_with_name(Image *image, const char *name)
void BKE_image_get_tile_label(Image *ima, ImageTile *tile, char *label, int len_label)
bool BKE_imtype_is_movie(const char imtype)
static int imbuf_alpha_flags_for_image(Image *ima)
struct ImageCacheKey ImageCacheKey
Image * BKE_image_load_exists_ex(Main *bmain, const char *filepath, bool *r_exists)
int BKE_image_sequence_guess_offset(Image *image)
static ImBuf * image_load_image_file(Image *ima, ImageUser *iuser, int cfra)
static ImBuf * image_get_render_result(Image *ima, ImageUser *iuser, void **r_lock)
void BKE_stamp_info_callback(void *data, struct StampData *stamp_data, StampCallback callback, bool noskip)
void BKE_image_get_size(Image *image, ImageUser *iuser, int *r_width, int *r_height)
static void imagecache_put(Image *image, int index, ImBuf *ibuf)
void BKE_render_result_stamp_info(Scene *scene, Object *camera, struct RenderResult *rr, bool allocate_only)
static void image_free_data(ID *id)
void BKE_imformat_defaults(ImageFormatData *im_format)
struct ImagePool ImagePool
static void image_update_views_format(Image *ima, ImageUser *iuser)
bool BKE_image_is_openexr(struct Image *ima)
static void image_free_packedfiles(Image *ima)
static void image_init_after_load(Image *ima, ImageUser *iuser, ImBuf *UNUSED(ibuf))
char BKE_image_alpha_mode_from_extension_ex(const char *filepath)
bool BKE_imtype_supports_quality(const char imtype)
void BKE_image_free_views(Image *image)
static ImBuf * image_get_cached_ibuf_for_index_entry(Image *ima, int index, int entry)
void BKE_image_all_free_anim_ibufs(Main *bmain, int cfra)
void BKE_image_walk_all_users(const Main *mainp, void *customdata, void callback(Image *ima, ID *iuser_id, ImageUser *iuser, void *customdata))
void BKE_images_exit(void)
RenderResult * BKE_image_acquire_renderresult(Scene *scene, Image *ima)
void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal)
void BKE_render_result_stamp_data(RenderResult *rr, const char *key, const char *value)
static bool imagecache_check_dirty(ImBuf *ibuf, void *UNUSED(userkey), void *UNUSED(userdata))
static void image_blend_read_data(BlendDataReader *reader, ID *id)
int BKE_image_get_tile_from_pos(struct Image *ima, const float uv[2], float r_uv[2], float r_ofs[2])
bool BKE_image_is_animated(Image *image)
static ThreadMutex * image_mutex
bool BKE_stamp_is_known_field(const char *field_name)
bool BKE_image_remove_renderslot(Image *ima, ImageUser *iuser, int index)
RenderPass * BKE_image_multilayer_index(RenderResult *rr, ImageUser *iuser)
static bool imagecache_hashcmp(const void *a_v, const void *b_v)
static ImBuf * image_load_movie_file(Image *ima, ImageUser *iuser, int frame)
static void imagecache_remove(Image *image, int index)
void BKE_image_user_id_eval_animation(Depsgraph *depsgraph, ID *id)
static void metadata_set_field(void *data, const char *propname, char *propvalue, int UNUSED(len))
void BKE_image_mark_dirty(Image *UNUSED(image), ImBuf *ibuf)
int BKE_image_find_nearest_tile(const Image *image, const float co[2])
void BKE_image_editors_update_frame(const Main *bmain, int cfra)
char BKE_image_ftype_to_imtype(const int ftype, const ImbFormatOptions *options)
void BKE_image_init_imageuser(Image *ima, ImageUser *iuser)
void BKE_image_pool_release_ibuf(Image *ima, ImBuf *ibuf, ImagePool *pool)
#define IMA_INDEX_ENTRY(index)
#define TEXT_SIZE_CHECK_WORD_WRAP(str, w, h)
static ImBuf * load_image_single(Image *ima, ImageUser *iuser, int cfra, const int view_id, const bool has_packed, bool *r_assign)
unsigned char * BKE_image_get_pixels_for_frame(struct Image *image, int frame, int tile)
static void image_blend_write(BlendWriter *writer, ID *id, const void *id_address)
static Image * image_alloc(Main *bmain, const char *name, short source, short type)
Image * BKE_image_add_generated(Main *bmain, unsigned int width, unsigned int height, const char *name, int depth, int floatbuf, short gen_type, const float color[4], const bool stereo3d, const bool is_data, const bool tiled)
static void image_free_cached_frames(Image *image)
static void copy_image_packedfiles(ListBase *lb_dst, const ListBase *lb_src)
void BKE_image_file_format_set(Image *image, int ftype, const ImbFormatOptions *options)
static void image_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
bool BKE_image_is_multiview(Image *ima)
static ImBuf * load_sequence_single(Image *ima, ImageUser *iuser, int frame, const int view_id, bool *r_assign)
void BKE_image_user_file_path(ImageUser *iuser, Image *ima, char *filepath)
static int image_num_files(struct Image *ima)
void BKE_image_path_from_imformat(char *string, const char *base, const char *relbase, int frame, const ImageFormatData *im_format, const bool use_ext, const bool use_frames, const char *suffix)
ImageTile * BKE_image_add_tile(struct Image *ima, int tile_number, const char *label)
static int image_get_multiview_index(Image *ima, ImageUser *iuser)
ImBuf * BKE_image_pool_acquire_ibuf(Image *ima, ImageUser *iuser, ImagePool *pool)
static void image_add_view(Image *ima, const char *viewname, const char *filepath)
bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser)
struct StampDataCustomField StampDataCustomField
void BKE_imbuf_to_image_format(struct ImageFormatData *im_format, const ImBuf *imbuf)
bool BKE_image_has_loaded_ibuf(Image *image)
static ImBuf * load_movie_single(Image *ima, ImageUser *iuser, int frame, const int view_id)
bool BKE_image_is_stereo(Image *ima)
int BKE_image_path_ensure_ext_from_imtype(char *string, const char imtype)
void BKE_image_print_memlist(Main *bmain)
bool BKE_image_is_dirty_writable(Image *image, bool *r_is_writable)
static void image_init(Image *ima, short source, short type)
Image * BKE_image_ensure_viewer(Main *bmain, int type, const char *name)
bool BKE_image_buffer_format_writable(ImBuf *ibuf)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_dupallocN)(const void *vmemh)
size_t(* MEM_allocN_len)(const void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)
static void area(int d1, int d2, int e1, int e2, float weights[2])
static GPUContext * wrap(Context *ctx)
bool IMB_exr_has_multilayer(void *handle)
void IMB_exr_close(void *handle)
RenderResult * RE_AcquireResultRead(Render *re)
void RE_ReleaseResultImage(Render *re)
Render * RE_GetSceneRender(const Scene *scene)
void RE_AcquireResultImage(Render *re, RenderResult *rr, const int view_id)
void RE_ClearResult(Render *re)
void RE_SwapResult(Render *re, RenderResult **rr)
void RE_FreeRenderResult(RenderResult *rr)
void RE_ReleaseResult(Render *re)
RenderResult * RE_MultilayerConvert(void *exrhandle, const char *colorspace, bool predivide, int rectx, int recty)
RenderStats * RE_GetStats(Render *re)
bool RE_HasCombinedLayer(RenderResult *rr)
bool RE_RenderResult_is_stereo(RenderResult *rr)
_W64 unsigned int uintptr_t
struct ListBase bg_images
unsigned int id_session_uuid
struct IDProperty * metadata
struct ImBuf * mipmap[IMB_MIPMAP_LEVELS]
ImbFormatOptions foptions
unsigned char * encodedbuffer
char name[IMB_FILENAME_SIZE]
struct PackedFile * packedfile
struct ImagePackedFile * next
struct ImagePoolItem * prev
struct ImagePoolItem * next
BLI_mempool * memory_pool
struct bNodeTree * nodetree
struct bNodeTree * nodetree
struct RenderLayer * next
struct StampData * stamp_data
struct RenderResult * render
struct SceneRenderView * next
struct bNodeTree * nodetree
ColorManagedDisplaySettings display_settings
struct bNodeTree * nodetree
struct StampDataCustomField * prev
struct StampDataCustomField * next
char memory[STAMP_NAME_SIZE]
char strip[STAMP_NAME_SIZE]
char rendertime[STAMP_NAME_SIZE]
char camera[STAMP_NAME_SIZE]
char cameralens[STAMP_NAME_SIZE]
char scene[STAMP_NAME_SIZE]
struct bNodeTree * nodetree
struct bNodeTree * nodetree
long int PIL_check_seconds_timer_i(void)
const Sequence * SEQ_get_topmost_sequence(const Scene *scene, int frame)