Blender V5.0
BKE_colortools.hh File Reference
#include <cstdint>

Go to the source code of this file.

Enumerations

enum class  CurveMapSlopeType : int8_t { Negative = 0 , Positive = 1 , PositiveNegative = 2 }

Functions

void BKE_curvemapping_set_defaults (CurveMapping *cumap, int tot, float minx, float miny, float maxx, float maxy, short default_handle_type)
CurveMappingBKE_curvemapping_add (int tot, float minx, float miny, float maxx, float maxy)
void BKE_curvemapping_free_data (CurveMapping *cumap)
void BKE_curvemapping_free (CurveMapping *cumap)
void BKE_curvemapping_copy_data (CurveMapping *target, const CurveMapping *cumap)
CurveMappingBKE_curvemapping_copy (const CurveMapping *cumap)
void BKE_curvemapping_set_black_white_ex (const float black[3], const float white[3], float r_bwmul[3])
void BKE_curvemapping_set_black_white (CurveMapping *cumap, const float black[3], const float white[3])
void BKE_curvemapping_reset_view (CurveMapping *cumap)
void BKE_curvemap_reset (CurveMap *cuma, const rctf *clipr, int preset, CurveMapSlopeType slope)
void BKE_curvemap_remove (CurveMap *cuma, short flag)
bool BKE_curvemap_remove_point (CurveMap *cuma, CurveMapPoint *point)
CurveMapPointBKE_curvemap_insert (CurveMap *cuma, float x, float y)
void BKE_curvemap_handle_set (CurveMap *cuma, int type)
void BKE_curvemapping_changed (CurveMapping *cumap, bool rem_doubles)
void BKE_curvemapping_changed_all (CurveMapping *cumap)
void BKE_curvemapping_init (CurveMapping *cumap)
float BKE_curvemap_evaluateF (const CurveMapping *cumap, const CurveMap *cuma, float value)
float BKE_curvemapping_evaluateF (const CurveMapping *cumap, int cur, float value)
void BKE_curvemapping_evaluate3F (const CurveMapping *cumap, float vecout[3], const float vecin[3])
void BKE_curvemapping_evaluateRGBF (const CurveMapping *cumap, float vecout[3], const float vecin[3])
void BKE_curvemapping_evaluate_premulRGB (const CurveMapping *cumap, unsigned char vecout_byte[3], const unsigned char vecin_byte[3])
void BKE_curvemapping_evaluate_premulRGBF_ex (const CurveMapping *cumap, float vecout[3], const float vecin[3], const float black[3], const float bwmul[3])
void BKE_curvemapping_evaluate_premulRGBF (const CurveMapping *cumap, float vecout[3], const float vecin[3])
bool BKE_curvemapping_RGBA_does_something (const CurveMapping *cumap)
void BKE_curvemapping_table_F (const CurveMapping *cumap, float **array, int *size)
void BKE_curvemapping_table_RGBA (const CurveMapping *cumap, float **array, int *size)
void BKE_curvemapping_get_range_minimums (const CurveMapping *curve_mapping, float minimums[4])
void BKE_curvemapping_compute_range_dividers (const CurveMapping *curve_mapping, float dividers[4])
void BKE_curvemapping_compute_slopes (const CurveMapping *curve_mapping, float start_slopes[4], float end_slopes[4])
bool BKE_curvemapping_is_map_identity (const CurveMapping *curve_mapping, int index)
void BKE_curvemapping_premultiply (CurveMapping *cumap, bool restore)
void BKE_curvemapping_blend_write (BlendWriter *writer, const CurveMapping *cumap)
void BKE_curvemapping_curves_blend_write (BlendWriter *writer, const CurveMapping *cumap)
void BKE_curvemapping_blend_read (BlendDataReader *reader, CurveMapping *cumap)
void BKE_histogram_update_sample_line (Histogram *hist, ImBuf *ibuf, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)
void BKE_scopes_update (Scopes *scopes, ImBuf *ibuf, const ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings)
void BKE_scopes_free (Scopes *scopes)
void BKE_scopes_new (Scopes *scopes)
void BKE_color_managed_display_settings_init (ColorManagedDisplaySettings *settings)
void BKE_color_managed_display_settings_copy (ColorManagedDisplaySettings *new_settings, const ColorManagedDisplaySettings *settings)
void BKE_color_managed_view_settings_init (ColorManagedViewSettings *view_settings, const ColorManagedDisplaySettings *display_settings, const char *view_transform)
void BKE_color_managed_view_settings_copy (ColorManagedViewSettings *new_settings, const ColorManagedViewSettings *settings)
void BKE_color_managed_view_settings_copy_keep_curve_mapping (ColorManagedViewSettings *new_settings, const ColorManagedViewSettings *settings)
void BKE_color_managed_view_settings_free (ColorManagedViewSettings *settings)
void BKE_color_managed_view_settings_blend_write (BlendWriter *writer, const ColorManagedViewSettings *settings)
void BKE_color_managed_view_settings_blend_read_data (BlendDataReader *reader, ColorManagedViewSettings *settings)
void BKE_color_managed_colorspace_settings_init (ColorManagedColorspaceSettings *colorspace_settings)
void BKE_color_managed_colorspace_settings_copy (ColorManagedColorspaceSettings *colorspace_settings, const ColorManagedColorspaceSettings *settings)
bool BKE_color_managed_colorspace_settings_equals (const ColorManagedColorspaceSettings *settings1, const ColorManagedColorspaceSettings *settings2)

