Blender V4.3
BKE_curveprofile.h File Reference

Go to the source code of this file.

Enumerations

enum  { PROF_UPDATE_NONE = 0 , PROF_UPDATE_REMOVE_DOUBLES = (1 << 0) , PROF_UPDATE_CLIP = (1 << 1) }
 

Functions

void BKE_curveprofile_set_defaults (struct CurveProfile *profile)
 
struct CurveProfileBKE_curveprofile_add (eCurveProfilePresets preset)
 
void BKE_curveprofile_free_data (struct CurveProfile *profile)
 
void BKE_curveprofile_free (struct CurveProfile *profile)
 
void BKE_curveprofile_copy_data (struct CurveProfile *target, const struct CurveProfile *profile)
 
struct CurveProfileBKE_curveprofile_copy (const struct CurveProfile *profile)
 
bool BKE_curveprofile_move_handle (struct CurveProfilePoint *point, bool handle_1, bool snap, const float delta[2])
 
bool BKE_curveprofile_move_point (struct CurveProfile *profile, struct CurveProfilePoint *point, bool snap, const float delta[2])
 
bool BKE_curveprofile_remove_point (struct CurveProfile *profile, struct CurveProfilePoint *point)
 
void BKE_curveprofile_remove_by_flag (struct CurveProfile *profile, short flag)
 
struct CurveProfilePointBKE_curveprofile_insert (struct CurveProfile *profile, float x, float y)
 
void BKE_curveprofile_selected_handle_set (struct CurveProfile *profile, int type_1, int type_2)
 
void BKE_curveprofile_reverse (struct CurveProfile *profile)
 
void BKE_curveprofile_reset_view (struct CurveProfile *profile)
 
void BKE_curveprofile_reset (struct CurveProfile *profile)
 
int BKE_curveprofile_table_size (const struct CurveProfile *profile)
 
void BKE_curveprofile_init (struct CurveProfile *profile, short segments_len)
 
void BKE_curveprofile_update (struct CurveProfile *profile, int update_flags)
 
void BKE_curveprofile_evaluate_length_portion (const struct CurveProfile *profile, float length_portion, float *x_out, float *y_out)
 
void BKE_curveprofile_blend_write (struct BlendWriter *writer, const struct CurveProfile *profile)
 
void BKE_curveprofile_blend_read (struct BlendDataReader *reader, struct CurveProfile *profile)
 

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
PROF_UPDATE_NONE 
PROF_UPDATE_REMOVE_DOUBLES 
PROF_UPDATE_CLIP 

Definition at line 128 of file BKE_curveprofile.h.

Function Documentation

◆ BKE_curveprofile_add()

struct CurveProfile * BKE_curveprofile_add ( eCurveProfilePresets preset)

Returns a pointer to a newly allocated curve profile, using the given preset.

Definition at line 33 of file curveprofile.cc.

References BKE_curveprofile_reset(), BKE_curveprofile_set_defaults(), and BKE_curveprofile_update().

Referenced by blo_do_versions_280(), blo_update_defaults_scene(), init_data(), and scene_init_data().

◆ BKE_curveprofile_blend_read()

void BKE_curveprofile_blend_read ( struct BlendDataReader * reader,
struct CurveProfile * profile )

Expects that the curve profile itself has been read already.

Definition at line 90 of file curveprofile.cc.

References BKE_curveprofile_init(), and BLO_read_struct_array.

Referenced by blend_read(), curve_blend_read_data(), and scene_blend_read_data().

◆ BKE_curveprofile_blend_write()

void BKE_curveprofile_blend_write ( struct BlendWriter * writer,
const struct CurveProfile * profile )

◆ BKE_curveprofile_copy()

struct CurveProfile * BKE_curveprofile_copy ( const struct CurveProfile * profile)

◆ BKE_curveprofile_copy_data()

void BKE_curveprofile_copy_data ( struct CurveProfile * target,
const struct CurveProfile * profile )

