Blender  V3.3
Classes | Macros | Typedefs | Enumerations | Functions | Variables
BKE_curve.h File Reference
#include "BLI_sys_types.h"
#include "DNA_listBase.h"

Go to the source code of this file.

Classes

struct  CurveCache
 
struct  CVKeyIndex
 

Macros

#define KNOTSU(nu)    ((nu)->orderu + (nu)->pntsu + (((nu)->flagu & CU_NURB_CYCLIC) ? ((nu)->orderu - 1) : 0))
 
#define KNOTSV(nu)    ((nu)->orderv + (nu)->pntsv + (((nu)->flagv & CU_NURB_CYCLIC) ? ((nu)->orderv - 1) : 0))
 
#define SEGMENTSU(nu)   (((nu)->flagu & CU_NURB_CYCLIC) ? (nu)->pntsu : (nu)->pntsu - 1)
 
#define SEGMENTSV(nu)   (((nu)->flagv & CU_NURB_CYCLIC) ? (nu)->pntsv : (nu)->pntsv - 1)
 
#define CU_DO_RADIUS(cu, nu)
 
#define CU_IS_2D(cu)   (((cu)->flag & CU_3D) == 0)
 
#define CU_DO_2DFILL(cu)   (CU_IS_2D(cu) && (((cu)->flag & (CU_FRONT | CU_BACK)) != 0))
 

Typedefs

typedef int eBezTriple_Flag__Alias
 
typedef struct CurveCache CurveCache
 
typedef struct CVKeyIndex CVKeyIndex
 

Enumerations

enum  { BKE_CURVE_BATCH_DIRTY_ALL = 0 , BKE_CURVE_BATCH_DIRTY_SELECT }
 

Functions

void BKE_curve_editfont_free (struct Curve *cu)
 
void BKE_curve_init (struct Curve *cu, short curve_type)
 
struct CurveBKE_curve_add (struct Main *bmain, const char *name, int type)
 
short BKE_curve_type_get (const struct Curve *cu)
 
void BKE_curve_type_test (struct Object *ob)
 
void BKE_curve_dimension_update (struct Curve *cu)
 
struct BoundBoxBKE_curve_boundbox_get (struct Object *ob)
 
void BKE_curve_texspace_calc (struct Curve *cu)
 
void BKE_curve_texspace_ensure (struct Curve *cu)
 
bool BKE_curve_minmax (struct Curve *cu, bool use_radius, float min[3], float max[3])
 
bool BKE_curve_center_median (struct Curve *cu, float cent[3])
 
bool BKE_curve_center_bounds (struct Curve *cu, float cent[3])
 
void BKE_curve_transform_ex (struct Curve *cu, const float mat[4][4], bool do_keys, bool do_props, float unit_scale)
 
void BKE_curve_transform (struct Curve *cu, const float mat[4][4], bool do_keys, bool do_props)
 
void BKE_curve_translate (struct Curve *cu, const float offset[3], bool do_keys)
 
void BKE_curve_material_index_remove (struct Curve *cu, int index)
 
bool BKE_curve_material_index_used (const struct Curve *cu, int index)
 
void BKE_curve_material_index_clear (struct Curve *cu)
 
bool BKE_curve_material_index_validate (struct Curve *cu)
 
void BKE_curve_material_remap (struct Curve *cu, const unsigned int *remap, unsigned int remap_len)
 
void BKE_curve_smooth_flag_set (struct Curve *cu, bool use_smooth)
 
ListBaseBKE_curve_nurbs_get (struct Curve *cu)
 
const ListBaseBKE_curve_nurbs_get_for_read (const struct Curve *cu)
 
int BKE_curve_nurb_vert_index_get (const struct Nurb *nu, const void *vert)
 
void BKE_curve_nurb_active_set (struct Curve *cu, const struct Nurb *nu)
 
struct NurbBKE_curve_nurb_active_get (struct Curve *cu)
 
voidBKE_curve_vert_active_get (struct Curve *cu)
 
void BKE_curve_nurb_vert_active_set (struct Curve *cu, const struct Nurb *nu, const void *vert)
 
bool BKE_curve_nurb_vert_active_get (struct Curve *cu, struct Nurb **r_nu, void **r_vert)
 
void BKE_curve_nurb_vert_active_validate (struct Curve *cu)
 
float(* BKE_curve_nurbs_vert_coords_alloc (const struct ListBase *lb, int *r_vert_len))[3]
 
void BKE_curve_nurbs_vert_coords_get (const struct ListBase *lb, float(*vert_coords)[3], int vert_len)
 
void BKE_curve_nurbs_vert_coords_apply_with_mat4 (struct ListBase *lb, const float(*vert_coords)[3], const float mat[4][4], bool constrain_2d)
 
void BKE_curve_nurbs_vert_coords_apply (struct ListBase *lb, const float(*vert_coords)[3], bool constrain_2d)
 
float(* BKE_curve_nurbs_key_vert_coords_alloc (const struct ListBase *lb, float *key, int *r_vert_len))[3]
 
void BKE_curve_nurbs_key_vert_tilts_apply (struct ListBase *lb, const float *key)
 
void BKE_curve_editNurb_keyIndex_delCV (struct GHash *keyindex, const void *cv)
 
void BKE_curve_editNurb_keyIndex_free (struct GHash **keyindex)
 
void BKE_curve_editNurb_free (struct Curve *cu)
 