Enumeration Type Documentation

◆ CurveMapSlopeType

enum class CurveMapSlopeType : int8_t
strong
Enumerator
Negative 
Positive 
PositiveNegative 

Definition at line 43 of file BKE_colortools.hh.

Function Documentation

◆ BKE_color_managed_colorspace_settings_copy()

◆ BKE_color_managed_colorspace_settings_equals()

bool BKE_color_managed_colorspace_settings_equals ( const ColorManagedColorspaceSettings * settings1,
const ColorManagedColorspaceSettings * settings2 )

Definition at line 2017 of file colortools.cc.

References ColorManagedColorspaceSettings::name, and STREQ.

Referenced by image_save_post().

◆ BKE_color_managed_colorspace_settings_init()

void BKE_color_managed_colorspace_settings_init ( ColorManagedColorspaceSettings * colorspace_settings)

◆ BKE_color_managed_display_settings_copy()

◆ BKE_color_managed_display_settings_init()

◆ BKE_color_managed_view_settings_blend_read_data()

◆ BKE_color_managed_view_settings_blend_write()

◆ BKE_color_managed_view_settings_copy()

◆ BKE_color_managed_view_settings_copy_keep_curve_mapping()

void BKE_color_managed_view_settings_copy_keep_curve_mapping ( ColorManagedViewSettings * new_settings,
const ColorManagedViewSettings * settings )

◆ BKE_color_managed_view_settings_free()

◆ BKE_color_managed_view_settings_init()

◆ BKE_curvemap_evaluateF()

◆ BKE_curvemap_handle_set()

void BKE_curvemap_handle_set ( CurveMap * cuma,
int type )

◆ BKE_curvemap_insert()

◆ BKE_curvemap_remove()

void BKE_curvemap_remove ( CurveMap * cuma,
short flag )

Removes with flag set.

Definition at line 217 of file colortools.cc.

References b, CurveMap::curve, CurveMapPoint::flag, flag, MEM_freeN(), MEM_malloc_arrayN(), and CurveMap::totpoint.

Referenced by BKE_curvemapping_changed(), and curvemap_buttons_layout().

◆ BKE_curvemap_remove_point()

bool BKE_curvemap_remove_point ( CurveMap * cuma,
CurveMapPoint * point )

Remove specified point.

Definition at line 188 of file colortools.cc.

References b, CurveMap::curve, MEM_freeN(), MEM_malloc_arrayN(), and CurveMap::totpoint.

◆ BKE_curvemap_reset()

◆ BKE_curvemapping_add()

◆ BKE_curvemapping_blend_read()