◆ BKE_curveprofile_evaluate_length_portion()

void BKE_curveprofile_evaluate_length_portion ( const struct CurveProfile * profile,
float length_portion,
float * x_out,
float * y_out )

Does a single evaluation along the profile's path. Travels down (length_portion * path) length and returns the position at that point. Where length portion is the fraction of the total path length where we want the location.

Parameters
length_portionThe portion (0 to 1) of the path's full length to sample at.
Note
Requires BKE_curveprofile_init or BKE_curveprofile_update call before to fill table.

◆ BKE_curveprofile_free()

void BKE_curveprofile_free ( struct CurveProfile * profile)

Definition at line 52 of file curveprofile.cc.

References BKE_curveprofile_free_data(), and MEM_freeN().

Referenced by BKE_toolsettings_free(), curve_free_data(), and free_data().

◆ BKE_curveprofile_free_data()

void BKE_curveprofile_free_data ( struct CurveProfile * profile)

◆ BKE_curveprofile_init()

void BKE_curveprofile_init ( struct CurveProfile * profile,
short segments_len )

Refreshes the higher resolution table sampled from the input points. A call to this or BKE_curveprofile_update is needed before evaluation functions that use the table. Also sets the number of segments used for the display preview of the locations of the sampled points.

Definition at line 825 of file curveprofile.cc.

References BKE_curveprofile_update(), PROF_DIRTY_PRESET, and PROF_UPDATE_NONE.

Referenced by BKE_curveprofile_blend_read(), and set_profile_spacing().

◆ BKE_curveprofile_insert()

struct CurveProfilePoint * BKE_curveprofile_insert ( struct CurveProfile * profile,
float x,
float y )

Adds a new point at the specified location. The choice for which points to place the new vertex between is made by checking which control point line segment is closest to the new point and placing the new vertex in between that segment's points.

Note
Requires BKE_curveprofile_update call after.

Definition at line 266 of file curveprofile.cc.

References dist_squared_to_line_segment_v2(), distance(), CurveProfilePoint::flag, FLT_MAX, CurveProfilePoint::h2, HD_AUTO, HD_VECT, MEM_freeN(), MEM_mallocN, point_init(), PROF_SELECT, PROF_TABLE_MAX, CurveProfilePoint::profile, CurveProfilePoint::x, and x.

Referenced by ui_do_but_CURVEPROFILE().

◆ BKE_curveprofile_move_handle()

bool BKE_curveprofile_move_handle ( struct CurveProfilePoint * point,
bool handle_1,
bool snap,
const float delta[2] )

Move a point's handle, accounting for the alignment of handles with the HD_ALIGN type.

Parameters
handle_1Whether to move the 1st or 2nd control point.
deltaThe relative change in the handle's position.
Note
Requires BKE_curveprofile_update call after.
Returns
Whether the handle moved from its start position.

Definition at line 110 of file curveprofile.cc.

References copy_v2_v2(), ELEM, equals_v2v2(), HD_ALIGN, HD_FREE, and snap().

Referenced by BKE_curveprofile_selected_handle_set(), and ui_numedit_but_CURVEPROFILE().

◆ BKE_curveprofile_move_point()

bool BKE_curveprofile_move_point ( struct CurveProfile * profile,
struct CurveProfilePoint * point,
bool snap,
const float delta[2] )

Moves a control point, accounting for clipping and snapping, and moving free handles.

Parameters
snapWhether to snap the point to the grid
deltaThe relative change of the point's location.
Returns
Whether the point moved from its start position.
Note
Requires BKE_curveprofile_update call after.

Definition at line 150 of file curveprofile.cc.

References ELEM, HD_ALIGN, HD_FREE, max_ff(), min_ff(), PROF_USE_CLIP, and snap().

Referenced by ui_numedit_but_CURVEPROFILE().

◆ BKE_curveprofile_remove_by_flag()

void BKE_curveprofile_remove_by_flag ( struct CurveProfile * profile,
short flag )