struct ListBaseBKE_curve_editNurbs_get (struct Curve *cu)
 
const struct ListBaseBKE_curve_editNurbs_get_for_read (const struct Curve *cu)
 
void BKE_curve_bevelList_free (struct ListBase *bev)
 
void BKE_curve_bevelList_make (struct Object *ob, const struct ListBase *nurbs, bool for_render)
 
ListBase BKE_curve_bevel_make (const struct Curve *curve)
 
void BKE_curve_forward_diff_bezier (float q0, float q1, float q2, float q3, float *p, int it, int stride)
 
void BKE_curve_forward_diff_tangent_bezier (float q0, float q1, float q2, float q3, float *p, int it, int stride)
 
void BKE_curve_rect_from_textbox (const struct Curve *cu, const struct TextBox *tb, struct rctf *r_rect)
 
void BKE_curve_correct_bezpart (const float v1[2], float v2[2], float v3[2], const float v4[2])
 
bool BKE_nurbList_index_get_co (struct ListBase *editnurb, int index, float r_co[3])
 
int BKE_nurbList_verts_count (const struct ListBase *nurb)
 
int BKE_nurbList_verts_count_without_handles (const struct ListBase *nurb)
 
void BKE_nurbList_free (struct ListBase *lb)
 
void BKE_nurbList_duplicate (struct ListBase *lb1, const struct ListBase *lb2)
 
void BKE_nurbList_handles_set (struct ListBase *editnurb, char code)
 
void BKE_nurbList_handles_recalculate (struct ListBase *editnurb, bool calc_length, uint8_t flag)
 
void BKE_nurbList_handles_autocalc (ListBase *editnurb, uint8_t flag)
 
void BKE_nurbList_flag_set (ListBase *editnurb, uint8_t flag, bool set)
 
bool BKE_nurbList_flag_set_from_flag (ListBase *editnurb, uint8_t from_flag, uint8_t flag)
 
void BKE_nurb_free (struct Nurb *nu)
 
struct NurbBKE_nurb_duplicate (const struct Nurb *nu)
 
struct NurbBKE_nurb_copy (struct Nurb *src, int pntsu, int pntsv)
 
void BKE_nurb_project_2d (struct Nurb *nu)
 
void BKE_nurb_minmax (const struct Nurb *nu, bool use_radius, float min[3], float max[3])
 
float BKE_nurb_calc_length (const struct Nurb *nu, int resolution)
 
void BKE_nurb_makeFaces (const struct Nurb *nu, float *coord_array, int rowstride, int resolu, int resolv)
 
void BKE_nurb_makeCurve (const struct Nurb *nu, float *coord_array, float *tilt_array, float *radius_array, float *weight_array, int resolu, int stride)
 
unsigned int BKE_curve_calc_coords_axis_len (unsigned int bezt_array_len, unsigned int resolu, bool is_cyclic, bool use_cyclic_duplicate_endpoint)
 
void BKE_curve_calc_coords_axis (const struct BezTriple *bezt_array, unsigned int bezt_array_len, unsigned int resolu, bool is_cyclic, bool use_cyclic_duplicate_endpoint, unsigned int axis, unsigned int stride, float *r_points)
 
void BKE_nurb_knot_calc_u (struct Nurb *nu)
 
void BKE_nurb_knot_calc_v (struct Nurb *nu)
 
bool BKE_nurb_check_valid_u (const struct Nurb *nu)
 
bool BKE_nurb_check_valid_v (const struct Nurb *nu)
 
bool BKE_nurb_check_valid_uv (const struct Nurb *nu)
 
bool BKE_nurb_valid_message (int pnts, short order, short flag, short type, bool is_surf, int dir, char *message_dst, size_t maxncpy)
 
bool BKE_nurb_order_clamp_u (struct Nurb *nu)
 
bool BKE_nurb_order_clamp_v (struct Nurb *nu)
 
void BKE_nurb_direction_switch (struct Nurb *nu)
 
bool BKE_nurb_type_convert (struct Nurb *nu, short type, bool use_handles, const char **r_err_msg)
 
void BKE_nurb_points_add (struct Nurb *nu, int number)
 
void BKE_nurb_bezierPoints_add (struct Nurb *nu, int number)
 
int BKE_nurb_index_from_uv (struct Nurb *nu, int u, int v)
 
void BKE_nurb_index_to_uv (struct Nurb *nu, int index, int *r_u, int *r_v)
 
struct BezTripleBKE_nurb_bezt_get_next (struct Nurb *nu, struct BezTriple *bezt)
 
struct BezTripleBKE_nurb_bezt_get_prev (struct Nurb *nu, struct BezTriple *bezt)
 
struct BPointBKE_nurb_bpoint_get_next (struct Nurb *nu, struct BPoint *bp)
 
struct BPointBKE_nurb_bpoint_get_prev (struct Nurb *nu, struct BPoint *bp)
 
void BKE_nurb_bezt_calc_normal (struct Nurb *nu, struct BezTriple *bezt, float r_normal[3])
 
void BKE_nurb_bezt_calc_plane (struct Nurb *nu, struct BezTriple *bezt, float r_plane[3])
 
void BKE_nurb_bpoint_calc_normal (struct Nurb *nu, struct BPoint *bp, float r_normal[3])
 
