Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_node/drawnode.cc
| Show First 20 Lines • Show All 1,089 Lines • ▼ Show 20 Lines | static void node_composit_buts_image_ex(uiLayout *layout, bContext *C, PointerRNA *ptr) | ||||
| bNode *node = (bNode *)ptr->data; | bNode *node = (bNode *)ptr->data; | ||||
| PointerRNA iuserptr; | PointerRNA iuserptr; | ||||
| RNA_pointer_create(ptr->owner_id, &RNA_ImageUser, node->storage, &iuserptr); | RNA_pointer_create(ptr->owner_id, &RNA_ImageUser, node->storage, &iuserptr); | ||||
| uiLayoutSetContextPointer(layout, "image_user", &iuserptr); | uiLayoutSetContextPointer(layout, "image_user", &iuserptr); | ||||
| uiTemplateImage(layout, C, ptr, "image", &iuserptr, false, true); | uiTemplateImage(layout, C, ptr, "image", &iuserptr, false, true); | ||||
| } | } | ||||
| static void node_composit_buts_viewlayers(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| uiLayout *col, *row; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "scene", | |||||
| nullptr, | |||||
| nullptr, | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| if (!node->id) { | |||||
| return; | |||||
| } | |||||
| col = uiLayoutColumn(layout, false); | |||||
| row = uiLayoutRow(col, true); | |||||
| uiItemR(row, ptr, "layer", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| PropertyRNA *prop = RNA_struct_find_property(ptr, "layer"); | |||||
| const char *layer_name; | |||||
| if (!(RNA_property_enum_identifier( | |||||
| C, ptr, prop, RNA_property_enum_get(ptr, prop), &layer_name))) { | |||||
| return; | |||||
| } | |||||
| PointerRNA scn_ptr; | |||||
| char scene_name[MAX_ID_NAME - 2]; | |||||
| scn_ptr = RNA_pointer_get(ptr, "scene"); | |||||
| RNA_string_get(&scn_ptr, "name", scene_name); | |||||
| PointerRNA op_ptr; | |||||
| uiItemFullO( | |||||
| row, "RENDER_OT_render", "", ICON_RENDER_STILL, nullptr, WM_OP_INVOKE_DEFAULT, 0, &op_ptr); | |||||
| RNA_string_set(&op_ptr, "layer", layer_name); | |||||
| RNA_string_set(&op_ptr, "scene", scene_name); | |||||
| } | |||||
| static void node_composit_buts_blur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col, *row; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| const int filter = RNA_enum_get(ptr, "filter_type"); | |||||
| const int reference = RNA_boolean_get(ptr, "use_variable_size"); | |||||
| uiItemR(col, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| if (filter != R_FILTER_FAST_GAUSS) { | |||||
| uiItemR(col, ptr, "use_variable_size", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (!reference) { | |||||
| uiItemR(col, ptr, "use_bokeh", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| uiItemR(col, ptr, "use_gamma_correction", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| uiItemR(col, ptr, "use_relative", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_boolean_get(ptr, "use_relative")) { | |||||
| uiItemL(col, IFACE_("Aspect Correction"), ICON_NONE); | |||||
| row = uiLayoutRow(layout, true); | |||||
| uiItemR(row, ptr, "aspect_correction", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "factor_x", DEFAULT_FLAGS, IFACE_("X"), ICON_NONE); | |||||
| uiItemR(col, ptr, "factor_y", DEFAULT_FLAGS, IFACE_("Y"), ICON_NONE); | |||||
| } | |||||
| else { | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "size_x", DEFAULT_FLAGS, IFACE_("X"), ICON_NONE); | |||||
| uiItemR(col, ptr, "size_y", DEFAULT_FLAGS, IFACE_("Y"), ICON_NONE); | |||||
| } | |||||
| uiItemR(col, ptr, "use_extended_bounds", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_dblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| uiItemR(layout, ptr, "iterations", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "use_wrap", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemL(col, IFACE_("Center:"), ICON_NONE); | |||||
| uiItemR(col, ptr, "center_x", DEFAULT_FLAGS, IFACE_("X"), ICON_NONE); | |||||
| uiItemR(col, ptr, "center_y", DEFAULT_FLAGS, IFACE_("Y"), ICON_NONE); | |||||
| uiItemS(layout); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "distance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "angle", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemS(layout); | |||||
| uiItemR(layout, ptr, "spin", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "zoom", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_bilateralblur(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "iterations", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "sigma_color", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "sigma_space", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *sub, *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemL(col, IFACE_("Bokeh Type:"), ICON_NONE); | |||||
| uiItemR(col, ptr, "bokeh", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| uiItemR(col, ptr, "angle", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "use_gamma_correction", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer") == true); | |||||
| uiItemR(col, ptr, "f_stop", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "blur_max", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "threshold", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "use_preview", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "scene", | |||||
| nullptr, | |||||
| nullptr, | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "use_zbuffer", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| sub = uiLayoutColumn(col, false); | |||||
| uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer") == false); | |||||
| uiItemR(sub, ptr, "z_scale", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_antialiasing(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "threshold", 0, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "contrast_limit", 0, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "corner_rounding", 0, nullptr, ICON_NONE); | |||||
| } | |||||
| /* glare node */ | |||||
| static void node_composit_buts_glare(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "glare_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| uiItemR(layout, ptr, "quality", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "glare_type") != 1) { | |||||
| uiItemR(layout, ptr, "iterations", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "glare_type") != 0) { | |||||
| uiItemR( | |||||
| layout, ptr, "color_modulation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| uiItemR(layout, ptr, "mix", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "threshold", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "glare_type") == 2) { | |||||
| uiItemR(layout, ptr, "streaks", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "angle_offset", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| if (RNA_enum_get(ptr, "glare_type") == 0 || RNA_enum_get(ptr, "glare_type") == 2) { | |||||
| uiItemR(layout, ptr, "fade", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "glare_type") == 0) { | |||||
| uiItemR(layout, ptr, "use_rotate_45", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| if (RNA_enum_get(ptr, "glare_type") == 1) { | |||||
| uiItemR(layout, ptr, "size", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_tonemap(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "tonemap_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "tonemap_type") == 0) { | |||||
| uiItemR(col, ptr, "key", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "offset", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "gamma", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| else { | |||||
| uiItemR(col, ptr, "intensity", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "adaptation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "correction", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_lensdist(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "use_projector", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(col, false); | |||||
| uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_projector") == false); | |||||
| uiItemR(col, ptr, "use_jitter", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "use_fit", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_vecblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "samples", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "factor", DEFAULT_FLAGS, IFACE_("Blur"), ICON_NONE); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemL(col, IFACE_("Speed:"), ICON_NONE); | |||||
| uiItemR(col, ptr, "speed_min", DEFAULT_FLAGS, IFACE_("Min"), ICON_NONE); | |||||
| uiItemR(col, ptr, "speed_max", DEFAULT_FLAGS, IFACE_("Max"), ICON_NONE); | |||||
| uiItemR(layout, ptr, "use_curved", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_filter(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_flip(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "axis", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_crop(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| uiItemR(layout, ptr, "use_crop_size", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "relative", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| if (RNA_boolean_get(ptr, "relative")) { | |||||
| uiItemR(col, ptr, "rel_min_x", DEFAULT_FLAGS, IFACE_("Left"), ICON_NONE); | |||||
| uiItemR(col, ptr, "rel_max_x", DEFAULT_FLAGS, IFACE_("Right"), ICON_NONE); | |||||
| uiItemR(col, ptr, "rel_min_y", DEFAULT_FLAGS, IFACE_("Up"), ICON_NONE); | |||||
| uiItemR(col, ptr, "rel_max_y", DEFAULT_FLAGS, IFACE_("Down"), ICON_NONE); | |||||
| } | |||||
| else { | |||||
| uiItemR(col, ptr, "min_x", DEFAULT_FLAGS, IFACE_("Left"), ICON_NONE); | |||||
| uiItemR(col, ptr, "max_x", DEFAULT_FLAGS, IFACE_("Right"), ICON_NONE); | |||||
| uiItemR(col, ptr, "min_y", DEFAULT_FLAGS, IFACE_("Up"), ICON_NONE); | |||||
| uiItemR(col, ptr, "max_y", DEFAULT_FLAGS, IFACE_("Down"), ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_splitviewer(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *row, *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "axis", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "factor", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_double_edge_mask(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemL(col, IFACE_("Inner Edge:"), ICON_NONE); | |||||
| uiItemR(col, ptr, "inner_mode", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| uiItemL(col, IFACE_("Buffer Edge:"), ICON_NONE); | |||||
| uiItemR(col, ptr, "edge_mode", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_map_range(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "use_clamp", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_map_value(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *sub, *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "offset", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "size", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "use_min", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| sub = uiLayoutColumn(col, false); | |||||
| uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_min")); | |||||
| uiItemR(sub, ptr, "min", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "use_max", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| sub = uiLayoutColumn(col, false); | |||||
| uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_max")); | |||||
| uiItemR(sub, ptr, "max", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_alphaover(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "use_premultiply", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "premul", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_zcombine(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "use_alpha", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "use_antialias_z", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_dilateerode(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "mode", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "distance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| switch (RNA_enum_get(ptr, "mode")) { | |||||
| case CMP_NODE_DILATEERODE_DISTANCE_THRESH: | |||||
| uiItemR(layout, ptr, "edge", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| break; | |||||
| case CMP_NODE_DILATEERODE_DISTANCE_FEATHER: | |||||
| uiItemR(layout, ptr, "falloff", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| break; | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_inpaint(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "distance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_despeckle(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "threshold", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "threshold_neighbor", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_diff_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "tolerance", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "falloff", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_distance_matte(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col, *row; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemL(layout, IFACE_("Color Space:"), ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemR(row, ptr, "channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "tolerance", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "falloff", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_color_spill(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *row, *col; | |||||
| uiItemL(layout, IFACE_("Despill Channel:"), ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemR(row, ptr, "channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "limit_method", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "limit_method") == 0) { | |||||
| uiItemL(col, IFACE_("Limiting Channel:"), ICON_NONE); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "limit_channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| } | |||||
| uiItemR(col, ptr, "ratio", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "use_unspill", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_boolean_get(ptr, "use_unspill") == true) { | |||||
| uiItemR(col, ptr, "unspill_red", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "unspill_green", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "unspill_blue", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_chroma_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "tolerance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "threshold", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| /* Removed for now. */ | |||||
| // uiItemR(col, ptr, "lift", UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| /* Removed for now. */ | |||||
| // uiItemR(col, ptr, "shadow_adjust", UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_color_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "color_hue", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "color_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "color_value", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_channel_matte(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col, *row; | |||||
| uiItemL(layout, IFACE_("Color Space:"), ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemR(row, ptr, "color_space", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemL(col, IFACE_("Key Channel:"), ICON_NONE); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "matte_channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "limit_method", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "limit_method") == 0) { | |||||
| uiItemL(col, IFACE_("Limiting Channel:"), ICON_NONE); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "limit_channel", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| } | |||||
| uiItemR(col, ptr, "limit_max", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "limit_min", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_luma_matte(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "limit_max", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "limit_min", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_map_uv(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "alpha", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_id_mask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "index", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "use_antialiasing", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_file_output(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| PointerRNA imfptr = RNA_pointer_get(ptr, "format"); | |||||
| const bool multilayer = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER; | |||||
| if (multilayer) { | |||||
| uiItemL(layout, IFACE_("Path:"), ICON_NONE); | |||||
| } | |||||
| else { | |||||
| uiItemL(layout, IFACE_("Base Path:"), ICON_NONE); | |||||
| } | |||||
| uiItemR(layout, ptr, "base_path", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_file_output_ex(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| Scene *scene = CTX_data_scene(C); | |||||
| PointerRNA imfptr = RNA_pointer_get(ptr, "format"); | |||||
| PointerRNA active_input_ptr, op_ptr; | |||||
| uiLayout *row, *col; | |||||
| const bool multilayer = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_MULTILAYER; | |||||
| const bool is_exr = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_OPENEXR; | |||||
| const bool is_multiview = (scene->r.scemode & R_MULTIVIEW) != 0; | |||||
| node_composit_buts_file_output(layout, C, ptr); | |||||
| uiTemplateImageSettings(layout, &imfptr, false); | |||||
| /* disable stereo output for multilayer, too much work for something that no one will use */ | |||||
| /* if someone asks for that we can implement it */ | |||||
| if (is_multiview) { | |||||
| uiTemplateImageFormatViews(layout, &imfptr, nullptr); | |||||
| } | |||||
| uiItemS(layout); | |||||
| uiItemO(layout, IFACE_("Add Input"), ICON_ADD, "NODE_OT_output_file_add_socket"); | |||||
| row = uiLayoutRow(layout, false); | |||||
| col = uiLayoutColumn(row, true); | |||||
| const int active_index = RNA_int_get(ptr, "active_input_index"); | |||||
| /* using different collection properties if multilayer format is enabled */ | |||||
| if (multilayer) { | |||||
| uiTemplateList(col, | |||||
| C, | |||||
| "UI_UL_list", | |||||
| "file_output_node", | |||||
| ptr, | |||||
| "layer_slots", | |||||
| ptr, | |||||
| "active_input_index", | |||||
| nullptr, | |||||
| 0, | |||||
| 0, | |||||
| 0, | |||||
| 0, | |||||
| UI_TEMPLATE_LIST_FLAG_NONE); | |||||
| RNA_property_collection_lookup_int( | |||||
| ptr, RNA_struct_find_property(ptr, "layer_slots"), active_index, &active_input_ptr); | |||||
| } | |||||
| else { | |||||
| uiTemplateList(col, | |||||
| C, | |||||
| "UI_UL_list", | |||||
| "file_output_node", | |||||
| ptr, | |||||
| "file_slots", | |||||
| ptr, | |||||
| "active_input_index", | |||||
| nullptr, | |||||
| 0, | |||||
| 0, | |||||
| 0, | |||||
| 0, | |||||
| UI_TEMPLATE_LIST_FLAG_NONE); | |||||
| RNA_property_collection_lookup_int( | |||||
| ptr, RNA_struct_find_property(ptr, "file_slots"), active_index, &active_input_ptr); | |||||
| } | |||||
| /* XXX collection lookup does not return the ID part of the pointer, | |||||
| * setting this manually here */ | |||||
| active_input_ptr.owner_id = ptr->owner_id; | |||||
| col = uiLayoutColumn(row, true); | |||||
| wmOperatorType *ot = WM_operatortype_find("NODE_OT_output_file_move_active_socket", false); | |||||
| uiItemFullO_ptr(col, ot, "", ICON_TRIA_UP, nullptr, WM_OP_INVOKE_DEFAULT, 0, &op_ptr); | |||||
| RNA_enum_set(&op_ptr, "direction", 1); | |||||
| uiItemFullO_ptr(col, ot, "", ICON_TRIA_DOWN, nullptr, WM_OP_INVOKE_DEFAULT, 0, &op_ptr); | |||||
| RNA_enum_set(&op_ptr, "direction", 2); | |||||
| if (active_input_ptr.data) { | |||||
| if (multilayer) { | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemL(col, IFACE_("Layer:"), ICON_NONE); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, &active_input_ptr, "name", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| uiItemFullO(row, | |||||
| "NODE_OT_output_file_remove_active_socket", | |||||
| "", | |||||
| ICON_X, | |||||
| nullptr, | |||||
| WM_OP_EXEC_DEFAULT, | |||||
| UI_ITEM_R_ICON_ONLY, | |||||
| nullptr); | |||||
| } | |||||
| else { | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemL(col, IFACE_("File Subpath:"), ICON_NONE); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, &active_input_ptr, "path", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| uiItemFullO(row, | |||||
| "NODE_OT_output_file_remove_active_socket", | |||||
| "", | |||||
| ICON_X, | |||||
| nullptr, | |||||
| WM_OP_EXEC_DEFAULT, | |||||
| UI_ITEM_R_ICON_ONLY, | |||||
| nullptr); | |||||
| /* format details for individual files */ | |||||
| imfptr = RNA_pointer_get(&active_input_ptr, "format"); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemL(col, IFACE_("Format:"), ICON_NONE); | |||||
| uiItemR(col, &active_input_ptr, "use_node_format", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| const bool is_socket_exr = RNA_enum_get(&imfptr, "file_format") == R_IMF_IMTYPE_OPENEXR; | |||||
| const bool use_node_format = RNA_boolean_get(&active_input_ptr, "use_node_format"); | |||||
| if ((!is_exr && use_node_format) || (!is_socket_exr && !use_node_format)) { | |||||
| uiItemR(col, &active_input_ptr, "save_as_render", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiLayoutSetActive(col, use_node_format == false); | |||||
| uiTemplateImageSettings(col, &imfptr, false); | |||||
| if (is_multiview) { | |||||
| uiTemplateImageFormatViews(layout, &imfptr, nullptr); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_scale(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "space", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "space") == CMP_SCALE_RENDERPERCENT) { | |||||
| uiLayout *row; | |||||
| uiItemR(layout, ptr, "frame_method", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, nullptr, ICON_NONE); | |||||
| row = uiLayoutRow(layout, true); | |||||
| uiItemR(row, ptr, "offset_x", DEFAULT_FLAGS, "X", ICON_NONE); | |||||
| uiItemR(row, ptr, "offset_y", DEFAULT_FLAGS, "Y", ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_rotate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_invert(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemR(col, ptr, "invert_rgb", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "invert_alpha", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_premulkey(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "mapping", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_view_levels(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "channel", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_colorbalance(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *split, *col, *row; | |||||
| uiItemR(layout, ptr, "correction_method", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "correction_method") == 0) { | |||||
| split = uiLayoutSplit(layout, 0.0f, false); | |||||
| col = uiLayoutColumn(split, false); | |||||
| uiTemplateColorPicker(col, ptr, "lift", true, true, false, true); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "lift", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(split, false); | |||||
| uiTemplateColorPicker(col, ptr, "gamma", true, true, true, true); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "gamma", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(split, false); | |||||
| uiTemplateColorPicker(col, ptr, "gain", true, true, true, true); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "gain", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| else { | |||||
| split = uiLayoutSplit(layout, 0.0f, false); | |||||
| col = uiLayoutColumn(split, false); | |||||
| uiTemplateColorPicker(col, ptr, "offset", true, true, false, true); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "offset", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "offset_basis", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(split, false); | |||||
| uiTemplateColorPicker(col, ptr, "power", true, true, false, true); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "power", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| col = uiLayoutColumn(split, false); | |||||
| uiTemplateColorPicker(col, ptr, "slope", true, true, false, true); | |||||
| row = uiLayoutRow(col, false); | |||||
| uiItemR(row, ptr, "slope", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_colorbalance_ex(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "correction_method", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "correction_method") == 0) { | |||||
| uiTemplateColorPicker(layout, ptr, "lift", true, true, false, true); | |||||
| uiItemR(layout, ptr, "lift", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiTemplateColorPicker(layout, ptr, "gamma", true, true, true, true); | |||||
| uiItemR(layout, ptr, "gamma", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiTemplateColorPicker(layout, ptr, "gain", true, true, true, true); | |||||
| uiItemR(layout, ptr, "gain", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| else { | |||||
| uiTemplateColorPicker(layout, ptr, "offset", true, true, false, true); | |||||
| uiItemR(layout, ptr, "offset", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiTemplateColorPicker(layout, ptr, "power", true, true, false, true); | |||||
| uiItemR(layout, ptr, "power", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiTemplateColorPicker(layout, ptr, "slope", true, true, false, true); | |||||
| uiItemR(layout, ptr, "slope", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_huecorrect(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | static void node_composit_buts_huecorrect(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | ||||
| { | { | ||||
| bNode *node = (bNode *)ptr->data; | bNode *node = (bNode *)ptr->data; | ||||
| CurveMapping *cumap = (CurveMapping *)node->storage; | CurveMapping *cumap = (CurveMapping *)node->storage; | ||||
| if (_sample_col[0] != SAMPLE_FLT_ISNONE) { | if (_sample_col[0] != SAMPLE_FLT_ISNONE) { | ||||
| cumap->flag |= CUMA_DRAW_SAMPLE; | cumap->flag |= CUMA_DRAW_SAMPLE; | ||||
| copy_v3_v3(cumap->sample, _sample_col); | copy_v3_v3(cumap->sample, _sample_col); | ||||
| } | } | ||||
| else { | else { | ||||
| cumap->flag &= ~CUMA_DRAW_SAMPLE; | cumap->flag &= ~CUMA_DRAW_SAMPLE; | ||||
| } | } | ||||
| uiTemplateCurveMapping(layout, ptr, "mapping", 'h', false, false, false, false); | uiTemplateCurveMapping(layout, ptr, "mapping", 'h', false, false, false, false); | ||||
| } | } | ||||
| static void node_composit_buts_ycc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | static void node_composit_buts_ycc(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | ||||
| { | { | ||||
| uiItemR(layout, ptr, "mode", DEFAULT_FLAGS, "", ICON_NONE); | uiItemR(layout, ptr, "mode", DEFAULT_FLAGS, "", ICON_NONE); | ||||
| } | } | ||||
| static void node_composit_buts_movieclip(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "clip", | |||||
| nullptr, | |||||
| "CLIP_OT_open", | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| } | |||||
| static void node_composit_buts_movieclip_ex(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| PointerRNA clipptr; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "clip", | |||||
| nullptr, | |||||
| "CLIP_OT_open", | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| if (!node->id) { | |||||
| return; | |||||
| } | |||||
| clipptr = RNA_pointer_get(ptr, "clip"); | |||||
| uiTemplateColorspaceSettings(layout, &clipptr, "colorspace_settings"); | |||||
| } | |||||
| static void node_composit_buts_stabilize2d(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "clip", | |||||
| nullptr, | |||||
| "CLIP_OT_open", | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| if (!node->id) { | |||||
| return; | |||||
| } | |||||
| uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| uiItemR(layout, ptr, "invert", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_translate(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "use_relative", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "wrap_axis", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_transform(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "filter_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_moviedistortion(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "clip", | |||||
| nullptr, | |||||
| "CLIP_OT_open", | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| if (!node->id) { | |||||
| return; | |||||
| } | |||||
| uiItemR(layout, ptr, "distortion_type", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_colorcorrection(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *row; | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemR(row, ptr, "red", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "green", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "blue", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemL(row, "", ICON_NONE); | |||||
| uiItemL(row, IFACE_("Saturation"), ICON_NONE); | |||||
| uiItemL(row, IFACE_("Contrast"), ICON_NONE); | |||||
| uiItemL(row, IFACE_("Gamma"), ICON_NONE); | |||||
| uiItemL(row, IFACE_("Gain"), ICON_NONE); | |||||
| uiItemL(row, IFACE_("Lift"), ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemL(row, IFACE_("Master"), ICON_NONE); | |||||
| uiItemR(row, ptr, "master_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "master_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "master_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "master_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "master_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemL(row, IFACE_("Highlights"), ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemL(row, IFACE_("Midtones"), ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemL(row, IFACE_("Shadows"), ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, "", ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemR(row, ptr, "midtones_start", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_end", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_colorcorrection_ex(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *row; | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemR(row, ptr, "red", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "green", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "blue", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| row = layout; | |||||
| uiItemL(row, IFACE_("Saturation"), ICON_NONE); | |||||
| uiItemR(row, ptr, "master_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_saturation", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemL(row, IFACE_("Contrast"), ICON_NONE); | |||||
| uiItemR(row, ptr, "master_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_contrast", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemL(row, IFACE_("Gamma"), ICON_NONE); | |||||
| uiItemR(row, ptr, "master_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_gamma", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemL(row, IFACE_("Gain"), ICON_NONE); | |||||
| uiItemR(row, ptr, "master_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_gain", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemL(row, IFACE_("Lift"), ICON_NONE); | |||||
| uiItemR(row, ptr, "master_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "highlights_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "shadows_lift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| row = uiLayoutRow(layout, false); | |||||
| uiItemR(row, ptr, "midtones_start", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "midtones_end", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_set_alpha(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "mode", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_switch(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "check", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_switch_view_ex(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *UNUSED(ptr)) | |||||
| { | |||||
| uiItemFullO(layout, | |||||
| "NODE_OT_switch_view_update", | |||||
| "Update Views", | |||||
| ICON_FILE_REFRESH, | |||||
| nullptr, | |||||
| WM_OP_INVOKE_DEFAULT, | |||||
| 0, | |||||
| nullptr); | |||||
| } | |||||
| static void node_composit_buts_boxmask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *row; | |||||
| row = uiLayoutRow(layout, true); | |||||
| uiItemR(row, ptr, "x", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "y", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| row = uiLayoutRow(layout, true); | |||||
| uiItemR(row, ptr, "width", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "height", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "rotation", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "mask_type", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_bokehimage(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "flaps", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "angle", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "rounding", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "catadioptric", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "shift", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_bokehblur(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "use_variable_size", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| // uiItemR(layout, ptr, "f_stop", DEFAULT_FLAGS, nullptr, ICON_NONE); /* UNUSED */ | |||||
| uiItemR(layout, ptr, "blur_max", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "use_extended_bounds", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_backdrop_viewer( | static void node_composit_backdrop_viewer( | ||||
| SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y) | SpaceNode *snode, ImBuf *backdrop, bNode *node, int x, int y) | ||||
| { | { | ||||
| // node_composit_backdrop_canvas(snode, backdrop, node, x, y); | // node_composit_backdrop_canvas(snode, backdrop, node, x, y); | ||||
| if (node->custom1 == 0) { | if (node->custom1 == 0) { | ||||
| const float backdropWidth = backdrop->x; | const float backdropWidth = backdrop->x; | ||||
| const float backdropHeight = backdrop->y; | const float backdropHeight = backdrop->y; | ||||
| const float cx = x + snode->zoom * backdropWidth * node->custom3; | const float cx = x + snode->zoom * backdropWidth * node->custom3; | ||||
| ▲ Show 20 Lines • Show All 103 Lines • ▼ Show 20 Lines | static void node_composit_backdrop_ellipsemask( | ||||
| immVertex2f(pos, x2, y2); | immVertex2f(pos, x2, y2); | ||||
| immVertex2f(pos, x3, y3); | immVertex2f(pos, x3, y3); | ||||
| immVertex2f(pos, x4, y4); | immVertex2f(pos, x4, y4); | ||||
| immEnd(); | immEnd(); | ||||
| immUnbindProgram(); | immUnbindProgram(); | ||||
| } | } | ||||
| static void node_composit_buts_ellipsemask(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *row; | |||||
| row = uiLayoutRow(layout, true); | |||||
| uiItemR(row, ptr, "x", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "y", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| row = uiLayoutRow(layout, true); | |||||
| uiItemR(row, ptr, "width", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(row, ptr, "height", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "rotation", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "mask_type", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_composite(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "use_alpha", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_viewer(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "use_alpha", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_viewer_ex(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiLayout *col; | |||||
| uiItemR(layout, ptr, "use_alpha", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "tile_order", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (RNA_enum_get(ptr, "tile_order") == 0) { | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemR(col, ptr, "center_x", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(col, ptr, "center_y", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_mask(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "mask", | |||||
| nullptr, | |||||
| nullptr, | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| uiItemR(layout, ptr, "use_feather", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "size_source", DEFAULT_FLAGS, "", ICON_NONE); | |||||
| if (node->custom1 & (CMP_NODEFLAG_MASK_FIXED | CMP_NODEFLAG_MASK_FIXED_SCENE)) { | |||||
| uiItemR(layout, ptr, "size_x", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "size_y", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| uiItemR(layout, ptr, "use_motion_blur", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (node->custom1 & CMP_NODEFLAG_MASK_MOTION_BLUR) { | |||||
| uiItemR(layout, ptr, "motion_blur_samples", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "motion_blur_shutter", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_keyingscreen(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "clip", | |||||
| nullptr, | |||||
| nullptr, | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| if (node->id) { | |||||
| MovieClip *clip = (MovieClip *)node->id; | |||||
| uiLayout *col; | |||||
| PointerRNA tracking_ptr; | |||||
| RNA_pointer_create(&clip->id, &RNA_MovieTracking, &clip->tracking, &tracking_ptr); | |||||
| col = uiLayoutColumn(layout, true); | |||||
| uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_keying(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| /* bNode *node = (bNode*)ptr->data; */ /* UNUSED */ | |||||
| uiItemR(layout, ptr, "blur_pre", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "screen_balance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "despill_factor", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "despill_balance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "edge_kernel_radius", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "edge_kernel_tolerance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "clip_black", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "clip_white", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "dilate_distance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "feather_falloff", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "feather_distance", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "blur_post", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_trackpos(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "clip", | |||||
| nullptr, | |||||
| "CLIP_OT_open", | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| if (node->id) { | |||||
| MovieClip *clip = (MovieClip *)node->id; | |||||
| MovieTracking *tracking = &clip->tracking; | |||||
| MovieTrackingObject *object; | |||||
| uiLayout *col; | |||||
| PointerRNA tracking_ptr; | |||||
| NodeTrackPosData *data = (NodeTrackPosData *)node->storage; | |||||
| RNA_pointer_create(&clip->id, &RNA_MovieTracking, tracking, &tracking_ptr); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA); | |||||
| object = BKE_tracking_object_get_named(tracking, data->tracking_object); | |||||
| if (object) { | |||||
| PointerRNA object_ptr; | |||||
| RNA_pointer_create(&clip->id, &RNA_MovieTrackingObject, object, &object_ptr); | |||||
| uiItemPointerR(col, ptr, "track_name", &object_ptr, "tracks", "", ICON_ANIM_DATA); | |||||
| } | |||||
| else { | |||||
| uiItemR(layout, ptr, "track_name", DEFAULT_FLAGS, "", ICON_ANIM_DATA); | |||||
| } | |||||
| uiItemR(layout, ptr, "position", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (ELEM(node->custom1, CMP_TRACKPOS_RELATIVE_FRAME, CMP_TRACKPOS_ABSOLUTE_FRAME)) { | |||||
| uiItemR(layout, ptr, "frame_relative", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_planetrackdeform(uiLayout *layout, bContext *C, PointerRNA *ptr) | |||||
| { | |||||
| bNode *node = (bNode *)ptr->data; | |||||
| NodePlaneTrackDeformData *data = (NodePlaneTrackDeformData *)node->storage; | |||||
| uiTemplateID(layout, | |||||
| C, | |||||
| ptr, | |||||
| "clip", | |||||
| nullptr, | |||||
| "CLIP_OT_open", | |||||
| nullptr, | |||||
| UI_TEMPLATE_ID_FILTER_ALL, | |||||
| false, | |||||
| nullptr); | |||||
| if (node->id) { | |||||
| MovieClip *clip = (MovieClip *)node->id; | |||||
| MovieTracking *tracking = &clip->tracking; | |||||
| MovieTrackingObject *object; | |||||
| uiLayout *col; | |||||
| PointerRNA tracking_ptr; | |||||
| RNA_pointer_create(&clip->id, &RNA_MovieTracking, tracking, &tracking_ptr); | |||||
| col = uiLayoutColumn(layout, false); | |||||
| uiItemPointerR(col, ptr, "tracking_object", &tracking_ptr, "objects", "", ICON_OBJECT_DATA); | |||||
| object = BKE_tracking_object_get_named(tracking, data->tracking_object); | |||||
| if (object) { | |||||
| PointerRNA object_ptr; | |||||
| RNA_pointer_create(&clip->id, &RNA_MovieTrackingObject, object, &object_ptr); | |||||
| uiItemPointerR( | |||||
| col, ptr, "plane_track_name", &object_ptr, "plane_tracks", "", ICON_ANIM_DATA); | |||||
| } | |||||
| else { | |||||
| uiItemR(layout, ptr, "plane_track_name", 0, "", ICON_ANIM_DATA); | |||||
| } | |||||
| } | |||||
| uiItemR(layout, ptr, "use_motion_blur", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| if (data->flag & CMP_NODEFLAG_PLANETRACKDEFORM_MOTION_BLUR) { | |||||
| uiItemR(layout, ptr, "motion_blur_samples", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "motion_blur_shutter", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| } | |||||
| static void node_composit_buts_sunbeams(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "source", DEFAULT_FLAGS | UI_ITEM_R_EXPAND, "", ICON_NONE); | |||||
| uiItemR(layout, ptr, "ray_length", DEFAULT_FLAGS | UI_ITEM_R_SLIDER, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_cryptomatte_legacy(uiLayout *layout, | static void node_composit_buts_cryptomatte_legacy(uiLayout *layout, | ||||
| bContext *UNUSED(C), | bContext *UNUSED(C), | ||||
| PointerRNA *ptr) | PointerRNA *ptr) | ||||
| { | { | ||||
| uiLayout *col = uiLayoutColumn(layout, true); | uiLayout *col = uiLayoutColumn(layout, true); | ||||
| uiItemL(col, IFACE_("Matte Objects:"), ICON_NONE); | uiItemL(col, IFACE_("Matte Objects:"), ICON_NONE); | ||||
| ▲ Show 20 Lines • Show All 59 Lines • ▼ Show 20 Lines | static void node_composit_buts_cryptomatte(uiLayout *layout, bContext *C, PointerRNA *ptr) | ||||
| uiItemL(col, IFACE_("Matte ID:"), ICON_NONE); | uiItemL(col, IFACE_("Matte ID:"), ICON_NONE); | ||||
| row = uiLayoutRow(col, true); | row = uiLayoutRow(col, true); | ||||
| uiItemR(row, ptr, "matte_id", DEFAULT_FLAGS, "", ICON_NONE); | uiItemR(row, ptr, "matte_id", DEFAULT_FLAGS, "", ICON_NONE); | ||||
| uiTemplateCryptoPicker(row, ptr, "add", ICON_ADD); | uiTemplateCryptoPicker(row, ptr, "add", ICON_ADD); | ||||
| uiTemplateCryptoPicker(row, ptr, "remove", ICON_REMOVE); | uiTemplateCryptoPicker(row, ptr, "remove", ICON_REMOVE); | ||||
| } | } | ||||
| static void node_composit_buts_brightcontrast(uiLayout *layout, | |||||
| bContext *UNUSED(C), | |||||
| PointerRNA *ptr) | |||||
| { | |||||
| uiItemR(layout, ptr, "use_premultiply", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| static void node_composit_buts_denoise(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | |||||
| { | |||||
| #ifndef WITH_OPENIMAGEDENOISE | |||||
| uiItemL(layout, IFACE_("Disabled, built without OpenImageDenoise"), ICON_ERROR); | |||||
| #else | |||||
| /* Always supported through Accelerate framework BNNS on macOS. */ | |||||
| # ifndef __APPLE__ | |||||
| if (!BLI_cpu_support_sse41()) { | |||||
| uiItemL(layout, IFACE_("Disabled, CPU with SSE4.1 is required"), ICON_ERROR); | |||||
| } | |||||
| # endif | |||||
| #endif | |||||
| uiItemL(layout, IFACE_("Prefilter:"), ICON_NONE); | |||||
| uiItemR(layout, ptr, "prefilter", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| uiItemR(layout, ptr, "use_hdr", DEFAULT_FLAGS, nullptr, ICON_NONE); | |||||
| } | |||||
| /* only once called */ | /* only once called */ | ||||
| static void node_composit_set_butfunc(bNodeType *ntype) | static void node_composit_set_butfunc(bNodeType *ntype) | ||||
| { | { | ||||
| switch (ntype->type) { | switch (ntype->type) { | ||||
| case CMP_NODE_IMAGE: | case CMP_NODE_IMAGE: | ||||
| ntype->draw_buttons = node_composit_buts_image; | ntype->draw_buttons = node_composit_buts_image; | ||||
| ntype->draw_buttons_ex = node_composit_buts_image_ex; | ntype->draw_buttons_ex = node_composit_buts_image_ex; | ||||
| break; | break; | ||||
| case CMP_NODE_R_LAYERS: | |||||
| ntype->draw_buttons = node_composit_buts_viewlayers; | |||||
| break; | |||||
| case CMP_NODE_NORMAL: | |||||
| ntype->draw_buttons = node_buts_normal; | |||||
| break; | |||||
| case CMP_NODE_CURVE_VEC: | |||||
| ntype->draw_buttons = node_buts_curvevec; | |||||
| break; | |||||
| case CMP_NODE_CURVE_RGB: | case CMP_NODE_CURVE_RGB: | ||||
| ntype->draw_buttons = node_buts_curvecol; | ntype->draw_buttons = node_buts_curvecol; | ||||
| break; | break; | ||||
| case CMP_NODE_VALUE: | case CMP_NODE_VALUE: | ||||
| ntype->draw_buttons = node_buts_value; | ntype->draw_buttons = node_buts_value; | ||||
| break; | break; | ||||
| case CMP_NODE_RGB: | case CMP_NODE_RGB: | ||||
| ntype->draw_buttons = node_buts_rgb; | ntype->draw_buttons = node_buts_rgb; | ||||
| break; | break; | ||||
| case CMP_NODE_FLIP: | |||||
| ntype->draw_buttons = node_composit_buts_flip; | |||||
| break; | |||||
| case CMP_NODE_SPLITVIEWER: | |||||
| ntype->draw_buttons = node_composit_buts_splitviewer; | |||||
| break; | |||||
| case CMP_NODE_MIX_RGB: | case CMP_NODE_MIX_RGB: | ||||
| ntype->draw_buttons = node_buts_mix_rgb; | ntype->draw_buttons = node_buts_mix_rgb; | ||||
| break; | break; | ||||
| case CMP_NODE_VALTORGB: | case CMP_NODE_VALTORGB: | ||||
| ntype->draw_buttons = node_buts_colorramp; | ntype->draw_buttons = node_buts_colorramp; | ||||
| break; | break; | ||||
| case CMP_NODE_CROP: | |||||
| ntype->draw_buttons = node_composit_buts_crop; | |||||
| break; | |||||
| case CMP_NODE_BLUR: | |||||
| ntype->draw_buttons = node_composit_buts_blur; | |||||
| break; | |||||
| case CMP_NODE_DBLUR: | |||||
| ntype->draw_buttons = node_composit_buts_dblur; | |||||
| break; | |||||
| case CMP_NODE_BILATERALBLUR: | |||||
| ntype->draw_buttons = node_composit_buts_bilateralblur; | |||||
| break; | |||||
| case CMP_NODE_DEFOCUS: | |||||
| ntype->draw_buttons = node_composit_buts_defocus; | |||||
| break; | |||||
| case CMP_NODE_ANTIALIASING: | |||||
| ntype->draw_buttons = node_composit_buts_antialiasing; | |||||
| break; | |||||
| case CMP_NODE_GLARE: | |||||
| ntype->draw_buttons = node_composit_buts_glare; | |||||
| break; | |||||
| case CMP_NODE_TONEMAP: | |||||
| ntype->draw_buttons = node_composit_buts_tonemap; | |||||
| break; | |||||
| case CMP_NODE_LENSDIST: | |||||
| ntype->draw_buttons = node_composit_buts_lensdist; | |||||
| break; | |||||
| case CMP_NODE_VECBLUR: | |||||
| ntype->draw_buttons = node_composit_buts_vecblur; | |||||
| break; | |||||
| case CMP_NODE_FILTER: | |||||
| ntype->draw_buttons = node_composit_buts_filter; | |||||
| break; | |||||
| case CMP_NODE_MAP_VALUE: | |||||
| ntype->draw_buttons = node_composit_buts_map_value; | |||||
| break; | |||||
| case CMP_NODE_MAP_RANGE: | |||||
| ntype->draw_buttons = node_composit_buts_map_range; | |||||
| break; | |||||
| case CMP_NODE_TIME: | case CMP_NODE_TIME: | ||||
| ntype->draw_buttons = node_buts_time; | ntype->draw_buttons = node_buts_time; | ||||
| break; | break; | ||||
| case CMP_NODE_ALPHAOVER: | |||||
| ntype->draw_buttons = node_composit_buts_alphaover; | |||||
| break; | |||||
| case CMP_NODE_TEXTURE: | case CMP_NODE_TEXTURE: | ||||
| ntype->draw_buttons = node_buts_texture; | ntype->draw_buttons = node_buts_texture; | ||||
| break; | break; | ||||
| case CMP_NODE_DILATEERODE: | |||||
| ntype->draw_buttons = node_composit_buts_dilateerode; | |||||
| break; | |||||
| case CMP_NODE_INPAINT: | |||||
| ntype->draw_buttons = node_composit_buts_inpaint; | |||||
| break; | |||||
| case CMP_NODE_DESPECKLE: | |||||
| ntype->draw_buttons = node_composit_buts_despeckle; | |||||
| break; | |||||
| case CMP_NODE_OUTPUT_FILE: | |||||
| ntype->draw_buttons = node_composit_buts_file_output; | |||||
| ntype->draw_buttons_ex = node_composit_buts_file_output_ex; | |||||
| break; | |||||
| case CMP_NODE_DIFF_MATTE: | |||||
| ntype->draw_buttons = node_composit_buts_diff_matte; | |||||
| break; | |||||
| case CMP_NODE_DIST_MATTE: | |||||
| ntype->draw_buttons = node_composit_buts_distance_matte; | |||||
| break; | |||||
| case CMP_NODE_COLOR_SPILL: | |||||
| ntype->draw_buttons = node_composit_buts_color_spill; | |||||
| break; | |||||
| case CMP_NODE_CHROMA_MATTE: | |||||
| ntype->draw_buttons = node_composit_buts_chroma_matte; | |||||
| break; | |||||
| case CMP_NODE_COLOR_MATTE: | |||||
| ntype->draw_buttons = node_composit_buts_color_matte; | |||||
| break; | |||||
| case CMP_NODE_SCALE: | |||||
| ntype->draw_buttons = node_composit_buts_scale; | |||||
| break; | |||||
| case CMP_NODE_ROTATE: | |||||
| ntype->draw_buttons = node_composit_buts_rotate; | |||||
| break; | |||||
| case CMP_NODE_CHANNEL_MATTE: | |||||
| ntype->draw_buttons = node_composit_buts_channel_matte; | |||||
| break; | |||||
| case CMP_NODE_LUMA_MATTE: | |||||
| ntype->draw_buttons = node_composit_buts_luma_matte; | |||||
| break; | |||||
| case CMP_NODE_MAP_UV: | |||||
| ntype->draw_buttons = node_composit_buts_map_uv; | |||||
| break; | |||||
| case CMP_NODE_ID_MASK: | |||||
| ntype->draw_buttons = node_composit_buts_id_mask; | |||||
| break; | |||||
| case CMP_NODE_DOUBLEEDGEMASK: | |||||
| ntype->draw_buttons = node_composit_buts_double_edge_mask; | |||||
| break; | |||||
| case CMP_NODE_MATH: | case CMP_NODE_MATH: | ||||
| ntype->draw_buttons = node_buts_math; | ntype->draw_buttons = node_buts_math; | ||||
| break; | break; | ||||
| case CMP_NODE_INVERT: | |||||
| ntype->draw_buttons = node_composit_buts_invert; | |||||
| break; | |||||
| case CMP_NODE_PREMULKEY: | |||||
| ntype->draw_buttons = node_composit_buts_premulkey; | |||||
| break; | |||||
| case CMP_NODE_VIEW_LEVELS: | |||||
| ntype->draw_buttons = node_composit_buts_view_levels; | |||||
| break; | |||||
| case CMP_NODE_COLORBALANCE: | |||||
| ntype->draw_buttons = node_composit_buts_colorbalance; | |||||
| ntype->draw_buttons_ex = node_composit_buts_colorbalance_ex; | |||||
| break; | |||||
| case CMP_NODE_HUECORRECT: | case CMP_NODE_HUECORRECT: | ||||
| ntype->draw_buttons = node_composit_buts_huecorrect; | ntype->draw_buttons = node_composit_buts_huecorrect; | ||||
| break; | break; | ||||
| case CMP_NODE_ZCOMBINE: | |||||
| ntype->draw_buttons = node_composit_buts_zcombine; | |||||
| break; | |||||
| case CMP_NODE_COMBYCCA: | case CMP_NODE_COMBYCCA: | ||||
| case CMP_NODE_SEPYCCA: | case CMP_NODE_SEPYCCA: | ||||
| ntype->draw_buttons = node_composit_buts_ycc; | ntype->draw_buttons = node_composit_buts_ycc; | ||||
| break; | break; | ||||
| case CMP_NODE_MOVIECLIP: | |||||
| ntype->draw_buttons = node_composit_buts_movieclip; | |||||
| ntype->draw_buttons_ex = node_composit_buts_movieclip_ex; | |||||
| break; | |||||
| case CMP_NODE_STABILIZE2D: | |||||
| ntype->draw_buttons = node_composit_buts_stabilize2d; | |||||
| break; | |||||
| case CMP_NODE_TRANSFORM: | |||||
| ntype->draw_buttons = node_composit_buts_transform; | |||||
| break; | |||||
| case CMP_NODE_TRANSLATE: | |||||
| ntype->draw_buttons = node_composit_buts_translate; | |||||
| break; | |||||
| case CMP_NODE_MOVIEDISTORTION: | |||||
| ntype->draw_buttons = node_composit_buts_moviedistortion; | |||||
| break; | |||||
| case CMP_NODE_COLORCORRECTION: | |||||
| ntype->draw_buttons = node_composit_buts_colorcorrection; | |||||
| ntype->draw_buttons_ex = node_composit_buts_colorcorrection_ex; | |||||
| break; | |||||
| case CMP_NODE_SETALPHA: | |||||
| ntype->draw_buttons = node_composit_buts_set_alpha; | |||||
| break; | |||||
| case CMP_NODE_SWITCH: | |||||
| ntype->draw_buttons = node_composit_buts_switch; | |||||
| break; | |||||
| case CMP_NODE_SWITCH_VIEW: | |||||
| ntype->draw_buttons_ex = node_composit_buts_switch_view_ex; | |||||
| break; | |||||
| case CMP_NODE_MASK_BOX: | case CMP_NODE_MASK_BOX: | ||||
| ntype->draw_buttons = node_composit_buts_boxmask; | |||||
| ntype->draw_backdrop = node_composit_backdrop_boxmask; | ntype->draw_backdrop = node_composit_backdrop_boxmask; | ||||
| break; | break; | ||||
| case CMP_NODE_MASK_ELLIPSE: | case CMP_NODE_MASK_ELLIPSE: | ||||
| ntype->draw_buttons = node_composit_buts_ellipsemask; | |||||
| ntype->draw_backdrop = node_composit_backdrop_ellipsemask; | ntype->draw_backdrop = node_composit_backdrop_ellipsemask; | ||||
| break; | break; | ||||
| case CMP_NODE_BOKEHIMAGE: | |||||
| ntype->draw_buttons = node_composit_buts_bokehimage; | |||||
| break; | |||||
| case CMP_NODE_BOKEHBLUR: | |||||
| ntype->draw_buttons = node_composit_buts_bokehblur; | |||||
| break; | |||||
| case CMP_NODE_VIEWER: | |||||
| ntype->draw_buttons = node_composit_buts_viewer; | |||||
| ntype->draw_buttons_ex = node_composit_buts_viewer_ex; | |||||
| ntype->draw_backdrop = node_composit_backdrop_viewer; | |||||
| break; | |||||
| case CMP_NODE_COMPOSITE: | |||||
| ntype->draw_buttons = node_composit_buts_composite; | |||||
| break; | |||||
| case CMP_NODE_MASK: | |||||
| ntype->draw_buttons = node_composit_buts_mask; | |||||
| break; | |||||
| case CMP_NODE_KEYINGSCREEN: | |||||
| ntype->draw_buttons = node_composit_buts_keyingscreen; | |||||
| break; | |||||
| case CMP_NODE_KEYING: | |||||
| ntype->draw_buttons = node_composit_buts_keying; | |||||
| break; | |||||
| case CMP_NODE_TRACKPOS: | |||||
| ntype->draw_buttons = node_composit_buts_trackpos; | |||||
| break; | |||||
| case CMP_NODE_PLANETRACKDEFORM: | |||||
| ntype->draw_buttons = node_composit_buts_planetrackdeform; | |||||
| break; | |||||
| case CMP_NODE_SUNBEAMS: | |||||
| ntype->draw_buttons = node_composit_buts_sunbeams; | |||||
| break; | |||||
| case CMP_NODE_CRYPTOMATTE: | case CMP_NODE_CRYPTOMATTE: | ||||
| ntype->draw_buttons = node_composit_buts_cryptomatte; | ntype->draw_buttons = node_composit_buts_cryptomatte; | ||||
| break; | break; | ||||
| case CMP_NODE_CRYPTOMATTE_LEGACY: | case CMP_NODE_CRYPTOMATTE_LEGACY: | ||||
| ntype->draw_buttons = node_composit_buts_cryptomatte_legacy; | ntype->draw_buttons = node_composit_buts_cryptomatte_legacy; | ||||
| ntype->draw_buttons_ex = node_composit_buts_cryptomatte_legacy_ex; | ntype->draw_buttons_ex = node_composit_buts_cryptomatte_legacy_ex; | ||||
| break; | break; | ||||
| case CMP_NODE_BRIGHTCONTRAST: | case CMP_NODE_VIEWER: | ||||
| ntype->draw_buttons = node_composit_buts_brightcontrast; | ntype->draw_backdrop = node_composit_backdrop_viewer; | ||||
| break; | |||||
| case CMP_NODE_DENOISE: | |||||
| ntype->draw_buttons = node_composit_buts_denoise; | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| /* ****************** BUTTON CALLBACKS FOR TEXTURE NODES ***************** */ | /* ****************** BUTTON CALLBACKS FOR TEXTURE NODES ***************** */ | ||||
| static void node_texture_buts_bricks(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | static void node_texture_buts_bricks(uiLayout *layout, bContext *UNUSED(C), PointerRNA *ptr) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 1,312 Lines • Show Last 20 Lines | |||||