◆ BKE_curvemapping_blend_write()

◆ BKE_curvemapping_changed()

◆ BKE_curvemapping_changed_all()

void BKE_curvemapping_changed_all ( CurveMapping * cumap)

◆ BKE_curvemapping_compute_range_dividers()

void BKE_curvemapping_compute_range_dividers ( const CurveMapping * curve_mapping,
float dividers[4] )

Get the reciprocal of the difference between the maximum and the minimum x value of each curve map table. Evaluation parameters can be multiplied by this value to be normalized. If the difference is zero, 1^8 is returned.

Referenced by blender::nodes::node_shader_curves_cc::flt::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::vec::gpu_shader_curve_vec(), blender::nodes::node_composite_huecorrect_cc::node_gpu_material(), and blender::nodes::node_composite_rgb_curves_cc::node_gpu_material().

◆ BKE_curvemapping_compute_slopes()

void BKE_curvemapping_compute_slopes ( const CurveMapping * curve_mapping,
float start_slopes[4],
float end_slopes[4] )

Compute the slopes at the start and end points of each curve map. The slopes are multiplied by the range of the curve map to compensate for parameter normalization. If the slope is vertical, 1^8 is returned.

Referenced by blender::nodes::node_shader_curves_cc::flt::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::vec::gpu_shader_curve_vec(), and blender::nodes::node_composite_rgb_curves_cc::node_gpu_material().

◆ BKE_curvemapping_copy()

◆ BKE_curvemapping_copy_data()

◆ BKE_curvemapping_curves_blend_write()

void BKE_curvemapping_curves_blend_write ( BlendWriter * writer,
const CurveMapping * cumap )

◆ BKE_curvemapping_evaluate3F()

void BKE_curvemapping_evaluate3F ( const CurveMapping * cumap,
float vecout[3],
const float vecin[3] )

◆ BKE_curvemapping_evaluate_premulRGB()

void BKE_curvemapping_evaluate_premulRGB ( const CurveMapping * cumap,
unsigned char vecout_byte[3],
const unsigned char vecin_byte[3] )

◆ BKE_curvemapping_evaluate_premulRGBF()

void BKE_curvemapping_evaluate_premulRGBF ( const CurveMapping * cumap,
float vecout[3],
const float vecin[3] )

◆ BKE_curvemapping_evaluate_premulRGBF_ex()

void BKE_curvemapping_evaluate_premulRGBF_ex ( const CurveMapping * cumap,
float vecout[3],
const float vecin[3],
const float black[3],
const float bwmul[3] )

Same as BKE_curvemapping_evaluate_premulRGBF but black/bwmul are passed as args for the compositor where they can change per pixel.

Use in conjunction with BKE_curvemapping_set_black_white_ex

Parameters
blackUse instead of cumap->black
bwmulUse instead of cumap->bwmul

Definition at line 1191 of file colortools.cc.

References b, BKE_curvemap_evaluateF(), CurveMapping::cm, copy_v3_v3(), CURVE_TONE_FILMLIKE, CURVE_TONE_STANDARD, evaluate_film_like(), output, and CurveMapping::tone.

Referenced by BKE_curvemapping_evaluate_premulRGBF(), and blender::nodes::node_composite_rgb_curves_cc::node_build_multi_function().

◆ BKE_curvemapping_evaluateF()

float BKE_curvemapping_evaluateF ( const CurveMapping * cumap,
int cur,
float value )

Single curve, with table check. Works with curve 'cur'.

Definition at line 1095 of file colortools.cc.

References BKE_curvemap_evaluateF(), CurveMapping::clipr, CurveMapping::cm, CUMA_DO_CLIP, CurveMapping::flag, rctf::ymax, and rctf::ymin.