void BKE_nurb_bpoint_calc_plane (struct Nurb *nu, struct BPoint *bp, float r_plane[3])
 
void BKE_nurb_handle_calc (struct BezTriple *bezt, struct BezTriple *prev, struct BezTriple *next, bool is_fcurve, char smoothing)
 
void BKE_nurb_handle_calc_ex (struct BezTriple *bezt, struct BezTriple *prev, struct BezTriple *next, eBezTriple_Flag__Alias handle_sel_flag, bool is_fcurve, char smoothing)
 
void BKE_nurb_handle_calc_simple (struct Nurb *nu, struct BezTriple *bezt)
 
void BKE_nurb_handle_calc_simple_auto (struct Nurb *nu, struct BezTriple *bezt)
 
void BKE_nurb_handle_smooth_fcurve (struct BezTriple *bezt, int total, bool cyclic)
 
void BKE_nurb_handles_calc (struct Nurb *nu)
 
void BKE_nurb_handles_autocalc (struct Nurb *nu, uint8_t flag)
 
void BKE_nurb_bezt_handle_test (struct BezTriple *bezt, eBezTriple_Flag__Alias sel_flag, bool use_handle, bool use_around_local)
 
void BKE_nurb_handles_test (struct Nurb *nu, bool use_handles, bool use_around_local)
 
void BKE_curve_eval_geometry (struct Depsgraph *depsgraph, struct Curve *curve)
 
void BKE_curve_batch_cache_dirty_tag (struct Curve *cu, int mode)
 
void BKE_curve_batch_cache_free (struct Curve *cu)
 
struct CurveBKE_curve_new_from_object (struct Object *object, struct Depsgraph *depsgraph, bool apply_modifiers)
 
Decimate Curve (curve_decimate.c)

Simplify curve data.

unsigned int BKE_curve_decimate_bezt_array (struct BezTriple *bezt_array, unsigned int bezt_array_len, unsigned int resolu, bool is_cyclic, char flag_test, char flag_set, float error_sq_max, unsigned int error_target_len)
 
void BKE_curve_decimate_nurb (struct Nurb *nu, unsigned int resolu, float error_sq_max, unsigned int error_target_len)
 
Deform 3D Coordinates by Curve (curve_deform.c)
void BKE_curve_deform_coords (const struct Object *ob_curve, const struct Object *ob_target, float(*vert_coords)[3], int vert_coords_len, const struct MDeformVert *dvert, int defgrp_index, short flag, short defaxis)
 
void BKE_curve_deform_coords_with_editmesh (const struct Object *ob_curve, const struct Object *ob_target, float(*vert_coords)[3], int vert_coords_len, int defgrp_index, short flag, short defaxis, struct BMEditMesh *em_target)
 
void BKE_curve_deform_co (const struct Object *ob_curve, const struct Object *ob_target, const float orco[3], float vec[3], int no_rot_axis, float r_mat[3][3])
 

Variables

void(* BKE_curve_batch_cache_dirty_tag_cb )(struct Curve *cu, int mode)
 
void(* BKE_curve_batch_cache_free_cb )(struct Curve *cu)
 

Macro Definition Documentation

◆ CU_DO_2DFILL

#define CU_DO_2DFILL (   cu)    (CU_IS_2D(cu) && (((cu)->flag & (CU_FRONT | CU_BACK)) != 0))

Definition at line 70 of file BKE_curve.h.

◆ CU_DO_RADIUS

#define CU_DO_RADIUS (   cu,
  nu 
)
Value:
((((cu)->flag & (CU_PATH_RADIUS | CU_3D)) || (cu)->bevobj || (cu)->extrude != 0.0f || \
(cu)->bevel_radius != 0.0f) ? \
1 : \
0)
@ CU_3D
@ CU_PATH_RADIUS

Definition at line 61 of file BKE_curve.h.

◆ CU_IS_2D

#define CU_IS_2D (   cu)    (((cu)->flag & CU_3D) == 0)

Definition at line 67 of file BKE_curve.h.

◆ KNOTSU

#define KNOTSU (   nu)     ((nu)->orderu + (nu)->pntsu + (((nu)->flagu & CU_NURB_CYCLIC) ? ((nu)->orderu - 1) : 0))

Definition at line 52 of file BKE_curve.h.

◆ KNOTSV

#define KNOTSV (   nu)     ((nu)->orderv + (nu)->pntsv + (((nu)->flagv & CU_NURB_CYCLIC) ? ((nu)->orderv - 1) : 0))

Definition at line 54 of file BKE_curve.h.

◆ SEGMENTSU

#define SEGMENTSU (   nu)    (((nu)->flagu & CU_NURB_CYCLIC) ? (nu)->pntsu : (nu)->pntsu - 1)

Definition at line 58 of file BKE_curve.h.

◆ SEGMENTSV

#define SEGMENTSV (   nu)    (((nu)->flagv & CU_NURB_CYCLIC) ? (nu)->pntsv : (nu)->pntsv - 1)

Definition at line 59 of file BKE_curve.h.

Typedef Documentation

◆ CurveCache

typedef struct CurveCache CurveCache

◆ CVKeyIndex

typedef struct CVKeyIndex CVKeyIndex

◆ eBezTriple_Flag__Alias

Definition at line 30 of file BKE_curve.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
BKE_CURVE_BATCH_DIRTY_ALL 
BKE_CURVE_BATCH_DIRTY_SELECT 