Removes every point in the widget with the supplied flag set, except for the first and last.

Parameters
flagCurveProfilePoint.flag.
Note
Requires BKE_curveprofile_update call after.

Definition at line 227 of file curveprofile.cc.

References flag, MEM_freeN(), and MEM_mallocN.

Referenced by CurveProfile_buttons_layout(), and ui_do_but_CURVEPROFILE().

◆ BKE_curveprofile_remove_point()

bool BKE_curveprofile_remove_point ( struct CurveProfile * profile,
struct CurveProfilePoint * point )

Removes a specific point from the path of control points.

Note
Requires BKE_curveprofile_update call after.

Definition at line 197 of file curveprofile.cc.

References BLI_assert, int, MEM_freeN(), MEM_mallocN, and point.

Referenced by BKE_curveprofile_update().

◆ BKE_curveprofile_reset()

◆ BKE_curveprofile_reset_view()

void BKE_curveprofile_reset_view ( struct CurveProfile * profile)

Reset the view to the clipping rectangle.

Definition at line 419 of file curveprofile.cc.

Referenced by curve_profile_tools_fn().

◆ BKE_curveprofile_reverse()

void BKE_curveprofile_reverse ( struct CurveProfile * profile)

Flips the profile across the diagonal so that its orientation is reversed.

Note
Requires BKE_curveprofile_update call after.

Definition at line 343 of file curveprofile.cc.

References BLI_assert, ELEM, CurveProfilePoint::h1_loc, CurveProfilePoint::h2_loc, HD_ALIGN, HD_FREE, MEM_freeN(), MEM_mallocN, mirror_point(), and CurveProfilePoint::profile.

Referenced by CurveProfile_buttons_layout().

◆ BKE_curveprofile_selected_handle_set()

void BKE_curveprofile_selected_handle_set ( struct CurveProfile * profile,
int type_1,
int type_2 )

Sets the handle type of the selected control points.

Parameters
type_1,type_2Handle type for the first handle. HD_VECT, HD_AUTO, HD_FREE, or HD_ALIGN.
Note
Requires BKE_curveprofile_update call after.

Definition at line 321 of file curveprofile.cc.

References BKE_curveprofile_move_handle(), ELEM, CurveProfilePoint::h1, HD_ALIGN, PROF_H1_SELECT, PROF_H2_SELECT, and PROF_SELECT.

◆ BKE_curveprofile_set_defaults()

void BKE_curveprofile_set_defaults ( struct CurveProfile * profile)

Sets the default settings and clip range for the profile widget. Does not generate either table.

Definition at line 805 of file curveprofile.cc.

References BLI_rctf_init(), MEM_callocN, and PROF_USE_CLIP.

Referenced by BKE_curveprofile_add().

◆ BKE_curveprofile_table_size()

int BKE_curveprofile_table_size ( const struct CurveProfile * profile)

◆ BKE_curveprofile_update()

void BKE_curveprofile_update ( struct CurveProfile * profile,
int update_flags )

Should be called after the widget is changed. Does profile and remove double checks and more importantly, recreates the display / evaluation and segments tables.

Parameters
update_flagsBit-field with fields defined in header file. Controls removing doubles and clipping.

Definition at line 968 of file curveprofile.cc.

References BKE_curveprofile_remove_point(), BLI_assert, BLI_rctf_size_x(), BLI_rctf_size_y(), clamp_f(), curveprofile_make_segments_table(), curveprofile_make_table(), len_squared_v2v2(), pow2f(), PROF_UPDATE_CLIP, PROF_UPDATE_REMOVE_DOUBLES, PROF_USE_CLIP, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by BKE_curveprofile_add(), BKE_curveprofile_init(), curve_profile_presets_fn(), curve_profile_tools_fn(), CurveProfile_buttons_layout(), ui_do_but_CURVEPROFILE(), ui_draw_but_CURVEPROFILE(), and ui_numedit_but_CURVEPROFILE().