62#include "RNA_prototypes.hh"
92 SpaceImage *sima,
ARegion *region,
float zoom,
const float location[2],
const bool zoom_to_pos)
94 float oldzoom = sima->
zoom;
99 if (sima->
zoom < 0.1f || sima->
zoom > 4.0f) {
104 height *= sima->
zoom;
106 if ((width < 4) && (height < 4) && sima->
zoom < oldzoom) {
107 sima->
zoom = oldzoom;
110 sima->
zoom = oldzoom;
113 sima->
zoom = oldzoom;
117 if (zoom_to_pos && location) {
118 float aspx, aspy,
w, h;
126 sima->
xof += ((location[0] - 0.5f) *
w - sima->
xof) * (sima->
zoom - oldzoom) / sima->
zoom;
127 sima->
yof += ((location[1] - 0.5f) * h - sima->
yof) * (sima->
zoom - oldzoom) / sima->
zoom;
134 const float location[2],
135 const bool zoom_to_pos)
151 image_size[0] = image_size[0] * aspx;
152 image_size[1] = image_size[1] * aspy;
158 float size_xy[2],
size;
162 size =
min_ff(size_xy[0], size_xy[1]);
180 return (sima) ? sima->
image :
nullptr;
196 return (sima) ? &sima->
iuser :
nullptr;
205 iuser = *iuser_context;
225 if (ima ==
nullptr) {
262 float aspx, aspy, zoomx, zoomy,
w, h;
272 float xof = 0.0f, yof = 0.0f;
275 int x_tiles, y_tiles;
276 if (sima->
image ==
nullptr) {
281 x_tiles = y_tiles = 1;
283 int tile_x = (
tile->tile_number - 1001) % 10;
284 int tile_y = (
tile->tile_number - 1001) / 10;
285 x_tiles =
max_ii(x_tiles, tile_x + 1);
286 y_tiles =
max_ii(y_tiles, tile_y + 1);
289 xof = 0.5f * (x_tiles - 1.0f) *
w;
290 yof = 0.5f * (y_tiles - 1.0f) * h;
300 const int margin = 5;
302 zoomx =
float(width) / (
w + 2 * margin);
303 zoomy =
float(height) / (h + 2 * margin);
308 if ((
w >= width || h >= height) && (width > 0 && height > 0)) {
310 zoomy =
float(height) / h;
375 vpd->
x =
event->xy[0];
376 vpd->
y =
event->xy[1];
407 sima->
xof += offset[0];
408 sima->
yof += offset[1];
421 offset[0] = (
event->prev_xy[0] -
event->xy[0]) / sima->
zoom;
422 offset[1] = (
event->prev_xy[1] -
event->xy[1]) / sima->
zoom;
439 switch (event->
type) {
443 offset[0] = (vpd->
x -
event->xy[0]) / sima->
zoom;
444 offset[1] = (vpd->
y -
event->xy[1]) / sima->
zoom;
489 "Offset in floating-point units, 1.0 is the width and height of the image",
532 vpd->
origx =
event->xy[0];
533 vpd->
origy =
event->xy[1];
595 float delta, factor, location[2];
598 ®ion->v2d, event->
mval[0], event->
mval[1], &location[0], &location[1]);
600 delta =
event->prev_xy[0] -
event->xy[0] +
event->prev_xy[1] -
event->xy[1];
606 factor = 1.0f + delta / 300.0f;
627 const short viewzoom,
628 const short zoom_invert,
629 const bool zoom_to_pos)
646 delta /=
U.pixelsize;
656 zfac = 1.0f + ((delta / 20.0f) * time_step);
662 factor = 1.0f + delta / 300.0f;
692 switch (event_code) {
748 "Zoom factor, values higher than 1.0 zoom in, lower values zoom out",
758#ifdef WITH_INPUT_NDOF
780 const wmNDOFMotionData *ndof =
static_cast<const wmNDOFMotionData *
>(
event->customdata);
783 WM_event_ndof_pan_get(ndof, pan_vec,
true);
789 sima->
xof += pan_vec[0];
790 sima->
yof += pan_vec[1];
800 ot->
name =
"NDOF Pan/Zoom";
802 ot->
description =
"Use a 3D mouse device to pan/zoom the view";
805 ot->
invoke = image_view_ndof_invoke;
891 ot->
name =
"Cursor To Center View";
893 ot->
idname =
"IMAGE_OT_view_cursor_center";
925 ot->
name =
"Center View to Cursor";
926 ot->
description =
"Center the view so that the cursor is in the middle of the view";
927 ot->
idname =
"IMAGE_OT_view_center_cursor";
956 float min[2], max[2];
959 scene, view_layer,
nullptr);
995 ot->
idname =
"IMAGE_OT_view_selected";
1031 ®ion->v2d, event->
mval[0], event->
mval[1], &location[0], &location[1]);
1043 ot->
idname =
"IMAGE_OT_view_zoom_in";
1044 ot->
description =
"Zoom in the image (centered around 2D cursor)";
1062 "Cursor location in screen coordinates",
1090 ®ion->v2d, event->
mval[0], event->
mval[1], &location[0], &location[1]);
1102 ot->
idname =
"IMAGE_OT_view_zoom_out";
1103 ot->
description =
"Zoom out the image (centered around 2D cursor)";
1121 "Cursor location in screen coordinates",
1152 ot->
name =
"View Zoom Ratio";
1153 ot->
idname =
"IMAGE_OT_view_zoom_ratio";
1170 "Zoom ratio, 1.0 is 1:1, higher is zoomed in, lower is zoomed out",
1197 sima_view_prev.xof = sima->
xof;
1198 sima_view_prev.yof = sima->
yof;
1199 sima_view_prev.zoom = sima->
zoom;
1205 sima->
xof = sima_view_prev.xof + (sima->
xof - sima_view_prev.xof);
1206 sima->
yof = sima_view_prev.yof + (sima->
yof - sima_view_prev.yof);
1207 sima->
zoom = sima_view_prev.zoom * (sima_view_prev.zoom / sima->
zoom);
1218 ot->
name =
"Zoom to Border";
1219 ot->
description =
"Zoom in the view to the nearest item contained in the border";
1220 ot->
idname =
"IMAGE_OT_view_zoom_border";
1256 op->
customdata = iod = MEM_new<ImageOpenData>(__func__);
1273 const bool use_multiview)
1275 bool exists =
false;
1276 Image *ima =
nullptr;
1287 "Cannot read '%s': %s",
1289 errno ? strerror(errno) :
RPT_(
"unsupported image format"));
1301 if (use_multiview) {
1310 ima->
flag &= ~IMA_USE_VIEWS;
1315 if (range->udims_detected && range->udim_tiles.first) {
1323 else if (range->length > 1) {
1337 Image *ima =
nullptr;
1338 int frame_seq_len = 0;
1350 Library *owner_library = owner_id ? owner_id->
lib :
nullptr;
1359 if ((ima ==
nullptr) && ima_range) {
1361 frame_seq_len = range->length;
1362 frame_ofs = range->offset;
1369 if (ima ==
nullptr) {
1391 else if (area && area->spacetype ==
SPACE_IMAGE) {
1394 iuser = &sima->
iuser;
1402 if (iuser ==
nullptr) {
1407 if (bgpic->ima == ima) {
1408 iuser = &bgpic->iuser;
1426 iuser->
offset = frame_ofs - 1;
1447 const char *path =
U.textudir;
1448 Image *ima =
nullptr;
1455 if (ima ==
nullptr) {
1462 if (ima ==
nullptr) {
1508 return !
STR_ELEM(prop_id,
"filepath",
"directory",
"filename");
1538 ot->
srna,
"allow_path_tokens",
true,
"",
"Allow the path to contain substitution tokens");
1571 "use_sequence_detection",
1574 "Automatically detect animated sequences in selected images (based on file names)");
1576 "use_udim_detecting",
1579 "Detect selected UDIM files and load all matching tiles");
1591 if (ima ==
nullptr) {
1679 ot->
name =
"Browse Image";
1681 "Open an image file browser, hold Shift to open the file, Alt to browse containing "
1683 ot->
idname =
"IMAGE_OT_file_browse";
1715 if (!ima || !iuser) {
1741 ot->
name =
"Match Movie Length";
1742 ot->
description =
"Set image's user's length to the one of this video";
1743 ot->
idname =
"IMAGE_OT_match_movie_length";
1821 ot->
name =
"Replace Image";
1823 ot->
description =
"Replace current image by another one from disk";
1952 if (isd ==
nullptr) {
1989 if (isd ==
nullptr) {
2008 return !(
STREQ(prop_id,
"filepath") ||
STREQ(prop_id,
"directory") ||
2009 STREQ(prop_id,
"filename") ||
2040 if (!save_as_render) {
2059 if (
G.is_rendering) {
2075 ot->
name =
"Save As Image";
2077 ot->
description =
"Save the image with another name and/or settings";
2097 "Save image with render color management.\n"
2098 "For display image formats like PNG, apply view and display transform.\n"
2099 "For intermediate image formats like OpenEXR, use the default render output color space");
2105 "Create a new image file without modifying the current image in Blender");
2219 ot->
description =
"Save the image with current name and settings";
2239 ImBuf *ibuf, *first_ibuf =
nullptr;
2242 MovieCacheIter *iter;
2244 if (image ==
nullptr) {
2260 if (image->cache !=
nullptr) {
2265 if (first_ibuf ==
nullptr) {
2308 ot->
name =
"Save Sequence";
2309 ot->
idname =
"IMAGE_OT_save_sequence";
2371 int num_saveable_images = 0;
2374 ima =
static_cast<Image *
>(ima->id.next))
2376 bool is_format_writable;
2381 num_saveable_images++;
2386 "Packed library image can't be saved: \"%s\" from \"%s\"",
2388 ima->id.lib->filepath);
2391 else if (!is_format_writable) {
2394 "Image can't be saved, use a different file format: \"%s\"",
2399 num_saveable_images++;
2403 "Multiple images can't be saved to an identical path: \"%s\"",
2413 "Image can't be saved, no valid file path: \"%s\"",
2421 return num_saveable_images;
2433 ima =
static_cast<Image *
>(ima->id.next))
2435 bool is_format_writable;
2441 else if (is_format_writable) {
2446 bool saved_successfully =
BKE_image_save(reports, bmain, ima,
nullptr, &opts);
2447 ok = ok && saved_successfully;
2460 return num_files > 0;
2472 ot->
name =
"Save All Modified";
2473 ot->
idname =
"IMAGE_OT_save_all_modified";
2514 ot->
name =
"Reload Image";
2531#define IMA_DEF_NAME N_("Untitled")
2569 int width, height, floatbuf, gen_type, alpha;
2580 name =
DATA_(name_buffer);
2618 if (data->pprop.prop) {
2623 if (data->pprop.ptr.owner_id) {
2659 C, op, 300,
IFACE_(
"Create a New Image"),
IFACE_(
"New Image"));
2668 const bool is_multiview = (scene->r.scemode &
R_MULTIVIEW) != 0;
2689 uiItemR(
col[1], op->
ptr,
"use_stereo_3d", 0,
nullptr, ICON_NONE);
2702 static float default_color[4] = {0.0f, 0.0f, 0.0f, 1.0f};
2721 prop =
RNA_def_int(
ot->
srna,
"width", 1024, 1, INT_MAX,
"Width",
"Image width", 1, 16384);
2723 prop =
RNA_def_int(
ot->
srna,
"height", 1024, 1, INT_MAX,
"Height",
"Image height", 1, 16384);
2726 ot->
srna,
"color", 4,
nullptr, 0.0f,
FLT_MAX,
"Color",
"Default fill color", 0.0f, 1.0f);
2735 "Fill the image with a grid for UV map testing");
2740 "Create image with 32-bit floating-point bit depth");
2743 ot->
srna,
"use_stereo_3d",
false,
"Stereo 3D",
"Create an image with left and right views");
2765 if (ibuf ==
nullptr) {
2773 if (!use_flip_x && !use_flip_y) {
2784 const int size_x = ibuf->
x;
2785 const int size_y = ibuf->
y;
2790 float *orig_float_pixels =
static_cast<float *
>(
MEM_dupallocN(float_pixels));
2791 for (
int x = 0; x < size_x; x++) {
2792 const int source_pixel_x = use_flip_x ? size_x - x - 1 :
x;
2793 for (
int y = 0; y < size_y; y++) {
2794 const int source_pixel_y = use_flip_y ? size_y - y - 1 :
y;
2796 const float *source_pixel =
2797 &orig_float_pixels[4 * (source_pixel_x + source_pixel_y * size_x)];
2798 float *target_pixel = &float_pixels[4 * (x + y * size_x)];
2812 for (
int x = 0; x < size_x; x++) {
2813 const int source_pixel_x = use_flip_x ? size_x - x - 1 :
x;
2814 for (
int y = 0; y < size_y; y++) {
2815 const int source_pixel_y = use_flip_y ? size_y - y - 1 :
y;
2817 const uchar *source_pixel =
2818 &orig_char_pixels[4 * (source_pixel_x + source_pixel_y * size_x)];
2819 uchar *target_pixel = &char_pixels[4 * (x + y * size_x)];
2864 ot->
srna,
"use_flip_x",
false,
"Horizontal",
"Flip the image horizontally");
2887 if (ibuf ==
nullptr) {
2927 {90,
"90", 0,
"90 Degrees",
"Rotate 90 degrees clockwise"},
2928 {180,
"180", 0,
"180 Degrees",
"Rotate 180 degrees clockwise"},
2929 {270,
"270", 0,
"270 Degrees",
"Rotate 270 degrees clockwise"},
2930 {0,
nullptr, 0,
nullptr,
nullptr},
2934 ot->
name =
"Rotate Image Orthogonal";
2935 ot->
idname =
"IMAGE_OT_rotate_orthogonal";
2946 orthogonal_rotation_items,
2949 "Amount of rotation in degrees (90, 180, 270)");
2965 if (ima ==
nullptr) {
2978 bool changed =
false;
3004 ot->
idname =
"IMAGE_OT_clipboard_copy";
3023 bool changed =
false;
3064 ot->
name =
"Paste Image";
3065 ot->
idname =
"IMAGE_OT_clipboard_paste";
3098 if (ibuf ==
nullptr) {
3113 for (i =
size_t(ibuf->
x) * ibuf->
y; i > 0; i--, fp += 4) {
3115 fp[0] = 1.0f - fp[0];
3118 fp[1] = 1.0f - fp[1];
3121 fp[2] = 1.0f - fp[2];
3124 fp[3] = 1.0f - fp[3];
3135 for (i =
size_t(ibuf->
x) * ibuf->
y; i > 0; i--, cp += 4) {
3137 cp[0] = 255 - cp[0];
3140 cp[1] = 255 - cp[1];
3143 cp[2] = 255 - cp[2];
3146 cp[3] = 255 - cp[3];
3180 ot->
name =
"Invert Channels";
3215 const int size[2] = {ibuf->
x, ibuf->
y};
3220 C, op, 200,
IFACE_(
"Scale Image to New Size"),
IFACE_(
"Resize"));
3231 if (ibuf ==
nullptr) {
3271 ot->
name =
"Resize Image";
3334 ot->
description =
"Pack an image as embedded data into the .blend file";
3383 "AutoPack is enabled, so image will be packed again on file save");
3421 "AutoPack is enabled, so image will be packed again on file save");
3439 ot->
name =
"Unpack Image";
3440 ot->
description =
"Save an image packed in the .blend file to disk";
3455 ot->
srna,
"id",
nullptr,
MAX_ID_NAME - 2,
"Image Name",
"Image data-block name to unpack");
3472 if (ibuf ==
nullptr) {
3484 SpaceImage *sima,
ARegion *region,
const int mval[2],
float r_col[3],
bool *r_is_data)
3489 if (sima->
image ==
nullptr) {
3500 if (ibuf ==
nullptr) {
3505 if (uv[0] >= 0.0f && uv[1] >= 0.0f && uv[0] < 1.0f && uv[1] < 1.0f) {
3508 int x =
int(uv[0] * ibuf->
x), y =
int(uv[1] * ibuf->
y);
3510 CLAMP(x, 0, ibuf->
x - 1);
3511 CLAMP(y, 0, ibuf->
y - 1);
3537 ot->
name =
"Sample Color";
3539 ot->
description =
"Use mouse to sample a color in current image";
3574 float uv1[2], uv2[2], ofs[2];
3586 if (ibuf ==
nullptr) {
3619 hist->
flag &= ~HISTO_FLAG_SAMPLELINE;
3631 ot->
name =
"Sample Line";
3632 ot->
idname =
"IMAGE_OT_sample_line";
3633 ot->
description =
"Sample a line and show it in Scope panels";
3657 {0,
"BLACK_POINT", 0,
"Black Point",
""},
3658 {1,
"WHITE_POINT", 0,
"White Point",
""},
3659 {0,
nullptr, 0,
nullptr,
nullptr},
3663 ot->
name =
"Set Curves Point";
3664 ot->
idname =
"IMAGE_OT_curves_point_set";
3665 ot->
description =
"Set black point or white point for curves";
3678 ot->
srna,
"point", point_items, 0,
"Point",
"Set black point or white point for curves");
3722 ot->
name =
"Cycle Render Slot";
3723 ot->
idname =
"IMAGE_OT_cycle_render_slot";
3724 ot->
description =
"Cycle through all non-void render slots";
3759 ot->
name =
"Clear Render Slot";
3760 ot->
idname =
"IMAGE_OT_clear_render_slot";
3761 ot->
description =
"Clear the currently selected render slot";
3792 ot->
name =
"Add Render Slot";
3793 ot->
idname =
"IMAGE_OT_add_render_slot";
3827 ot->
name =
"Remove Render Slot";
3828 ot->
idname =
"IMAGE_OT_remove_render_slot";
3848 if (
G.is_rendering) {
3862 scene->r.subframe = 0.0f;
3883 float sfra = scene->r.sfra, efra = scene->r.efra, framelen = region->winx / (efra - sfra + 1);
3885 framenr = sfra +
event->mval[0] / framelen;
3921 switch (event->
type) {
3944 ot->
name =
"Change Frame";
3945 ot->
idname =
"IMAGE_OT_change_frame";
3946 ot->
description =
"Interactively change the current frame number";
3971 if (sima->
image ==
nullptr) {
3983 ot->
name =
"Open Cached Render";
3984 ot->
idname =
"IMAGE_OT_read_viewlayers";
3985 ot->
description =
"Read all the current scene's view layers from cache, as needed";
4007 if (re ==
nullptr) {
4038 if ((border.
xmin <= 0.0f && border.
xmax >= 1.0f && border.
ymin <= 0.0f && border.
ymax >= 1.0f) ||
4041 scene->r.mode &= ~R_BORDER;
4051 scene->r.border = border;
4064 ot->
name =
"Render Region";
4065 ot->
description =
"Set the boundaries of the render region and enable render region";
4066 ot->
idname =
"IMAGE_OT_render_border";
4091 scene->r.mode &= ~R_BORDER;
4100 ot->
name =
"Clear Render Region";
4101 ot->
description =
"Clear the boundaries of the render region and disable render region";
4102 ot->
idname =
"IMAGE_OT_clear_render_border";
4150 if (
tile !=
nullptr) {
4162 if (ibuf !=
nullptr) {
4176 static float default_color[4] = {0.0f, 0.0f, 0.0f, 1.0f};
4178 srna,
"color", 4,
nullptr, 0.0f,
FLT_MAX,
"Color",
"Default fill color", 0.0f, 1.0f);
4186 "Fill the image with a grid for UV map testing");
4187 prop =
RNA_def_int(srna,
"width", 1024, 1, INT_MAX,
"Width",
"Image width", 1, 16384);
4189 prop =
RNA_def_int(srna,
"height", 1024, 1, INT_MAX,
"Height",
"Image height", 1, 16384);
4194 srna,
"float",
false,
"32-bit Float",
"Create image with 32-bit floating-point bit depth");
4195 RNA_def_boolean(srna,
"alpha",
true,
"Alpha",
"Create an image with an alpha channel");
4224 for (
int tile_number = start_tile; tile_number <= end_tile; tile_number++) {
4227 if (
tile !=
nullptr) {
4232 last_tile_created =
tile;
4237 if (!last_tile_created) {
4254 int next_number = 0;
4256 next_number =
tile->tile_number + 1;
4257 if (
tile->next ==
nullptr ||
tile->next->tile_number > next_number) {
4272 IFACE_(
"Add Tile to Image"),
4317 "UDIM number of the tile",
4320 RNA_def_int(
ot->
srna,
"count", 1, 1, INT_MAX,
"Count",
"How many tiles to add", 1, 1000);
4359 ot->
name =
"Remove Tile";
4361 ot->
idname =
"IMAGE_OT_tile_remove";
4407 C, op, 300,
IFACE_(
"Fill Tile With Generated Image"),
IFACE_(
"Fill"));
4419 ot->
description =
"Fill the current tile with a generated image";
Image * CTX_data_edit_image(const bContext *C)
SpaceImage * CTX_wm_space_image(const bContext *C)
PointerRNA CTX_data_pointer_get_type(const bContext *C, const char *member, StructRNA *type)
void CTX_wm_operator_poll_msg_set(bContext *C, const char *msg)
ScrArea * CTX_wm_area(const bContext *C)
wmWindow * CTX_wm_window(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Object * CTX_data_edit_object(const bContext *C)
Main * CTX_data_main(const bContext *C)
ARegion * CTX_wm_region(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
ViewLayer * CTX_data_view_layer(const bContext *C)
void BKE_icon_changed(int icon_id)
int BKE_icon_id_ensure(struct ID *id)
int BKE_image_get_tile_from_pos(Image *ima, const float uv[2], float r_uv[2], float r_ofs[2])
RenderSlot * BKE_image_get_renderslot(Image *ima, int index)
ImBuf * BKE_image_acquire_ibuf(Image *ima, ImageUser *iuser, void **r_lock)
void BKE_image_user_frame_calc(Image *ima, ImageUser *iuser, int cfra)
bool BKE_image_has_filepath(const Image *ima)
void BKE_image_mark_dirty(Image *image, ImBuf *ibuf)
Image * BKE_image_load_exists_in_lib(Main *bmain, std::optional< Library * > owner_library, const char *filepath, bool *r_exists=nullptr)
Image * BKE_image_ensure_viewer(Main *bmain, int type, const char *name)
bool BKE_image_fill_tile(Image *ima, ImageTile *tile)
void BKE_image_release_ibuf(Image *ima, ImBuf *ibuf, void *lock)
RenderSlot * BKE_image_add_renderslot(Image *ima, const char *name)
void BKE_image_user_file_path(const ImageUser *iuser, const Image *ima, char *filepath)
bool BKE_image_memorypack(Image *ima)
void BKE_image_packfiles(ReportList *reports, Image *ima, const char *basepath)
bool BKE_image_is_dirty(Image *image)
Image * BKE_image_add_from_imbuf(Main *bmain, ImBuf *ibuf, const char *name)
void BKE_image_sort_tiles(Image *ima)
bool BKE_image_has_anim(Image *image)
void BKE_imageuser_default(ImageUser *iuser)
#define IMA_SIGNAL_SRC_CHANGE
bool BKE_image_is_multiview(const Image *ima)
#define IMA_SIGNAL_USER_NEW_IMAGE
void BKE_image_ensure_tile_token(char *filepath, size_t filepath_maxncpy)
#define IMA_SIGNAL_RELOAD
void BKE_image_free_views(Image *image)
bool BKE_image_has_packedfile(const Image *image)
bool BKE_image_remove_renderslot(Image *ima, ImageUser *iuser, int slot)
void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal)
bool BKE_image_clear_renderslot(Image *ima, ImageUser *iuser, int slot)
void BKE_image_init_imageuser(Image *ima, ImageUser *iuser)
ImageTile * BKE_image_add_tile(Image *ima, int tile_number, const char *label)
bool BKE_image_remove_tile(Image *ima, ImageTile *tile)
bool BKE_image_has_ibuf(Image *ima, ImageUser *iuser)
void BKE_image_partial_update_mark_full_update(Image *image)
Mark the whole image to be updated.
void BKE_image_free_packedfiles(Image *image)
bool BKE_image_is_dirty_writable(Image *image, bool *r_is_writable)
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], bool stereo3d, bool is_data, bool tiled)
bool BKE_image_buffer_format_writable(ImBuf *ibuf)
bool BKE_image_save(ReportList *reports, Main *bmain, Image *ima, ImageUser *iuser, const ImageSaveOptions *opts)
bool BKE_image_save_options_init(ImageSaveOptions *opts, Main *bmain, Scene *scene, Image *ima, ImageUser *iuser, const bool guess_path, const bool save_as_render)
void BKE_image_save_options_update(ImageSaveOptions *opts, const Image *image)
void BKE_image_save_options_free(ImageSaveOptions *opts)
blender::Vector< Object * > BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs(const Scene *scene, ViewLayer *view_layer, const View3D *v3d)
void BKE_id_move_to_same_lib(Main &bmain, ID &id, const ID &owner_id)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
int BKE_packedfile_unpack_image(Main *bmain, ReportList *reports, Image *ima, enum ePF_FileStatus how)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_reports_free(ReportList *reports)
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_reports_init(ReportList *reports, int flag)
void BKE_render_resolution(const RenderData *r, const bool use_crop, int *r_width, int *r_height)
File and directory operations.
int BLI_exists(const char *path) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_file_is_writable(const char *filepath) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
bool BLI_gset_haskey(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
GSet * BLI_gset_str_new(const char *info)
void BLI_gset_insert(GSet *gs, void *key)
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void * BLI_findstring(const struct ListBase *listbase, const char *id, int offset) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
void * BLI_findlink(const struct ListBase *listbase, int number) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void void BLI_INLINE bool BLI_listbase_is_single(const struct ListBase *lb)
int BLI_findindex(const struct ListBase *listbase, const void *vlink) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
int BLI_listbase_count(const struct ListBase *listbase) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1)
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 min_ff(float a, float b)
MINLINE int max_ii(int a, int b)
MINLINE float power_of_2(float f)
void rgb_uchar_to_float(float r_col[3], const unsigned char col_ub[3])
MINLINE void copy_v4_v4(float r[4], const float a[4])
MINLINE void sub_v2_v2(float r[2], const float a[2])
MINLINE void copy_v4_v4_uchar(unsigned char r[4], const unsigned char a[4])
MINLINE void mul_v2_fl(float r[2], float f)
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
bool BLI_path_extension_check_array(const char *path, const char **ext_array) ATTR_NONNULL(1
bool BLI_path_is_rel(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
void void BLI_path_split_dir_part(const char *filepath, char *dir, size_t dir_maxncpy) ATTR_NONNULL(1
bool void BLI_path_rel(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1)
const char * BLI_path_slash_rfind(const char *path) ATTR_NONNULL(1) ATTR_WARN_UNUSED_RESULT
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE float BLI_rctf_cent_y(const struct rctf *rct)
BLI_INLINE float BLI_rctf_cent_x(const struct rctf *rct)
void BLI_rctf_scale(rctf *rect, float scale)
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_rctf_size_x(const struct rctf *rct)
BLI_INLINE float BLI_rctf_size_y(const struct rctf *rct)
char * BLI_strdup(const char *str) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC
#define STRNCPY(dst, src)
Platform independent time functions.
double BLI_time_now_seconds(void)
#define POINTER_AS_INT(i)
#define CTX_IFACE_(context, msgid)
#define BLT_I18NCONTEXT_OPERATOR_DEFAULT
void DEG_id_tag_update(ID *id, unsigned int flags)
#define ID_IS_LINKED(_id)
#define ID_BLEND_PATH(_bmain, _id)
#define ID_IS_EDITABLE(_id)
Object is a sort of wrapper for general info.
#define FRAMENUMBER_MIN_CLAMP(cfra)
#define NDOF_PIXELS_PER_SECOND
void ED_space_image_release_buffer(SpaceImage *sima, ImBuf *ibuf, void *lock)
void ED_space_image_get_size(SpaceImage *sima, int *r_width, int *r_height)
ImBuf * ED_space_image_acquire_buffer(SpaceImage *sima, void **r_lock, int tile)
bool ED_space_image_check_show_maskedit(SpaceImage *sima, Object *obedit)
void ED_space_image_set(Main *bmain, SpaceImage *sima, Image *ima, bool automatic)
ListBase ED_image_filesel_detect_sequences(blender::StringRefNull root_path, wmOperator *op, bool detect_udim)
bool ED_space_image_has_buffer(SpaceImage *sima)
bool ED_space_image_show_uvedit(const SpaceImage *sima, Object *obedit)
bool ED_image_slot_cycle(Image *image, int direction)
void ED_space_image_get_aspect(SpaceImage *sima, float *r_aspx, float *r_aspy)
bool ED_space_image_cursor_poll(bContext *C)
Image * ED_space_image(const SpaceImage *sima)
void ED_image_view_center_to_point(SpaceImage *sima, float x, float y)
bool ED_space_image_show_cache_and_mval_over(const SpaceImage *sima, ARegion *region, const int mval[2])
bool ED_mask_selected_minmax(const bContext *C, float min[2], float max[2], bool handles_as_control_point)
bool ED_maskedit_poll(bContext *C)
void ED_image_undo_push_begin_with_image(const char *name, Image *image, ImBuf *ibuf, ImageUser *iuser)
void ED_image_undo_push_end()
void ED_imapaint_clear_partial_redraw()
void ED_preview_kill_jobs(wmWindowManager *wm, Main *bmain)
void ED_area_tag_redraw(ScrArea *area)
void ED_region_tag_redraw(ARegion *region)
bool ED_operator_uvedit(bContext *C)
void ED_undo_push_op(bContext *C, wmOperator *op)
void unpack_menu(bContext *C, const char *opname, const char *id_name, const char *abs_name, const char *folder, PackedFile *pf)
void ED_imbuf_sample_cancel(bContext *C, wmOperator *op)
int ED_imbuf_sample_invoke(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_imbuf_sample_poll(bContext *C)
int ED_imbuf_sample_modal(bContext *C, wmOperator *op, const wmEvent *event)
bool ED_uvedit_minmax_multi(const Scene *scene, blender::Span< Object * > objects_edit, float r_min[2], float r_max[2])
void IMB_colormanagement_colorspace_to_scene_linear_v3(float pixel[3], ColorSpace *colorspace)
void IMB_rect_from_float(ImBuf *ibuf)
bool IMB_rotate_orthogonal(ImBuf *ibuf, int degrees)
int IMB_anim_get_duration(ImBufAnim *anim, IMB_Timecode_Type tc)
bool IMB_scale(ImBuf *ibuf, unsigned int newx, unsigned int newy, IMBScaleFilter filter, bool threaded=true)
Contains defines and structs used throughout the imbuf module.
const char * imb_ext_movie[]
@ IMB_COLORMANAGE_IS_DATA
@ IB_DISPLAY_BUFFER_INVALID
MovieCacheIter * IMB_moviecacheIter_new(MovieCache *cache)
void IMB_moviecacheIter_free(MovieCacheIter *iter)
bool IMB_moviecacheIter_done(MovieCacheIter *iter)
void IMB_moviecacheIter_step(MovieCacheIter *iter)
ImBuf * IMB_moviecacheIter_getImBuf(MovieCacheIter *iter)
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 Brightness Control the brightness and contrast of the input color Vector Map input vector components with curves 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 Invert a color
void uiItemL(uiLayout *layout, const char *name, int icon)
void uiTemplateImageSettings(uiLayout *layout, PointerRNA *imfptr, bool color_management)
void uiLayoutSetPropSep(uiLayout *layout, bool is_sep)
void uiItemS(uiLayout *layout)
@ UI_BUT_LABEL_ALIGN_NONE
eAutoPropButsReturn uiDefAutoButsRNA(uiLayout *layout, PointerRNA *ptr, bool(*check_prop)(PointerRNA *ptr, PropertyRNA *prop, void *user_data), void *user_data, PropertyRNA *prop_activate_init, eButLabelAlign label_align, bool compact)
void UI_context_active_but_prop_get_templateID(const bContext *C, PointerRNA *r_ptr, PropertyRNA **r_prop)
void uiLayoutSetPropDecorate(uiLayout *layout, bool is_sep)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiTemplateImageFormatViews(uiLayout *layout, PointerRNA *imfptr, PointerRNA *ptr)
void uiItemR(uiLayout *layout, PointerRNA *ptr, const char *propname, eUI_Item_Flag flag, const char *name, int icon)
void UI_view2d_region_to_view(const View2D *v2d, float x, float y, float *r_view_x, float *r_view_y) ATTR_NONNULL()
void UI_view2d_region_to_view_rctf(const View2D *v2d, const rctf *rect_src, rctf *rect_dst) ATTR_NONNULL()
#define ND_RENDER_OPTIONS
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
static btDbvtVolume bounds(btDbvtNode **leaves, int count)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
input_tx image(0, GPU_RGBA16F, Qualifier::WRITE, ImageType::FLOAT_2D, "preview_img") .compute_source("compositor_compute_preview.glsl") .do_static_compilation(true)
local_group_size(16, 16) .push_constant(Type b
draw_view in_light_buf[] float
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
bool IMB_saveiff(struct ImBuf *, const char *, int)
void IMB_freeImBuf(ImBuf *)
void IMAGE_OT_view_cursor_center(wmOperatorType *ot)
static bool tile_remove_poll(bContext *C)
void IMAGE_OT_change_frame(wmOperatorType *ot)
int ED_image_save_all_modified_info(const Main *bmain, ReportList *reports)
static void image_filesel(bContext *C, wmOperator *op, const char *path)
void IMAGE_OT_save_sequence(wmOperatorType *ot)
static bool save_image_op(Main *bmain, Image *ima, ImageUser *iuser, wmOperator *op, const ImageSaveOptions *opts)
static bool image_has_valid_path(Image *ima)
static bool image_should_be_saved(Image *ima, bool *r_is_format_writable)
void IMAGE_OT_view_zoom(wmOperatorType *ot)
void IMAGE_OT_cycle_render_slot(wmOperatorType *ot)
static int image_scale_exec(bContext *C, wmOperator *op)
void IMAGE_OT_match_movie_length(wmOperatorType *ot)
static int clear_render_border_exec(bContext *C, wmOperator *)
static void tile_add_draw(bContext *, wmOperator *op)
void IMAGE_OT_save_all_modified(wmOperatorType *ot)
void IMAGE_OT_save_as(wmOperatorType *ot)
static void image_save_options_from_op(Main *bmain, ImageSaveOptions *opts, wmOperator *op)
static int image_sample_line_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static bool image_view_selected_poll(bContext *C)
void IMAGE_OT_sample(wmOperatorType *ot)
static int image_save_sequence_exec(bContext *C, wmOperator *op)
static bool image_open_draw_check_prop(PointerRNA *, PropertyRNA *prop, void *)
static void sima_zoom_set_factor(SpaceImage *sima, ARegion *region, float zoomfac, const float location[2], const bool zoom_to_pos)
static void image_new_cancel(bContext *, wmOperator *op)
static int image_view_selected_exec(bContext *C, wmOperator *)
static int change_frame_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static void image_view_pan_exit(bContext *C, wmOperator *op, bool cancel)
static int image_view_zoom_in_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int image_reload_exec(bContext *C, wmOperator *)
bool ED_image_should_save_modified(const Main *bmain)
static void image_save_as_draw(bContext *, wmOperator *op)
static void image_view_zoom_cancel(bContext *C, wmOperator *op)
static void def_fill_tile(StructOrFunctionRNA *srna)
static Image * image_from_context(const bContext *C)
void IMAGE_OT_tile_fill(wmOperatorType *ot)
static bool tile_add_poll(bContext *C)
static int image_view_zoom_out_exec(bContext *C, wmOperator *op)
void IMAGE_OT_remove_render_slot(wmOperatorType *ot)
static bool image_clipboard_paste_poll(bContext *C)
static bool image_save_as_check(bContext *C, wmOperator *op)
static bool do_fill_tile(PointerRNA *ptr, Image *ima, ImageTile *tile)
static int image_file_browse_exec(bContext *C, wmOperator *op)
static int image_view_zoom_exec(bContext *C, wmOperator *op)
void IMAGE_OT_view_zoom_border(wmOperatorType *ot)
static int image_sample_line_exec(bContext *C, wmOperator *op)
static int image_view_zoom_in_exec(bContext *C, wmOperator *op)
static int image_open_exec(bContext *C, wmOperator *op)
static bool image_from_context_has_data_poll(bContext *C)
static bool tile_fill_poll(bContext *C)
void IMAGE_OT_reload(wmOperatorType *ot)
static int image_save_as_exec(bContext *C, wmOperator *op)
void IMAGE_OT_unpack(wmOperatorType *ot)
void IMAGE_OT_view_selected(wmOperatorType *ot)
void IMAGE_OT_tile_add(wmOperatorType *ot)
void IMAGE_OT_pack(wmOperatorType *ot)
void IMAGE_OT_open(wmOperatorType *ot)
void IMAGE_OT_read_viewlayers(wmOperatorType *ot)
static void image_view_all(SpaceImage *sima, ARegion *region, wmOperator *op)
static void image_operator_prop_allow_tokens(wmOperatorType *ot)
static bool image_save_as_poll(bContext *C)
static bool image_clipboard_copy_poll(bContext *C)
void IMAGE_OT_invert(wmOperatorType *ot)
static void image_open_cancel(bContext *, wmOperator *op)
void IMAGE_OT_resize(wmOperatorType *ot)
void IMAGE_OT_clear_render_slot(wmOperatorType *ot)
static int image_view_zoom_ratio_exec(bContext *C, wmOperator *op)
void IMAGE_OT_view_zoom_in(wmOperatorType *ot)
void IMAGE_OT_view_zoom_out(wmOperatorType *ot)
static int image_file_browse_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int image_cycle_render_slot_exec(bContext *C, wmOperator *op)
void IMAGE_OT_rotate_orthogonal(wmOperatorType *ot)
static void tile_fill_draw(bContext *, wmOperator *op)
void IMAGE_OT_view_all(wmOperatorType *ot)
void IMAGE_OT_render_border(wmOperatorType *ot)
void IMAGE_OT_view_pan(wmOperatorType *ot)
@ GEN_CONTEXT_PAINT_CANVAS
@ GEN_CONTEXT_PAINT_STENCIL
static int image_invert_exec(bContext *C, wmOperator *op)
static int frame_from_event(bContext *C, const wmEvent *event)
static int image_remove_render_slot_exec(bContext *C, wmOperator *)
static void draw_fill_tile(PointerRNA *ptr, uiLayout *layout)
static int image_view_zoom_out_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void IMAGE_OT_clipboard_copy(wmOperatorType *ot)
static int image_view_zoom_border_exec(bContext *C, wmOperator *op)
static int image_scale_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void image_view_zoom_init(bContext *C, wmOperator *op, const wmEvent *event)
static bool image_not_packed_poll(bContext *C)
static int image_add_render_slot_exec(bContext *C, wmOperator *)
static void image_save_as_free(wmOperator *op)
static int change_frame_exec(bContext *C, wmOperator *op)
static bool image_file_format_writable(Image *ima, ImageUser *iuser)
static bool image_should_be_saved_when_modified(Image *ima)
void IMAGE_OT_save(wmOperatorType *ot)
static void image_save_as_cancel(bContext *, wmOperator *op)
static int tile_remove_exec(bContext *C, wmOperator *)
static int image_view_all_exec(bContext *C, wmOperator *op)
static void image_open_draw(bContext *, wmOperator *op)
void IMAGE_OT_file_browse(wmOperatorType *ot)
static void image_view_pan_init(bContext *C, wmOperator *op, const wmEvent *event)
static int image_new_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int tile_add_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int image_rotate_orthogonal_exec(bContext *C, wmOperator *op)
static void image_view_zoom_exit(bContext *C, wmOperator *op, bool cancel)
static ImageSaveData * image_save_as_init(bContext *C, wmOperator *op)
static int tile_fill_exec(bContext *C, wmOperator *op)
void IMAGE_OT_clipboard_paste(wmOperatorType *ot)
static bool image_cycle_render_slot_poll(bContext *C)
static int image_view_pan_modal(bContext *C, wmOperator *op, const wmEvent *event)
static int image_clipboard_paste_exec(bContext *C, wmOperator *op)
static bool image_save_as_draw_check_prop(PointerRNA *ptr, PropertyRNA *prop, void *user_data)
static int image_save_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void IMAGE_OT_add_render_slot(wmOperatorType *ot)
void IMAGE_OT_tile_remove(wmOperatorType *ot)
static int render_border_exec(bContext *C, wmOperator *op)
static int image_clipboard_copy_exec(bContext *C, wmOperator *op)
static int image_replace_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void image_open_init(bContext *C, wmOperator *op)
static void tile_fill_init(PointerRNA *ptr, Image *ima, ImageTile *tile)
static int image_view_pan_exec(bContext *C, wmOperator *op)
static int image_save_exec(bContext *C, wmOperator *op)
static int image_clear_render_slot_exec(bContext *C, wmOperator *)
static int change_frame_modal(bContext *C, wmOperator *op, const wmEvent *event)
bool space_image_main_region_poll(bContext *C)
bool ED_space_image_get_position(SpaceImage *sima, ARegion *region, const int mval[2], float r_fpos[2])
static int image_read_viewlayers_exec(bContext *C, wmOperator *)
static int image_view_pan_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int view_center_cursor_exec(bContext *C, wmOperator *)
static Image * image_open_single(Main *bmain, Library *owner_library, wmOperator *op, const ImageFrameRange *range, const bool use_multiview)
void IMAGE_OT_flip(wmOperatorType *ot)
static bool image_save_all_modified_poll(bContext *C)
static bool image_should_pack_during_save_all(const Image *ima)
void IMAGE_OT_sample_line(wmOperatorType *ot)
void IMAGE_OT_replace(wmOperatorType *ot)
static void sima_zoom_set_from_bounds(SpaceImage *sima, ARegion *region, const rctf *bounds)
static int image_new_exec(bContext *C, wmOperator *op)
static bool change_frame_poll(bContext *C)
static ImageNewData * image_new_init(bContext *C, wmOperator *op)
static bool image_save_poll(bContext *C)
static void image_view_pan_cancel(bContext *C, wmOperator *op)
static void sima_zoom_set(SpaceImage *sima, ARegion *region, float zoom, const float location[2], const bool zoom_to_pos)
static int image_unpack_exec(bContext *C, wmOperator *op)
static int image_view_zoom_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static int image_replace_exec(bContext *C, wmOperator *op)
static int image_unpack_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int image_open_invoke(bContext *C, wmOperator *op, const wmEvent *)
void IMAGE_OT_view_center_cursor(wmOperatorType *ot)
bool ED_image_save_all_modified(const bContext *C, ReportList *reports)
void IMAGE_OT_view_zoom_ratio(wmOperatorType *ot)
static int image_save_all_modified_exec(bContext *C, wmOperator *op)
static int tile_fill_invoke(bContext *C, wmOperator *op, const wmEvent *)
static int image_pack_exec(bContext *C, wmOperator *op)
static void image_new_draw(bContext *, wmOperator *op)
static ImageUser image_user_from_context_and_active_tile(const bContext *C, Image *ima)
void IMAGE_OT_new(wmOperatorType *ot)
static int image_view_zoom_modal(bContext *C, wmOperator *op, const wmEvent *event)
static int image_save_as_invoke(bContext *C, wmOperator *op, const wmEvent *)
static void change_frame_apply(bContext *C, wmOperator *op)
static int view_cursor_center_exec(bContext *C, wmOperator *op)
bool ED_space_image_color_sample(SpaceImage *sima, ARegion *region, const int mval[2], float r_col[3], bool *r_is_data)
static bool image_file_browse_poll(bContext *C)
static ImageUser * image_user_from_context(const bContext *C)
static void image_new_free(wmOperator *op)
void IMAGE_OT_clear_render_border(wmOperatorType *ot)
static bool space_image_main_area_not_uv_brush_poll(bContext *C)
static int image_match_len_exec(bContext *C, wmOperator *)
static int tile_add_exec(bContext *C, wmOperator *op)
static bool image_pack_test(bContext *C, wmOperator *op)
void IMAGE_OT_curves_point_set(wmOperatorType *ot)
static bool image_from_context_editable_has_data_poll_active_tile(bContext *C)
static int image_flip_exec(bContext *C, wmOperator *op)
static void image_zoom_apply(ViewZoomData *vpd, wmOperator *op, const int x, const int y, const short viewzoom, const short zoom_invert, const bool zoom_to_pos)
RenderData * RE_engine_get_render_data(Render *re)
ccl_global const KernelWorkTile * tile
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_dupallocN)(const void *vmemh)
void RNA_string_set(PointerRNA *ptr, const char *name, const char *value)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_struct_find_property(PointerRNA *ptr, const char *identifier)
void RNA_property_pointer_set(PointerRNA *ptr, PropertyRNA *prop, PointerRNA ptr_value, ReportList *reports)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
bool RNA_property_is_set(PointerRNA *ptr, PropertyRNA *prop)
void RNA_int_set(PointerRNA *ptr, const char *name, int value)
PointerRNA RNA_property_pointer_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_float_get_array(PointerRNA *ptr, const char *name, float *values)
void RNA_property_update(bContext *C, PointerRNA *ptr, PropertyRNA *prop)
void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
int RNA_int_get(PointerRNA *ptr, const char *name)
char * RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen, int *r_len)
void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, bool value)
float RNA_float_get(PointerRNA *ptr, const char *name)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *values)
std::string RNA_property_string_get(PointerRNA *ptr, PropertyRNA *prop)
void RNA_property_int_get_array(PointerRNA *ptr, PropertyRNA *prop, int *values)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
bool RNA_boolean_get(PointerRNA *ptr, const char *name)
void RNA_float_set_array(PointerRNA *ptr, const char *name, const float *values)
PointerRNA RNA_pointer_create(ID *id, StructRNA *type, void *data)
int RNA_enum_get(PointerRNA *ptr, const char *name)
const char * RNA_property_identifier(const PropertyRNA *prop)
PointerRNA RNA_id_pointer_create(ID *id)
void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *value)
PropertyRNA * RNA_def_string(StructOrFunctionRNA *cont_, const char *identifier, const char *default_value, const int maxlen, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_float_color(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, const float default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_float_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const float *default_value, const float hardmin, const float hardmax, const char *ui_name, const char *ui_description, const float softmin, const float softmax)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_int_vector(StructOrFunctionRNA *cont_, const char *identifier, const int len, const int *default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, const bool default_value, const char *ui_name, const char *ui_description)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_subtype(PropertyRNA *prop, PropertySubType subtype)
void RNA_def_property_float_array_default(PropertyRNA *prop, const float *array)
PropertyRNA * RNA_def_int(StructOrFunctionRNA *cont_, const char *identifier, const int default_value, const int hardmin, const int hardmax, const char *ui_name, const char *ui_description, const int softmin, const int softmax)
const EnumPropertyItem rna_enum_image_generated_type_items[]
const EnumPropertyItem rna_enum_unpack_method_items[]
Render * RE_GetSceneRender(const Scene *scene)
bool RE_ReadRenderResult(Scene *scene, Scene *scenode)
struct ListBase bg_images
char filepath[IMB_FILEPATH_SIZE]
ImBufFloatBuffer float_buffer
ImBufByteBuffer byte_buffer
ImBuf * mipmap[IMB_MIPMAP_LEVELS]
ImageFormatData im_format
ImageFormatData im_format
struct ListBase packedfiles
struct Stereo3dFormat * stereo3d_format
struct Library_Runtime runtime
struct RenderResult * render
struct Histogram sample_line_hist
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
int(* modal)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
bool(* check)(bContext *C, wmOperator *op)
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
void(* ui)(bContext *C, wmOperator *op)
void(* cancel)(bContext *C, wmOperator *op)
struct ReportList * reports
struct wmOperatorType * type
void WM_cursor_modal_set(wmWindow *win, int val)
void WM_cursor_modal_restore(wmWindow *win)
void WM_cursor_wait(bool val)
int WM_userdef_event_type_from_keymap_type(int kmitype)
void WM_event_add_fileselect(bContext *C, wmOperator *op)
void WM_main_add_notifier(uint type, void *reference)
wmEventHandler_Op * WM_event_add_modal_handler(bContext *C, wmOperator *op)
int WM_operator_name_call_ptr(bContext *C, wmOperatorType *ot, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
int WM_operator_name_call(bContext *C, const char *opstring, wmOperatorCallContext context, PointerRNA *properties, const wmEvent *event)
void WM_gesture_box_cancel(bContext *C, wmOperator *op)
int WM_gesture_straightline_invoke(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_box_invoke(bContext *C, wmOperator *op, const wmEvent *event)
void WM_gesture_straightline_cancel(bContext *C, wmOperator *op)
int WM_gesture_straightline_modal(bContext *C, wmOperator *op, const wmEvent *event)
int WM_gesture_box_modal(bContext *C, wmOperator *op, const wmEvent *event)
void WM_operator_properties_border_to_rctf(wmOperator *op, rctf *r_rect)
void WM_operator_properties_gesture_straightline(wmOperatorType *ot, int cursor)
void WM_operator_properties_border(wmOperatorType *ot)
void WM_operator_properties_filesel(wmOperatorType *ot, const int filter, const short type, const eFileSel_Action action, const eFileSel_Flag flag, const short display, const short sort)
void WM_operator_properties_use_cursor_init(wmOperatorType *ot)
void WM_operator_properties_gesture_box_zoom(wmOperatorType *ot)
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)
int WM_operator_props_dialog_popup(bContext *C, wmOperator *op, int width, std::optional< std::string > title, std::optional< std::string > confirm_text, const bool cancel_default)
bool WM_operator_filesel_ensure_ext_imtype(wmOperator *op, const ImageFormatData *im_format)
void WM_operator_properties_create_ptr(PointerRNA *ptr, wmOperatorType *ot)
void WM_operator_properties_free(PointerRNA *ptr)
ImBuf * WM_clipboard_image_get()
bool WM_clipboard_image_set(ImBuf *ibuf)
bool WM_clipboard_image_available()
void WM_event_timer_remove(wmWindowManager *wm, wmWindow *, wmTimer *timer)
wmTimer * WM_event_timer_add(wmWindowManager *wm, wmWindow *win, const int event_type, const double time_step)