Definition at line 365 of file BKE_curve.h.

Function Documentation

◆ BKE_curve_add()

struct Curve* BKE_curve_add ( struct Main bmain,
const char *  name,
int  type 
)

◆ BKE_curve_batch_cache_dirty_tag()

void BKE_curve_batch_cache_dirty_tag ( struct Curve cu,
int  mode 
)

◆ BKE_curve_batch_cache_free()

void BKE_curve_batch_cache_free ( struct Curve cu)

Definition at line 5530 of file curve.cc.

References Curve::batch_cache, and BKE_curve_batch_cache_free_cb.

Referenced by curve_free_data().

◆ BKE_curve_bevel_make()

ListBase BKE_curve_bevel_make ( const struct Curve curve)

◆ BKE_curve_bevelList_free()

void BKE_curve_bevelList_free ( struct ListBase bev)

◆ BKE_curve_bevelList_make()

void BKE_curve_bevelList_make ( struct Object ob,
const struct ListBase nurbs,
bool  for_render 
)

◆ BKE_curve_boundbox_get()

struct BoundBox* BKE_curve_boundbox_get ( struct Object ob)

◆ BKE_curve_calc_coords_axis()

void BKE_curve_calc_coords_axis ( const struct BezTriple bezt_array,
unsigned int  bezt_array_len,
unsigned int  resolu,
bool  is_cyclic,
bool  use_cyclic_duplicate_endpoint,
unsigned int  axis,
unsigned int  stride,
float r_points 
)

Calculate an array for the entire curve (cyclic or non-cyclic).

Note
Call for each axis.
Parameters
use_cyclic_duplicate_endpointDuplicate values at the beginning & end of the array.

Referenced by BKE_curve_decimate_bezt_array().

◆ BKE_curve_calc_coords_axis_len()

unsigned int BKE_curve_calc_coords_axis_len ( unsigned int  bezt_array_len,
unsigned int  resolu,
bool  is_cyclic,
bool  use_cyclic_duplicate_endpoint 
)

Calculate the length for arrays filled in by BKE_curve_calc_coords_axis.

Definition at line 1650 of file curve.cc.

References is_cyclic().

Referenced by BKE_curve_calc_coords_axis(), BKE_curve_decimate_bezt_array(), and gpencil_stroke_points_from_editcurve_fixed_resolu().

◆ BKE_curve_center_bounds()

bool BKE_curve_center_bounds ( struct Curve cu,
float  cent[3] 
)

Definition at line 5163 of file curve.cc.

References BKE_curve_minmax(), INIT_MINMAX, max, mid_v3_v3v3(), and min.

Referenced by object_origin_set_exec().

◆ BKE_curve_center_median()

bool BKE_curve_center_median ( struct Curve cu,
float  cent[3] 
)

◆ BKE_curve_correct_bezpart()

void BKE_curve_correct_bezpart ( const float  v1[2],
float  v2[2],
float  v3[2],
const float  v4[2] 
)

This function is almost the same as BKE_fcurve_correct_bezpart, but doesn't allow as large a tangent.

Definition at line 5465 of file curve.cc.

References fabsf, len, v1, and v2.

Referenced by curvemap_make_table().

◆ BKE_curve_decimate_bezt_array()

unsigned int BKE_curve_decimate_bezt_array ( struct BezTriple bezt_array,
unsigned int  bezt_array_len,
unsigned int  resolu,
bool  is_cyclic,
char  flag_test,
char  flag_set,
float  error_sq_max,
unsigned int  error_target_len 
)

◆ BKE_curve_decimate_nurb()

void BKE_curve_decimate_nurb ( struct Nurb nu,
unsigned int  resolu,
float  error_sq_max,
unsigned int  error_target_len 
)

◆ BKE_curve_deform_co()

void BKE_curve_deform_co ( const struct Object ob_curve,
const struct Object ob_target,
const float  orco[3],
float  vec[3],
int  no_rot_axis,
float  r_mat[3][3] 
)
Parameters
orcoInput vec and orco = local coord in curve space orco is original not-animated or deformed reference point.

The result written to vec and r_mat.

◆ BKE_curve_deform_coords()

void BKE_curve_deform_coords ( const struct Object ob_curve,
const struct Object ob_target,
float(*)  vert_coords[3],
int  vert_coords_len,
const struct MDeformVert dvert,
int  defgrp_index,
short  flag,
short  defaxis 
)

Referenced by deformVerts(), and deformVertsEM().

◆ BKE_curve_deform_coords_with_editmesh()

void BKE_curve_deform_coords_with_editmesh ( const struct Object ob_curve,
const struct Object ob_target,
float(*)  vert_coords[3],
int  vert_coords_len,
int  defgrp_index,
short  flag,
short  defaxis,
struct BMEditMesh em_target 
)

Referenced by deformVertsEM().

◆ BKE_curve_dimension_update()

void BKE_curve_dimension_update ( struct Curve cu)

◆ BKE_curve_editfont_free()

void BKE_curve_editfont_free ( struct Curve cu)

Frees edit-curve entirely.

Definition at line 336 of file curve.cc.

References Curve::editfont, MEM_freeN, EditFont::selboxes, EditFont::textbuf, and EditFont::textbufinfo.

Referenced by curve_free_data(), and ED_curve_editfont_free().

◆ BKE_curve_editNurb_free()