Referenced by blender::ed::sculpt_paint::greasepencil::PaintOperationExecutor::active_jitter(), blender::seq::HueCorrectApplyOp::apply(), BKE_brush_calc_curve_factors(), BKE_brush_curve_strength(), BKE_curvemapping_integrate_clamped(), BKE_paint_randomize_color(), blender::ed::sculpt_paint::brush_dynamic_size_get(), blender::ed::sculpt_paint::greasepencil::brush_radius(), blender::ed::sculpt_paint::brush_radius_factor(), brush_strength(), blender::ed::sculpt_paint::brush_strength_factor(), blender::nodes::node_shader_curves_cc::flt::CurveFloatFunction::call(), blender::draw::gpencil::cdf_from_curvemapping(), blender::eevee::Sampling::cdf_from_curvemapping(), blender::ed::sculpt_paint::CombOperationExecutor::comb_projected(), blender::ed::sculpt_paint::CombOperationExecutor::comb_spherical(), blender::deform_drawing(), blender::deform_drawing(), do_clump_level(), do_rough_curve(), blender::ed::sculpt_paint::greasepencil::EraseOperationExecutor::execute(), blender::nodes::node_composite_time_curves_cc::TimeCurveOperation::execute(), Freestyle_evaluateCurveMappingF(), blender::ed::sculpt_paint::vwpaint::get_brush_alpha_data(), blender::ed::greasepencil::get_frame_falloff(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_easing_calc(), blender::ed::greasepencil::grease_pencil_primitive_update_curves(), blender::hook_falloff(), hook_falloff(), blender::nodes::node_composite_huecorrect_cc::hue_correct(), blender::modify_stroke_color(), blender::modify_stroke_color(), blender::modify_stroke_color(), blender::ed::greasepencil::opacity_from_input_sample(), blender::ed::sculpt_paint::paint_brush_update(), blender::ed::sculpt_paint::paint_space_stroke_spacing_variable(), blender::ed::sculpt_paint::paint_stroke_jitter_pos(), blender::ed::sculpt_paint::image::ops::paint::paint_stroke_update_step(), blender::ed::sculpt_paint::auto_mask::process_cavity_factor(), project_paint_uvpixel_mask(), blender::ed::greasepencil::radius_from_input_sample(), blender::ed::greasepencil::randomize_opacity(), blender::ed::greasepencil::randomize_radius(), blender::ed::greasepencil::randomize_rotation(), blender::ed::greasepencil::randomize_rotation(), time_colorfn(), blender::ed::sculpt_paint::vwpaint::update_cache_variants(), warpModifier_do(), and weightvg_do_map().

◆ BKE_curvemapping_evaluateRGBF()

void BKE_curvemapping_evaluateRGBF ( const CurveMapping * cumap,
float vecout[3],
const float vecin[3] )

RGB case, no black/white points, no pre-multiply.

Definition at line 1120 of file colortools.cc.

References BKE_curvemap_evaluateF(), and CurveMapping::cm.

Referenced by blender::nodes::node_shader_curves_cc::rgb::CurveRGBFunction::call(), and rgb_colorfn().

◆ BKE_curvemapping_free()

◆ BKE_curvemapping_free_data()

◆ BKE_curvemapping_get_range_minimums()

◆ BKE_curvemapping_init()

void BKE_curvemapping_init ( CurveMapping * cumap)

Call before all evaluation functions.

Definition at line 1360 of file colortools.cc.

References CurveMapping::cm, CM_TOT, curvemap_make_table(), and CurveMap::table.

Referenced by BKE_brush_gen_radial_control_imbuf(), BKE_gpencil_modifier_blend_read_data(), BKE_paint_blend_read_data(), BKE_paint_default_curve(), BKE_particlesettings_clump_curve_init(), BKE_particlesettings_rough_curve_init(), BKE_particlesettings_twist_curve_init(), BKE_sculpt_default_cavity_curve(), BKE_toolsettings_copy(), blo_do_versions_270(), blo_do_versions_280(), blo_do_versions_290(), blo_update_defaults_scene(), blender::ed::sculpt_paint::auto_mask::cache_init(), blender::ed::sculpt_paint::expand::cache_initial_config_set(), blender::ed::sculpt_paint::pose::calc_twist_deform(), blender::ed::sculpt_paint::CombOperationExecutor::comb_projected(), blender::ed::sculpt_paint::CombOperationExecutor::comb_spherical(), blender::ed::sculpt_paint::greasepencil::create_fill_guide_brush(), blender::seq::curves_apply(), deformVerts_do(), blender::ed::sculpt_paint::color::do_paint_brush(), blender::nodes::node_composite_time_curves_cc::TimeCurveOperation::execute(), Freestyle_evaluateCurveMappingF(), blender::ed::sculpt_paint::greasepencil::WeightPaintOperation::get_brush_settings(), blender::nodes::node_shader_curves_cc::flt::gpu_shader_curve_float(), blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), blender::nodes::node_shader_curves_cc::vec::gpu_shader_curve_vec(), blender::ed::sculpt_paint::grease_pencil_fill_init(), blender::ed::sculpt_paint::greasepencil::grease_pencil_interpolate_sequence_exec(), blender::ed::greasepencil::grease_pencil_primitive_invoke(), blender::seq::hue_correct_apply(), blender::ed::sculpt_paint::greasepencil::init_brush(), init_data(), init_data(), blender::ed::sculpt_paint::boundary::init_falloff_bmesh(), blender::ed::sculpt_paint::boundary::init_falloff_grids(), blender::ed::sculpt_paint::boundary::init_falloff_mesh(), blender::modifier::greasepencil::init_influence_data(), blender::ed::sculpt_paint::load_tex_cursor(), blender::nodes::node_composite_huecorrect_cc::node_build_multi_function(), blender::nodes::node_composite_rgb_curves_cc::node_build_multi_function(), blender::nodes::node_composite_huecorrect_cc::node_gpu_material(), blender::nodes::node_composite_rgb_curves_cc::node_gpu_material(), node_initexec_curves(), blender::ed::sculpt_paint::greasepencil::EraseOperation::on_stroke_begin(), blender::ed::sculpt_paint::greasepencil::PaintOperation::on_stroke_begin(), blender::ed::sculpt_paint::greasepencil::TintOperation::on_stroke_begin(), blender::ed::sculpt_paint::paint_stroke_modal(), blender::ed::sculpt_paint::paint_stroke_new(), paint_weight_gradient_exec(), psys_sim_data_init(), radial_control_paint_curve(), blender::ocio::internal::GPUCurveMappping::rasterize(), blender::modifier::greasepencil::read_influence_data(), blender::ed::greasepencil::retrieve_editable_drawings_from_layer_with_falloff(), blender::ed::greasepencil::retrieve_editable_drawings_grouped_per_frame(), blender::ed::greasepencil::retrieve_editable_drawings_with_falloff(), scene_blend_read_data(), scene_init_data(), blender::ed::sculpt_paint::pose::sculpt_pose_do_translate_deform(), blender::nodes::node_shader_curves_cc::flt::sh_node_curve_float_build_multi_function(), blender::nodes::node_shader_curves_cc::rgb::sh_node_curve_rgb_build_multi_function(), blender::nodes::node_shader_curves_cc::vec::sh_node_curve_vec_build_multi_function(), blender::ed::sculpt_paint::smooth_brush_toggle_on(), blender::ed::sculpt_paint::vwpaint::smooth_brush_toggle_on(), blender::seq::sound_equalizermodifier_recreator(), time_colorfn(), uv_sculpt_stroke_init(), warpModifier_do(), and weightvg_do_map().

