28 "Do not perform any color transform on load, treat colors as in scene linear space "
30 {0,
nullptr, 0,
nullptr,
nullptr},
35# include <fmt/format.h>
73struct SeqCurveMappingUpdateData {
78static bool seq_update_modifier_curve(
Strip *strip,
void *user_data)
82 SeqCurveMappingUpdateData *
data =
static_cast<SeqCurveMappingUpdateData *
>(user_data);
99 SeqCurveMappingUpdateData
data{scene, curve};
111 if (!cumap->cm[
len].curve) {
124 iter,
ptr, cumap->cm,
sizeof(
CurveMap), rna_CurveMapping_curves_length(
ptr), 0,
nullptr);
127static void rna_CurveMapping_clip_set(
PointerRNA *
ptr,
bool value)
146static void rna_CurveMapping_black_level_set(
PointerRNA *
ptr,
const float *values)
149 cumap->black[0] = values[0];
150 cumap->black[1] = values[1];
151 cumap->black[2] = values[2];
155static void rna_CurveMapping_white_level_set(
PointerRNA *
ptr,
const float *values)
158 cumap->white[0] = values[0];
159 cumap->white[1] = values[1];
160 cumap->white[2] = values[2];
171 curve_mapping->cur = 3;
174 seq_notify_curve_update(curve_mapping,
ptr->owner_id);
179static void rna_CurveMapping_extend_update(
Main * ,
187static void rna_CurveMapping_clipminx_range(
193 *
max = cumap->clipr.xmax;
196static void rna_CurveMapping_clipminy_range(
202 *
max = cumap->clipr.ymax;
205static void rna_CurveMapping_clipmaxx_range(
210 *
min = cumap->clipr.xmin;
214static void rna_CurveMapping_clipmaxy_range(
219 *
min = cumap->clipr.ymin;
223static std::optional<std::string> rna_ColorRamp_path(
const PointerRNA *
ptr)
227 ID *
id =
ptr->owner_id;
242 return fmt::format(
"{}.color_ramp", node_path);
267static std::optional<std::string> rna_ColorRampElement_path(
const PointerRNA *
ptr)
271 std::optional<std::string> path;
278# define COLRAMP_GETPATH \
280 prop = RNA_struct_find_property(&ramp_ptr, "elements"); \
282 index = RNA_property_collection_lookup_index(&ramp_ptr, prop, ptr); \
284 std::string texture_path = rna_ColorRamp_path(&ramp_ptr).value_or(""); \
285 path = fmt::format("{}.elements[{}]", texture_path, index); \
294 ID *
id =
ptr->owner_id;
335# undef COLRAMP_GETPATH
343 ID *
id =
ptr->owner_id;
391static void rna_ColorRamp_eval(
ColorBand *coba,
float position,
float color[4])
407static void rna_ColorRampElement_remove(
ColorBand *coba,
438static int rna_ColorManagedDisplaySettings_display_device_get(
PointerRNA *
ptr)
445static void rna_ColorManagedDisplaySettings_display_device_set(
PointerRNA *
ptr,
int value)
451 STRNCPY(display->display_device, name);
455static const EnumPropertyItem *rna_ColorManagedDisplaySettings_display_device_itemf(
469static void rna_ColorManagedDisplaySettings_display_device_update(
Main *bmain,
473 ID *
id =
ptr->owner_id;
489 ma =
static_cast<Material *
>(ma->id.next))
496static int rna_ColorManagedViewSettings_view_transform_get(
PointerRNA *
ptr)
502static void rna_ColorManagedViewSettings_view_transform_set(
PointerRNA *
ptr,
int value)
519static const EnumPropertyItem *rna_ColorManagedViewSettings_view_transform_itemf(
534static int rna_ColorManagedViewSettings_look_get(
PointerRNA *
ptr)
541static void rna_ColorManagedViewSettings_look_set(
PointerRNA *
ptr,
int value)
568static void rna_ColorManagedViewSettings_use_curves_set(
PointerRNA *
ptr,
bool value)
575 if (view_settings->curve_mapping ==
nullptr) {
584static void rna_ColorManagedViewSettings_whitepoint_get(
PointerRNA *
ptr,
float value[3])
590static void rna_ColorManagedViewSettings_whitepoint_set(
PointerRNA *
ptr,
const float value[3])
596static bool rna_ColorManagedColorspaceSettings_is_data_get(
PointerRNA *
ptr)
600 return STREQ(colorspace->name, data_name);
603static void rna_ColorManagedColorspaceSettings_is_data_set(
PointerRNA *
ptr,
bool value)
608 STRNCPY(colorspace->name, data_name);
612static int rna_ColorManagedColorspaceSettings_colorspace_get(
PointerRNA *
ptr)
619static void rna_ColorManagedColorspaceSettings_colorspace_set(
PointerRNA *
ptr,
int value)
624 if (name && name[0]) {
625 STRNCPY(colorspace->name, name);
629static const EnumPropertyItem *rna_ColorManagedColorspaceSettings_colorspace_itemf(
643struct Seq_colorspace_cb_data {
653static bool strip_find_colorspace_settings_cb(
Strip *strip,
void *user_data)
655 Seq_colorspace_cb_data *cd = (Seq_colorspace_cb_data *)user_data;
663static void rna_ColorManagedColorspaceSettings_reload_update(
Main *bmain,
667 ID *
id =
ptr->owner_id;
701 Seq_colorspace_cb_data cb_data = {colorspace_settings,
nullptr};
710 &scene->
ed->
seqbase, strip_find_colorspace_settings_cb, &cb_data);
711 Strip *strip = cb_data.r_seq;
730static std::optional<std::string> rna_ColorManagedSequencerColorspaceSettings_path(
733 return "sequencer_colorspace_settings";
738 ID *
id =
ptr->owner_id;
750static float rna_CurveMapping_evaluateF(
CurveMapping *cumap,
755 if (&cumap->
cm[0] != cuma && &cumap->
cm[1] != cuma && &cumap->
cm[2] != cuma &&
756 &cumap->
cm[3] != cuma)
779 {0,
"AUTO", 0,
"Auto Handle",
""},
782 {0,
nullptr, 0,
nullptr,
nullptr},
797 prop,
"Handle Type",
"Curve interpolation at this point: Bézier or vector");
823 "Position to add point",
830 parm =
RNA_def_pointer(func,
"point",
"CurveMapPoint",
"",
"New point");
836 parm =
RNA_def_pointer(func,
"point",
"CurveMapPoint",
"",
"PointElement to remove");
867 "Combined curve is applied to each channel individually, which may result in a change of "
870 {0,
nullptr, 0,
nullptr,
nullptr},
874 {0,
"HORIZONTAL", 0,
"Horizontal",
""},
876 {0,
nullptr, 0,
nullptr,
nullptr},
883 "Curve mapping to map color, vector and scalar values to other values using "
884 "a user defined curve");
930 "rna_CurveMapping_curves_begin",
931 "rna_iterator_array_next",
932 "rna_iterator_array_end",
933 "rna_iterator_array_get",
934 "rna_CurveMapping_curves_length",
946 prop,
"Black Level",
"For RGB curves, the color that black is mapped to");
954 prop,
"White Level",
"For RGB curves, the color that white is mapped to");
969 parm =
RNA_def_pointer(func,
"curve",
"CurveMap",
"curve",
"Curve to evaluate");
977 "Position to evaluate curve at",
987 "Value of curve at given location",
1002 srna,
"Color Ramp Element",
"Element defining a color at a position in the color ramp");
1040 func,
"position", 0.0f, 0.0f, 1.0f,
"Position",
"Position to add element", 0.0f, 1.0f);
1043 parm =
RNA_def_pointer(func,
"element",
"ColorRampElement",
"",
"New element");
1049 parm =
RNA_def_pointer(func,
"element",
"ColorRampElement",
"",
"Element to remove");
1068 {0,
nullptr, 0,
nullptr,
nullptr},
1075 {0,
nullptr, 0,
nullptr,
nullptr},
1083 {0,
nullptr, 0,
nullptr,
nullptr},
1134 "Evaluate Color Ramp at position",
1146 "Color at given position",
1165 {0,
nullptr, 0,
nullptr,
nullptr},
1195 {0,
nullptr, 0,
nullptr,
nullptr},
1201 {0,
nullptr, 0,
nullptr,
nullptr},
1217 prop,
"Accuracy",
"Proportion of original image source pixel lines to sample");
1254 {0,
"NONE", 0,
"None",
""},
1255 {0,
nullptr, 0,
nullptr,
nullptr},
1259 {0,
"NONE", 0,
"None",
"Do not modify image in an artistic manner"},
1260 {0,
nullptr, 0,
nullptr,
nullptr},
1268 "Do not perform any color transform on display, use old non-color managed technique for "
1270 {0,
nullptr, 0,
nullptr,
nullptr},
1274 srna =
RNA_def_struct(brna,
"ColorManagedDisplaySettings",
nullptr);
1277 srna,
"ColorManagedDisplaySettings",
"Color management specific to display device");
1282 "rna_ColorManagedDisplaySettings_display_device_get",
1283 "rna_ColorManagedDisplaySettings_display_device_set",
1284 "rna_ColorManagedDisplaySettings_display_device_itemf");
1287 prop,
NC_WINDOW,
"rna_ColorManagedDisplaySettings_display_device_update");
1290 srna =
RNA_def_struct(brna,
"ColorManagedViewSettings",
nullptr);
1293 "ColorManagedViewSettings",
1294 "Color management settings used for displaying images on the display");
1299 "rna_ColorManagedViewSettings_look_get",
1300 "rna_ColorManagedViewSettings_look_set",
1301 "rna_ColorManagedViewSettings_look_itemf");
1303 prop,
"Look",
"Additional transform applied before view transform for artistic needs");
1309 "rna_ColorManagedViewSettings_view_transform_get",
1310 "rna_ColorManagedViewSettings_view_transform_set",
1311 "rna_ColorManagedViewSettings_view_transform_itemf");
1313 prop,
"View Transform",
"View used when converting image to a display space");
1324 "Exposure (stops) applied before display transform, multiplying by 2^exposure");
1334 "Additional gamma encoding after display transform, for output with custom gamma");
1351 prop,
"Use White Balance",
"Perform chromatic adaption from a different white point");
1368 prop,
"Tint",
"Color tint of the scene's white point (the default of 10 matches daylight)");
1374 "rna_ColorManagedViewSettings_whitepoint_get",
1375 "rna_ColorManagedViewSettings_whitepoint_set",
1379 "The color which gets mapped to white "
1380 "(automatically converted to/from temperature and tint)");
1387 "High Dynamic Range",
1388 "Enable high dynamic range display in rendered viewport, uncapping display brightness. This "
1389 "requires a monitor with HDR support and a view transform designed for HDR. "
1390 "'Filmic' and 'AgX' do not generate HDR colors.");
1394 srna =
RNA_def_struct(brna,
"ColorManagedInputColorspaceSettings",
nullptr);
1397 srna,
"ColorManagedInputColorspaceSettings",
"Input color space settings");
1404 "rna_ColorManagedColorspaceSettings_colorspace_get",
1405 "rna_ColorManagedColorspaceSettings_colorspace_set",
1406 "rna_ColorManagedColorspaceSettings_colorspace_itemf");
1409 "Input Color Space",
1410 "Color space in the image file, to convert to and from when saving and loading the image");
1416 "rna_ColorManagedColorspaceSettings_is_data_get",
1417 "rna_ColorManagedColorspaceSettings_is_data_set");
1421 "Treat image as non-color data without color management, like normal or displacement maps");
1425 srna =
RNA_def_struct(brna,
"ColorManagedSequencerColorspaceSettings",
nullptr);
1428 srna,
"ColorManagedSequencerColorspaceSettings",
"Input color space settings");
1434 "rna_ColorManagedColorspaceSettings_colorspace_get",
1435 "rna_ColorManagedColorspaceSettings_colorspace_set",
1436 "rna_ColorManagedColorspaceSettings_colorspace_itemf");
CBData * BKE_colorband_element_add(ColorBand *coba, float position)
bool BKE_colorband_evaluate(const ColorBand *coba, float in, float out[4])
bool BKE_colorband_element_remove(ColorBand *coba, int index)
Scene * CTX_data_scene(const bContext *C)
#define IMA_SIGNAL_COLORMANAGE
void BKE_image_signal(Main *bmain, Image *ima, ImageUser *iuser, int signal)
Blender kernel freestyle line style functionality.
void BKE_linestyle_modifier_list_color_ramps(FreestyleLineStyle *linestyle, ListBase *listbase)
std::optional< std::string > BKE_linestyle_path_to_color_ramp(FreestyleLineStyle *linestyle, const struct ColorBand *color_ramp)
void BKE_main_ensure_invariants(Main &bmain, std::optional< blender::Span< ID * > > modified_ids=std::nullopt)
#define CMP_NODE_VALTORGB
#define TEX_NODE_VALTORGB
void BKE_ntree_update_tag_node_property(bNodeTree *ntree, bNode *node)
void BKE_reportf(ReportList *reports, eReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
void BKE_report(ReportList *reports, eReportType type, const char *message)
#define LISTBASE_FOREACH(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
char * STRNCPY(char(&dst)[N], const char *src)
#define BLT_I18NCONTEXT_ID_CURVE_LEGACY
#define BLT_I18NCONTEXT_COLOR
void DEG_id_tag_update(ID *id, unsigned int flags)
@ CUMA_EXTEND_EXTRAPOLATE
struct CurveMapping CurveMapping
@ COLORMANAGE_VIEW_USE_WHITE_BALANCE
@ COLORMANAGE_VIEW_USE_CURVES
@ COLORMANAGE_VIEW_USE_HDR
struct ColorManagedColorspaceSettings ColorManagedColorspaceSettings
@ SCOPES_WAVEFRM_YCC_JPEG
@ SCOPES_WAVEFRM_RGB_PARADE
@ COLBAND_INTERP_CONSTANT
@ COLBAND_INTERP_B_SPLINE
@ COLBAND_INTERP_CARDINAL
Object is a sort of wrapper for general info.
void IMB_colormanagement_colorspace_items_add(EnumPropertyItem **items, int *totitem)
bool IMB_colormanagement_set_whitepoint(const float whitepoint[3], float &temperature, float &tint)
const char * IMB_colormanagement_colorspace_get_indexed_name(int index)
void IMB_colormanagement_view_items_add(EnumPropertyItem **items, int *totitem, const char *display_name)
const char * IMB_colormanagement_look_get_indexed_name(int index)
const char * IMB_colormanagement_look_validate_for_view(const char *view_name, const char *look_name)
const char * IMB_colormanagement_view_get_name_by_id(int index)
void IMB_colormanagement_validate_settings(const ColorManagedDisplaySettings *display_settings, ColorManagedViewSettings *view_settings)
void IMB_colormanagement_get_whitepoint(const float temperature, const float tint, float whitepoint[3])
int IMB_colormanagement_view_get_id_by_name(const char *name)
const char * IMB_colormanagement_role_colorspace_name_get(int role)
const char * IMB_colormanagement_display_get_indexed_name(int index)
int IMB_colormanagement_look_get_named_index(const char *name)
void IMB_colormanagement_display_items_add(EnumPropertyItem **items, int *totitem)
int IMB_colormanagement_colorspace_get_named_index(const char *name)
void IMB_colormanagement_look_items_add(EnumPropertyItem **items, int *totitem, const char *view_name)
int IMB_colormanagement_display_get_named_index(const char *name)
Read Guarded memory(de)allocation.
BMesh const char void * data
ATTR_WARN_UNUSED_RESULT const void * element
void MOV_close(MovieReader *anim)
void relations_strip_free_anim(Strip *strip)
void relations_invalidate_cache(Scene *scene, Strip *strip)
void relations_invalidate_scene_strips(const Main *bmain, const Scene *scene_target)
void relations_invalidate_cache_raw(Scene *scene, Strip *strip)
void relations_invalidate_movieclip_strips(Main *bmain, MovieClip *clip_target)
void for_each_callback(ListBase *seqbase, ForEachFunc callback, void *user_data)
void cache_cleanup(Scene *scene)
void rna_iterator_array_begin(CollectionPropertyIterator *iter, PointerRNA *ptr, void *data, int itemsize, int length, bool free_ptr, IteratorSkipFunc skip)
PointerRNA RNA_pointer_create_discrete(ID *id, StructRNA *type, void *data)
PointerRNA RNA_id_pointer_create(ID *id)
static void rna_def_curvemap(BlenderRNA *brna)
static void rna_def_curvemap_points_api(BlenderRNA *brna, PropertyRNA *cprop)
void RNA_def_color(BlenderRNA *brna)
static void rna_def_curvemappoint(BlenderRNA *brna)
static void rna_def_color_ramp(BlenderRNA *brna)
static void rna_def_curvemapping(BlenderRNA *brna)
static void rna_def_histogram(BlenderRNA *brna)
static void rna_def_color_ramp_element(BlenderRNA *brna)
static void rna_def_scopes(BlenderRNA *brna)
static void rna_def_colormanage(BlenderRNA *brna)
const EnumPropertyItem rna_enum_color_space_convert_default_items[]
static void rna_def_color_ramp_element_api(BlenderRNA *brna, PropertyRNA *cprop)
static const EnumPropertyItem prop_handle_type_items[]
void RNA_def_property_boolean_sdna(PropertyRNA *prop, const char *structname, const char *propname, int64_t booleanbit)
void RNA_def_property_pointer_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_struct_path_func(StructRNA *srna, const char *path)
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)
void RNA_def_parameter_clear_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
void RNA_def_property_float_default(PropertyRNA *prop, float value)
void RNA_def_function_return(FunctionRNA *func, PropertyRNA *ret)
void RNA_def_property_float_funcs(PropertyRNA *prop, const char *get, const char *set, const char *range)
void RNA_def_property_ui_text(PropertyRNA *prop, const char *name, const char *description)
void RNA_def_property_ui_icon(PropertyRNA *prop, int icon, int consecutive)
void RNA_def_property_srna(PropertyRNA *prop, const char *type)
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)
void RNA_def_property_collection_funcs(PropertyRNA *prop, const char *begin, const char *next, const char *end, const char *get, const char *length, const char *lookupint, const char *lookupstring, const char *assignint)
void RNA_def_struct_ui_text(StructRNA *srna, const char *name, const char *description)
void RNA_def_property_boolean_funcs(PropertyRNA *prop, const char *get, const char *set)
void RNA_def_property_enum_items(PropertyRNA *prop, const EnumPropertyItem *item)
void RNA_def_struct_sdna(StructRNA *srna, const char *structname)
FunctionRNA * RNA_def_function(StructRNA *srna, const char *identifier, const char *call)
void RNA_def_property_array(PropertyRNA *prop, int length)
void RNA_def_property_range(PropertyRNA *prop, double min, double max)
PropertyRNA * RNA_def_pointer(StructOrFunctionRNA *cont_, const char *identifier, const char *type, const char *ui_name, const char *ui_description)
void RNA_def_property_struct_type(PropertyRNA *prop, const char *type)
void RNA_def_property_collection_sdna(PropertyRNA *prop, const char *structname, const char *propname, const char *lengthpropname)
void RNA_def_function_ui_description(FunctionRNA *func, const char *description)
void RNA_def_property_update(PropertyRNA *prop, int noteflag, const char *func)
PropertyRNA * RNA_def_property(StructOrFunctionRNA *cont_, const char *identifier, int type, int subtype)
void RNA_def_property_enum_funcs(PropertyRNA *prop, const char *get, const char *set, const char *item)
void RNA_def_property_enum_bitflag_sdna(PropertyRNA *prop, const char *structname, const char *propname)
StructRNA * RNA_def_struct(BlenderRNA *brna, const char *identifier, const char *from)
void RNA_enum_item_end(EnumPropertyItem **items, int *totitem)
void RNA_def_function_flag(FunctionRNA *func, int flag)
void RNA_def_property_clear_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_enum_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_translation_context(PropertyRNA *prop, const char *context)
void RNA_def_function_output(FunctionRNA *, PropertyRNA *ret)
void RNA_def_property_flag(PropertyRNA *prop, PropertyFlag flag)
void RNA_def_property_float_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_property_ui_range(PropertyRNA *prop, double min, double max, double step, int precision)
void RNA_def_property_int_sdna(PropertyRNA *prop, const char *structname, const char *propname)
void RNA_def_parameter_flags(PropertyRNA *prop, PropertyFlag flag_property, ParameterFlag flag_parameter)
std::optional< std::string > RNA_path_from_ID_to_struct(const PointerRNA *ptr)
bool RNA_path_resolve(const PointerRNA *ptr, const char *path, PointerRNA *r_ptr, PropertyRNA **r_prop)
struct CurveMapping curve_mapping
ColorManagedViewSettings view_settings
ColorManagedColorspaceSettings sequencer_colorspace_settings
ColorManagedDisplaySettings display_settings
ColorManagedColorspaceSettings colorspace_settings
struct MovieReader * anim
void WM_main_add_notifier(uint type, void *reference)