void BKE_curve_editNurb_free ( struct Curve cu)

◆ BKE_curve_editNurb_keyIndex_delCV()

void BKE_curve_editNurb_keyIndex_delCV ( struct GHash keyindex,
const void cv 
)

◆ BKE_curve_editNurb_keyIndex_free()

void BKE_curve_editNurb_keyIndex_free ( struct GHash **  keyindex)

◆ BKE_curve_editNurbs_get()

struct ListBase* BKE_curve_editNurbs_get ( struct Curve cu)

◆ BKE_curve_editNurbs_get_for_read()

const struct ListBase* BKE_curve_editNurbs_get_for_read ( const struct Curve cu)

Referenced by evaluate_surface_object().

◆ BKE_curve_eval_geometry()

void BKE_curve_eval_geometry ( struct Depsgraph depsgraph,
struct Curve curve 
)

◆ BKE_curve_forward_diff_bezier()

void BKE_curve_forward_diff_bezier ( float  q0,
float  q1,
float  q2,
float  q3,
float p,
int  it,
int  stride 
)

◆ BKE_curve_forward_diff_tangent_bezier()

void BKE_curve_forward_diff_tangent_bezier ( float  q0,
float  q1,
float  q2,
float  q3,
float p,
int  it,
int  stride 
)

Forward differencing method for first derivative of cubic bezier curve.

Definition at line 1745 of file curve.cc.

References Freestyle::a, float(), POINTER_OFFSET, q1, and stride.

Referenced by paint_stroke_curve_end().

◆ BKE_curve_init()

void BKE_curve_init ( struct Curve cu,
short  curve_type 
)

◆ BKE_curve_material_index_clear()

void BKE_curve_material_index_clear ( struct Curve cu)

◆ BKE_curve_material_index_remove()

void BKE_curve_material_index_remove ( struct Curve cu,
int  index 
)

◆ BKE_curve_material_index_used()

bool BKE_curve_material_index_used ( const struct Curve cu,
int  index 
)

◆ BKE_curve_material_index_validate()

bool BKE_curve_material_index_validate ( struct Curve cu)

◆ BKE_curve_material_remap()

void BKE_curve_material_remap ( struct Curve cu,
const unsigned int *  remap,
unsigned int  remap_len 
)

◆ BKE_curve_minmax()

bool BKE_curve_minmax ( struct Curve cu,
bool  use_radius,
float  min[3],
float  max[3] 
)

◆ BKE_curve_new_from_object()

struct Curve* BKE_curve_new_from_object ( struct Object object,
struct Depsgraph depsgraph,
bool  apply_modifiers 
)

◆ BKE_curve_nurb_active_get()

struct Nurb* BKE_curve_nurb_active_get ( struct Curve cu)

◆ BKE_curve_nurb_active_set()

void BKE_curve_nurb_active_set ( struct Curve cu,
const struct Nurb nu 
)

◆ BKE_curve_nurb_vert_active_get()

bool BKE_curve_nurb_vert_active_get ( struct Curve cu,
struct Nurb **  r_nu,
void **  r_vert 
)

◆ BKE_curve_nurb_vert_active_set()

void BKE_curve_nurb_vert_active_set ( struct Curve cu,
const struct Nurb nu,
const void vert 
)

◆ BKE_curve_nurb_vert_active_validate()

void BKE_curve_nurb_vert_active_validate ( struct Curve cu)

◆ BKE_curve_nurb_vert_index_get()

int BKE_curve_nurb_vert_index_get ( const struct Nurb nu,
const void vert 
)

◆ BKE_curve_nurbs_get()

ListBase* BKE_curve_nurbs_get ( struct Curve cu)

◆ BKE_curve_nurbs_get_for_read()

const ListBase* BKE_curve_nurbs_get_for_read ( const struct Curve cu)

◆ BKE_curve_nurbs_key_vert_coords_alloc()

float(* BKE_curve_nurbs_key_vert_coords_alloc ( const struct ListBase lb,
float key,
int *  r_vert_len 
) )[3]

◆ BKE_curve_nurbs_key_vert_tilts_apply()

void BKE_curve_nurbs_key_vert_tilts_apply ( struct ListBase lb,
const float key 
)

◆ BKE_curve_nurbs_vert_coords_alloc()

float(* BKE_curve_nurbs_vert_coords_alloc ( const struct ListBase lb,
int *  r_vert_len 
) )[3]

◆ BKE_curve_nurbs_vert_coords_apply()

void BKE_curve_nurbs_vert_coords_apply ( struct ListBase lb,
const float(*)  vert_coords[3],
bool  constrain_2d 
)

◆ BKE_curve_nurbs_vert_coords_apply_with_mat4()

void BKE_curve_nurbs_vert_coords_apply_with_mat4 ( struct ListBase lb,
const float(*)  vert_coords[3],
const float  mat[4][4],
bool  constrain_2d 
)

◆ BKE_curve_nurbs_vert_coords_get()

void BKE_curve_nurbs_vert_coords_get ( const struct ListBase lb,
float(*)  vert_coords[3],
int  vert_len 
)

◆ BKE_curve_rect_from_textbox()

void BKE_curve_rect_from_textbox ( const struct Curve cu,
const struct TextBox tb,
struct rctf r_rect 
)

◆ BKE_curve_smooth_flag_set()

void BKE_curve_smooth_flag_set ( struct Curve cu,
bool  use_smooth 
)