◆ BKE_curvemapping_is_map_identity()

bool BKE_curvemapping_is_map_identity ( const CurveMapping * curve_mapping,
int index )

Check if the curve map at the index is identity, that is, does nothing. A curve map is said to be identity if:

  • The curve mapping uses extrapolation.
  • Its range is 1.
  • The slope at its start point is 1.
  • The slope at its end point is 1.
  • The number of points is 2.
  • The start point is at (0, 0).
  • The end point is at (1, 1). Note that this could return false even if the curve map is identity, this happens in the case when more than 2 points exist in the curve map but all points are collinear.

Definition at line 1333 of file colortools.cc.

References CurveMapping::cm, CUMA_EXTEND_EXTRAPOLATE, CurveMap::curve, CurveMap::ext_in, CurveMap::ext_out, CurveMapping::flag, CurveMap::maxtable, CurveMap::mintable, CurveMap::totpoint, CurveMapPoint::x, and CurveMapPoint::y.

Referenced by blender::nodes::node_shader_curves_cc::rgb::gpu_shader_curve_rgb(), and blender::nodes::node_composite_rgb_curves_cc::node_gpu_material().

◆ BKE_curvemapping_premultiply()

◆ BKE_curvemapping_reset_view()

void BKE_curvemapping_reset_view ( CurveMapping * cumap)