Definition at line 5440 of file curve.cc.

References CU_SMOOTH, LISTBASE_FOREACH, and Curve::nurb.

Referenced by shade_smooth_exec().

◆ BKE_curve_texspace_calc()

void BKE_curve_texspace_calc ( struct Curve cu)

◆ BKE_curve_texspace_ensure()

void BKE_curve_texspace_ensure ( struct Curve cu)

◆ BKE_curve_transform()

void BKE_curve_transform ( struct Curve cu,
const float  mat[4][4],
bool  do_keys,
bool  do_props 
)

Definition at line 5247 of file curve.cc.

References BKE_curve_transform_ex(), and mat4_to_scale().

◆ BKE_curve_transform_ex()

void BKE_curve_transform_ex ( struct Curve cu,
const float  mat[4][4],
bool  do_keys,
bool  do_props,
float  unit_scale 
)

◆ BKE_curve_translate()

void BKE_curve_translate ( struct Curve cu,
const float  offset[3],
bool  do_keys 
)

◆ BKE_curve_type_get()

short BKE_curve_type_get ( const struct Curve cu)

◆ BKE_curve_type_test()

void BKE_curve_type_test ( struct Object ob)

◆ BKE_curve_vert_active_get()

void* BKE_curve_vert_active_get ( struct Curve cu)

Get active vert for curve.

Definition at line 5012 of file curve.cc.

References BKE_curve_nurb_vert_active_get().

Referenced by ED_curve_editnurb_select_pick().

◆ BKE_nurb_bezierPoints_add()

void BKE_nurb_bezierPoints_add ( struct Nurb nu,
int  number 
)

Definition at line 928 of file curve.cc.

References Nurb::bezt, MEM_recallocN, Nurb::pntsu, and BezTriple::radius.

Referenced by ed_editcurve_addvert(), and gpencil_stroke_to_bezier().

◆ BKE_nurb_bezt_calc_normal()

void BKE_nurb_bezt_calc_normal ( struct Nurb nu,
struct BezTriple bezt,
float  r_normal[3] 
)

◆ BKE_nurb_bezt_calc_plane()

void BKE_nurb_bezt_calc_plane ( struct Nurb nu,
struct BezTriple bezt,
float  r_plane[3] 
)

◆ BKE_nurb_bezt_get_next()

struct BezTriple* BKE_nurb_bezt_get_next ( struct Nurb nu,
struct BezTriple bezt 
)

◆ BKE_nurb_bezt_get_prev()

struct BezTriple* BKE_nurb_bezt_get_prev ( struct Nurb nu,
struct BezTriple bezt 
)

◆ BKE_nurb_bezt_handle_test()

void BKE_nurb_bezt_handle_test ( struct BezTriple bezt,
eBezTriple_Flag__Alias  sel_flag,
bool  use_handle,
bool  use_around_local 
)

Update selected handle types to ensure valid state, e.g. deduce "Auto" types to concrete ones. Thereby sel_flag defines what qualifies as selected. Use when something has changed handle positions.

The caller needs to recalculate handles.

Parameters
sel_flagThe flag (bezt.f1/2/3) value to use to determine selection. Usually SELECT, but may want to use a different one at times (if caller does not operate on * selection).
use_handleCheck selection state of individual handles, otherwise always update both handles if the key is selected.

Definition at line 4049 of file curve.cc.

References ELEM, BezTriple::f1, BezTriple::f2, BezTriple::f3, BezTriple::h1, BezTriple::h2, HD_ALIGN, HD_AUTO, HD_AUTO_ANIM, HD_FREE, HD_VECT, SEL_F1, SEL_F2, and SEL_F3.

Referenced by BKE_nurb_handles_test(), createTransGPencil_curves(), graphedit_activekey_handles_cb(), and testhandles_fcurve().

◆ BKE_nurb_bpoint_calc_normal()

void BKE_nurb_bpoint_calc_normal ( struct Nurb nu,
struct BPoint bp,
float  r_normal[3] 
)

◆ BKE_nurb_bpoint_calc_plane()

void BKE_nurb_bpoint_calc_plane ( struct Nurb nu,
struct BPoint bp,
float  r_plane[3] 
)

◆ BKE_nurb_bpoint_get_next()

struct BPoint* BKE_nurb_bpoint_get_next ( struct Nurb nu,
struct BPoint bp 
)

◆ BKE_nurb_bpoint_get_prev()

struct BPoint* BKE_nurb_bpoint_get_prev ( struct Nurb nu,
struct BPoint bp 
)

◆ BKE_nurb_calc_length()

float BKE_nurb_calc_length ( const struct Nurb nu,
int  resolution 
)

◆ BKE_nurb_check_valid_u()

bool BKE_nurb_check_valid_u ( const struct Nurb nu)

◆ BKE_nurb_check_valid_uv()

bool BKE_nurb_check_valid_uv ( const struct Nurb nu)

Referenced by evaluate_surface_object().

◆ BKE_nurb_check_valid_v()

bool BKE_nurb_check_valid_v ( const struct Nurb nu)

◆ BKE_nurb_copy()

struct Nurb* BKE_nurb_copy ( struct Nurb src,
int  pntsu,
int  pntsv 
)

Copy the nurb but allow for different number of points (to be copied after this).

Definition at line 701 of file curve.cc.

References Nurb::bezt, Nurb::bp, Nurb::knotsu, Nurb::knotsv, MEM_malloc_arrayN, MEM_mallocN, Nurb::pntsu, Nurb::pntsv, src, and SWAP.

Referenced by adduplicateflagNurb(), curve_delete_segments(), and ed_editcurve_addvert().

◆ BKE_nurb_direction_switch()

void BKE_nurb_direction_switch ( struct Nurb nu)

◆ BKE_nurb_duplicate()

struct Nurb* BKE_nurb_duplicate ( const struct Nurb nu)

◆ BKE_nurb_free()

void BKE_nurb_free ( struct Nurb nu)

◆ BKE_nurb_handle_calc()

void BKE_nurb_handle_calc ( struct BezTriple bezt,
struct BezTriple prev,
struct BezTriple next,
bool  is_fcurve,
char  smoothing 
)

Recalculate the handles of a nurb bezier-triple. Acts based on handle selection with SELECT flag. To use a different flag, use BKE_nurb_handle_calc_ex().

Definition at line 3978 of file curve.cc.

References calchandleNurb_intern(), next, blender::meshintersect::prev(), and SELECT.

Referenced by BKE_gpencil_editcurve_recalculate_handles(), BKE_nurb_handle_calc_simple(), calc_keyHandles(), mask_calc_point_handle(), and points_to_bezier().

◆ BKE_nurb_handle_calc_ex()

void BKE_nurb_handle_calc_ex ( struct BezTriple bezt,
struct BezTriple prev,
struct BezTriple next,
eBezTriple_Flag__Alias  handle_sel_flag,
bool  is_fcurve,
char  smoothing 
)

Variant of BKE_nurb_handle_calc() that allows calculating based on a different select flag.

Parameters
handle_sel_flagThe flag (bezt.f1/2/3) value to use to determine selection. Usually SELECT, but may want to use a different one at times (if caller does not operate on selection).

Definition at line 3984 of file curve.cc.

References calchandleNurb_intern(), next, and blender::meshintersect::prev().

Referenced by BKE_fcurve_handles_recalc_ex().

◆ BKE_nurb_handle_calc_simple()

void BKE_nurb_handle_calc_simple ( struct Nurb nu,
struct BezTriple bezt 
)

Similar to BKE_nurb_handle_calc but for curves and figures out the previous and next for us.

Definition at line 4025 of file curve.cc.

References BKE_nurb_bezt_get_next(), BKE_nurb_bezt_get_prev(), BKE_nurb_handle_calc(), next, Nurb::pntsu, and blender::meshintersect::prev().

Referenced by adduplicateflagNurb(), and BKE_nurb_handle_calc_simple_auto().

◆ BKE_nurb_handle_calc_simple_auto()

void BKE_nurb_handle_calc_simple_auto ( struct Nurb nu,
struct BezTriple bezt 
)

◆ BKE_nurb_handle_smooth_fcurve()

void BKE_nurb_handle_smooth_fcurve ( struct BezTriple bezt,
int  total,
bool  cyclic 
)

Definition at line 3929 of file curve.cc.

References bezier_handle_calc_smooth_fcurve(), count, and is_free_auto_point().

Referenced by BKE_fcurve_handles_recalc_ex().

◆ BKE_nurb_handles_autocalc()

void BKE_nurb_handles_autocalc ( struct Nurb nu,
uint8_t  flag 
)

◆ BKE_nurb_handles_calc()

void BKE_nurb_handles_calc ( struct Nurb nu)

◆ BKE_nurb_handles_test()

void BKE_nurb_handles_test ( struct Nurb nu,
bool  use_handles,
bool  use_around_local 
)

◆ BKE_nurb_index_from_uv()

int BKE_nurb_index_from_uv ( struct Nurb nu,
int  u,
int  v 
)

Definition at line 942 of file curve.cc.

References CU_NURB_CYCLIC, Nurb::flagu, Nurb::flagv, mod_i(), Nurb::pntsu, Nurb::pntsv, and v.

Referenced by curve_select_shortest_path_surf().

◆ BKE_nurb_index_to_uv()

void BKE_nurb_index_to_uv ( struct Nurb nu,
int  index,
int *  r_u,
int *  r_v 
)

Definition at line 964 of file curve.cc.

References BLI_assert, Nurb::pntsu, and Nurb::pntsv.

Referenced by curve_select_shortest_path_surf().

◆ BKE_nurb_knot_calc_u()

void BKE_nurb_knot_calc_u ( struct Nurb nu)

◆ BKE_nurb_knot_calc_v()

void BKE_nurb_knot_calc_v ( struct Nurb nu)

◆ BKE_nurb_makeCurve()

void BKE_nurb_makeCurve ( const struct Nurb nu,
float coord_array,
float tilt_array,
float radius_array,
float weight_array,
int  resolu,
int  stride 
)
Parameters
coord_arrayHas to be (3 * 4 * pntsu * resolu) in size and zero-ed
tilt_arrayset when non-NULL
radius_arrayset when non-NULL

Referenced by curve_to_displist(), evaluate_surface_object(), and gpencil_convert_spline().

◆ BKE_nurb_makeFaces()

void BKE_nurb_makeFaces ( const struct Nurb nu,
float coord_array,
int  rowstride,
int  resolu,
int  resolv 
)
Parameters
coord_arrayhas to be (3 * 4 * resolu * resolv) in size, and zero-ed.