Reset the view for current curve.

Definition at line 1068 of file colortools.cc.

References CurveMapping::clipr, and CurveMapping::curr.

Referenced by curvemap_tools_func().

◆ BKE_curvemapping_RGBA_does_something()

bool BKE_curvemapping_RGBA_does_something ( const CurveMapping * cumap)

◆ BKE_curvemapping_set_black_white()

void BKE_curvemapping_set_black_white ( CurveMapping * cumap,
const float black[3],
const float white[3] )

◆ BKE_curvemapping_set_black_white_ex()

void BKE_curvemapping_set_black_white_ex ( const float black[3],
const float white[3],
float r_bwmul[3] )

◆ BKE_curvemapping_set_defaults()

◆ BKE_curvemapping_table_F()

void BKE_curvemapping_table_F ( const CurveMapping * cumap,
float ** array,
int * size )

◆ BKE_curvemapping_table_RGBA()

◆ BKE_histogram_update_sample_line()

◆ BKE_scopes_free()

void BKE_scopes_free ( Scopes * scopes)

◆ BKE_scopes_new()

◆ BKE_scopes_update()

void BKE_scopes_update ( Scopes * scopes,
ImBuf * ibuf,
const ColorManagedViewSettings * view_settings,
const ColorManagedDisplaySettings * display_settings )

Definition at line 1732 of file colortools.cc.

References Scopes::accuracy, ScopesUpdateDataChunk::bin_a, ScopesUpdateDataChunk::bin_b, ScopesUpdateDataChunk::bin_g, ScopesUpdateDataChunk::bin_lum, ScopesUpdateDataChunk::bin_r, BLI_parallel_range_settings_defaults(), BLI_task_parallel_range(), BLI_YCC_ITU_BT601, BLI_YCC_ITU_BT709, BLI_YCC_JFIF_0_255, ImBuf::byte_buffer, Histogram::channels, ImBuf::channels, CLAMP_MIN, data, ImBufByteBuffer::data, ImBufFloatBuffer::data, Histogram::data_a, Histogram::data_b, Histogram::data_g, Histogram::data_luma, Histogram::data_r, ELEM, ImBuf::float_buffer, TaskParallelSettings::func_reduce, Scopes::hist, IMB_colormanagement_display_processor_new(), IMB_colormanagement_processor_free(), IMB_display_buffer_acquire(), IMB_display_buffer_release(), INIT_MINMAX, ScopesUpdateDataChunk::max, MEM_calloc_arrayN(), MEM_freeN(), ScopesUpdateDataChunk::min, Scopes::minmax, Scopes::ok, Scopes::sample_full, Scopes::sample_lines, scopes_update_cb(), scopes_update_reduce(), SCOPES_WAVEFRM_LUMA, SCOPES_WAVEFRM_RGB, SCOPES_WAVEFRM_RGB_PARADE, SCOPES_WAVEFRM_YCC_601, SCOPES_WAVEFRM_YCC_709, SCOPES_WAVEFRM_YCC_JPEG, TaskParallelSettings::use_threading, TaskParallelSettings::userdata_chunk, TaskParallelSettings::userdata_chunk_size, Scopes::vecscope, Scopes::vecscope_rgb, Scopes::waveform_1, Scopes::waveform_2, Scopes::waveform_3, Scopes::waveform_tot, Scopes::wavefrm_mode, ImBuf::x, Histogram::x_resolution, ImBuf::y, and Histogram::ymax.

Referenced by ED_space_image_scopes_update().