Referenced by evaluate_surface_object().

◆ BKE_nurb_minmax()

void BKE_nurb_minmax ( const struct Nurb nu,
bool  use_radius,
float  min[3],
float  max[3] 
)

if use_radius is truth, minmax will take points' radius into account, which will make bound-box closer to beveled curve.

◆ BKE_nurb_order_clamp_u()

bool BKE_nurb_order_clamp_u ( struct Nurb nu)

◆ BKE_nurb_order_clamp_v()

bool BKE_nurb_order_clamp_v ( struct Nurb nu)

Definition at line 4823 of file curve.cc.

References max_ii(), Nurb::orderv, and Nurb::pntsv.

Referenced by adduplicateflagNurb(), curve_delete_segments(), and ed_surf_delete_selected().

◆ BKE_nurb_points_add()

void BKE_nurb_points_add ( struct Nurb nu,
int  number 
)

Be sure to call BKE_nurb_knot_calc_u / BKE_nurb_knot_calc_v after this.

Definition at line 915 of file curve.cc.

References Nurb::bp, MEM_recallocN, Nurb::pntsu, and BPoint::radius.

Referenced by gpencil_stroke_to_path().

◆ BKE_nurb_project_2d()

void BKE_nurb_project_2d ( struct Nurb nu)

◆ BKE_nurb_type_convert()

bool BKE_nurb_type_convert ( struct Nurb nu,
short  type,
bool  use_handles,
const char **  r_err_msg 
)

◆ BKE_nurb_valid_message()

bool BKE_nurb_valid_message ( int  pnts,
short  order,
short  flag,
short  type,
bool  is_surf,
int  dir,
char *  message_dst,
size_t  maxncpy 
)

◆ BKE_nurbList_duplicate()

void BKE_nurbList_duplicate ( struct ListBase lb1,
const struct ListBase lb2 
)

◆ BKE_nurbList_flag_set()

void BKE_nurbList_flag_set ( ListBase editnurb,
uint8_t  flag,
bool  set 
)

◆ BKE_nurbList_flag_set_from_flag()

bool BKE_nurbList_flag_set_from_flag ( ListBase editnurb,
uint8_t  from_flag,
uint8_t  flag 
)

Set flag for every point that already has from_flag set.

Definition at line 4389 of file curve.cc.

References CU_BEZIER, BezTriple::f1, BPoint::f1, BezTriple::f2, BezTriple::f3, LISTBASE_FOREACH, and SET_FLAG_FROM_TEST.

Referenced by do_lasso_select_curve(), do_nurbs_box_select(), and nurbscurve_circle_select().

◆ BKE_nurbList_free()

void BKE_nurbList_free ( struct ListBase lb)

◆ BKE_nurbList_handles_autocalc()

void BKE_nurbList_handles_autocalc ( ListBase editnurb,
uint8_t  flag 
)

Definition at line 4205 of file curve.cc.

References BKE_nurb_handles_autocalc(), and LISTBASE_FOREACH.

◆ BKE_nurbList_handles_recalculate()

void BKE_nurbList_handles_recalculate ( struct ListBase editnurb,
bool  calc_length,
uint8_t  flag 
)

◆ BKE_nurbList_handles_set()

void BKE_nurbList_handles_set ( struct ListBase editnurb,
char  code 
)
Parameters
code
  • 1 (HD_AUTO): set auto-handle.
  • 2 (HD_VECT): set vector-handle.
  • 3 (HD_ALIGN) it toggle, vector-handles become HD_FREE.
  • 5: Set align, like 3 but no toggle.
  • 6: Clear align (setting HD_FREE), like 3 but no toggle.

Definition at line 4212 of file curve.cc.

References Freestyle::a, CU_BEZIER, ELEM, BezTriple::f1, BezTriple::f3, BezTriple::h1, BezTriple::h2, HD_ALIGN, HD_AUTO, HD_FREE, HD_VECT, LISTBASE_FOREACH, nurb_handles_calc__align_selected(), and SELECT.

Referenced by set_handle_type_exec().

◆ BKE_nurbList_index_get_co()

bool BKE_nurbList_index_get_co ( struct ListBase editnurb,
int  index,
float  r_co[3] 
)

Definition at line 562 of file curve.cc.

References copy_v3_v3(), CU_BEZIER, and LISTBASE_FOREACH.

Referenced by give_parvert().

◆ BKE_nurbList_verts_count()

int BKE_nurbList_verts_count ( const struct ListBase nurb)

◆ BKE_nurbList_verts_count_without_handles()

int BKE_nurbList_verts_count_without_handles ( const struct ListBase nurb)

Referenced by BKE_object_as_kdtree().

Variable Documentation

◆ BKE_curve_batch_cache_dirty_tag_cb

void(* BKE_curve_batch_cache_dirty_tag_cb) (struct Curve *cu, int mode) ( struct Curve cu,
int  mode 
)
extern

Definition at line 5521 of file curve.cc.

Referenced by BKE_curve_batch_cache_dirty_tag(), and DRW_engines_register().

◆ BKE_curve_batch_cache_free_cb

void(* BKE_curve_batch_cache_free_cb) (struct Curve *cu) ( struct Curve cu)
extern

Definition at line 5522 of file curve.cc.

Referenced by BKE_curve_batch_cache_free(), and DRW_engines_register().