Blender V4.3
displist.cc File Reference
#include <cmath>
#include <cstdio>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "DNA_curve_types.h"
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
#include "BLI_index_range.hh"
#include "BLI_listbase.h"
#include "BLI_math_rotation.h"
#include "BLI_memarena.h"
#include "BLI_scanfill.h"
#include "BLI_span.hh"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_anim_path.h"
#include "BKE_curve.hh"
#include "BKE_curve_legacy_convert.hh"
#include "BKE_displist.h"
#include "BKE_geometry_set.hh"
#include "BKE_key.hh"
#include "BKE_lib_id.hh"
#include "BKE_mesh.hh"
#include "BKE_modifier.hh"
#include "BKE_object.hh"
#include "BKE_object_types.hh"
#include "BKE_vfont.hh"
#include "BLI_sys_types.h"
#include "DEG_depsgraph.hh"
#include "DEG_depsgraph_query.hh"

Go to the source code of this file.

Functions

static void displist_elem_free (DispList *dl)
 
void BKE_displist_free (ListBase *lb)
 
DispListBKE_displist_find (ListBase *lb, int type)
 
bool BKE_displist_surfindex_get (const DispList *dl, int a, int *b, int *p1, int *p2, int *p3, int *p4)
 
static void curve_to_displist (const Curve *cu, const ListBase *nubase, const bool for_render, ListBase *r_dispbase)
 
void BKE_displist_fill (const ListBase *dispbase, ListBase *to, const float normal_proj[3], const bool flip_normal)
 
static void bevels_to_filledpoly (const Curve *cu, ListBase *dispbase)
 
static void curve_to_filledpoly (const Curve *cu, ListBase *dispbase)
 
static float displist_calc_taper (Depsgraph *depsgraph, const Scene *scene, Object *taperobj, float fac)
 
float BKE_displist_calc_taper (Depsgraph *depsgraph, const Scene *scene, Object *taperobj, int cur, int tot)
 
static ModifierDatacurve_get_tessellate_point (const Scene *scene, const Object *ob, const bool for_render, const bool editmode)
 
void BKE_curve_calc_modifiers_pre (Depsgraph *depsgraph, const Scene *scene, Object *ob, ListBase *source_nurb, ListBase *target_nurb, const bool for_render)
 
static bool do_curve_implicit_mesh_conversion (const Curve *curve, ModifierData *first_modifier, const Scene *scene, const ModifierMode required_mode)
 
static blender::bke::GeometrySet curve_calc_modifiers_post (Depsgraph *depsgraph, const Scene *scene, Object *ob, const ListBase *dispbase, const bool for_render)
 
static void displist_surf_indices (DispList *dl)
 
static blender::bke::GeometrySet evaluate_surface_object (Depsgraph *depsgraph, const Scene *scene, Object *ob, const bool for_render, ListBase *r_dispbase)
 
static void rotateBevelPiece (const Curve *cu, const BevPoint *bevp, const BevPoint *nbevp, const DispList *dlb, const float bev_blend, const float widfac, const float radius_factor, float **r_data)
 
static void fillBevelCap (const Nurb *nu, const DispList *dlb, const float *prev_fp, ListBase *dispbase)
 
static void calc_bevfac_segment_mapping (const BevList *bl, float bevfac, float spline_length, int *r_bev, float *r_blend)
 
static void calc_bevfac_spline_mapping (const BevList *bl, float bevfac, float spline_length, int *r_bev, float *r_blend)
 
static void calc_bevfac_mapping_default (const BevList *bl, int *r_start, float *r_firstblend, int *r_steps, float *r_lastblend)
 
static void calc_bevfac_mapping (const Curve *cu, const BevList *bl, const Nurb *nu, int *r_start, float *r_firstblend, int *r_steps, float *r_lastblend)
 
static blender::bke::GeometrySet evaluate_curve_type_object (Depsgraph *depsgraph, const Scene *scene, Object *ob, const bool for_render, ListBase *r_dispbase)
 
void BKE_displist_make_curveTypes (Depsgraph *depsgraph, const Scene *scene, Object *ob, const bool for_render)
 
void BKE_displist_minmax (const ListBase *dispbase, float min[3], float max[3])
 

Function Documentation

◆ bevels_to_filledpoly()

◆ BKE_curve_calc_modifiers_pre()

◆ BKE_displist_calc_taper()

float BKE_displist_calc_taper ( Depsgraph * depsgraph,
const Scene * scene,
Object * taperobj,
int cur,
int tot )

Definition at line 498 of file displist.cc.

References depsgraph, displist_calc_taper(), and float.

◆ BKE_displist_fill()

◆ BKE_displist_find()

DispList * BKE_displist_find ( ListBase * lb,
int type )

◆ BKE_displist_free()

◆ BKE_displist_make_curveTypes()

◆ BKE_displist_minmax()

void BKE_displist_minmax ( const ListBase * dispbase,
float min[3],
float max[3] )

Definition at line 1366 of file displist.cc.

References DL_INDEX3, LISTBASE_FOREACH, min, minmax_v3v3_v3(), and zero_v3().

◆ BKE_displist_surfindex_get()

bool BKE_displist_surfindex_get ( const DispList * dl,
int a,
int * b,
int * p1,
int * p2,
int * p3,
int * p4 )

Definition at line 82 of file displist.cc.

References DL_CYCL_U, DL_CYCL_V, DispList::flag, DispList::nr, and DispList::parts.

Referenced by displist_surf_indices().

◆ calc_bevfac_mapping()

◆ calc_bevfac_mapping_default()

static void calc_bevfac_mapping_default ( const BevList * bl,
int * r_start,
float * r_firstblend,
int * r_steps,
float * r_lastblend )
static

Definition at line 1011 of file displist.cc.

References BevList::nr.

Referenced by calc_bevfac_mapping(), and evaluate_curve_type_object().

◆ calc_bevfac_segment_mapping()

static void calc_bevfac_segment_mapping ( const BevList * bl,
float bevfac,
float spline_length,
int * r_bev,
float * r_blend )
static

Definition at line 963 of file displist.cc.

References int, BevList::nr, BevList::segbevcount, and BevList::seglen.

Referenced by calc_bevfac_mapping().

◆ calc_bevfac_spline_mapping()

static void calc_bevfac_spline_mapping ( const BevList * bl,
float bevfac,
float spline_length,
int * r_bev,
float * r_blend )
static

Definition at line 989 of file displist.cc.

References BevList::bevpoints, len, BevList::nr, and BevPoint::offset.

Referenced by calc_bevfac_mapping().

◆ curve_calc_modifiers_post()

◆ curve_get_tessellate_point()

◆ curve_to_displist()

◆ curve_to_filledpoly()

static void curve_to_filledpoly ( const Curve * cu,
ListBase * dispbase )
static

◆ displist_calc_taper()

static float displist_calc_taper ( Depsgraph * depsgraph,
const Scene * scene,
Object * taperobj,
float fac )
static

◆ displist_elem_free()

static void displist_elem_free ( DispList * dl)
static

Definition at line 48 of file displist.cc.

References DispList::index, MEM_freeN(), DispList::nors, and DispList::verts.

Referenced by BKE_displist_free().

◆ displist_surf_indices()

static void displist_surf_indices ( DispList * dl)
static

◆ do_curve_implicit_mesh_conversion()

static bool do_curve_implicit_mesh_conversion ( const Curve * curve,
ModifierData * first_modifier,
const Scene * scene,
const ModifierMode required_mode )
static
Returns
True if the deformed curve control point data should be implicitly converted directly to a mesh, or false if it can be left as curve data via the Curves type.

Definition at line 644 of file displist.cc.

References BKE_modifier_is_enabled(), CU_BEV_MODE_OBJECT, CU_DO_2DFILL, CU_FAST, eModifierType_Nodes, ModifierData::next, and ModifierData::type.

Referenced by curve_calc_modifiers_post().

◆ evaluate_curve_type_object()

static blender::bke::GeometrySet evaluate_curve_type_object ( Depsgraph * depsgraph,
const Scene * scene,
Object * ob,
const bool for_render,
ListBase * r_dispbase )
static

Definition at line 1101 of file displist.cc.

References Curve::bevfac1, Curve::bevfac2, BevList::bevpoints, BKE_anim_path_calc_data(), BKE_curve_bevel_make(), BKE_curve_bevelList_make(), BKE_curve_calc_modifiers_pre(), BKE_curve_nurbs_get_for_read(), BKE_displist_fill(), BKE_displist_free(), BKE_nurbList_duplicate(), BKE_vfont_to_curve_nubase(), BLI_addtail(), BLI_assert, BLI_listbase_is_empty(), calc_bevfac_mapping(), calc_bevfac_mapping_default(), DispList::charidx, Nurb::charidx, DispList::col, copy_v3_v3(), BevPoint::cosa, CU_FILL_CAPS, CU_MAP_TAPER, CU_NURB_CYCLIC, CU_PATH, CU_TAPER_RADIUS_ADD, CU_TAPER_RADIUS_MULTIPLY, curve_calc_modifiers_post(), curve_to_displist(), curve_to_filledpoly(), DAG_EVAL_NEED_CURVE_PATH, data, Object::data, DEG_get_eval_flags_for_id(), depsgraph, BevPoint::dir, displist_calc_taper(), displist_surf_indices(), DL_BACK_CURVE, DL_CYCL_U, DL_CYCL_V, DL_FRONT_CURVE, DL_POLY, DL_SEGM, DL_SURF, ELEM, fabsf, fillBevelCap(), ListBase::first, Curve::flag, DispList::flag, Nurb::flag, Nurb::flagu, float, FO_EDIT, Object::id, len, LISTBASE_FOREACH, Nurb::mat_nr, MEM_mallocN, negate_v3_v3(), BevList::next, Nurb::next, BevList::nr, DispList::nr, OB_CURVES_LEGACY, OB_FONT, Curve::offset, DispList::parts, BevList::poly, BevPoint::radius, rotateBevelPiece(), DispList::rt, Object::runtime, BevPoint::sina, steps, Curve::taper_radius_mode, Curve::taperobj, DispList::type, Object::type, BevPoint::vec, and DispList::verts.

Referenced by BKE_displist_make_curveTypes().

◆ evaluate_surface_object()

◆ fillBevelCap()

static void fillBevelCap ( const Nurb * nu,
const DispList * dlb,
const float * prev_fp,
ListBase * dispbase )
static

◆ rotateBevelPiece()

static void rotateBevelPiece ( const Curve * cu,
const BevPoint * bevp,
const BevPoint * nbevp,
const DispList * dlb,
const float bev_blend,
const float widfac,
const float radius_factor,
float ** r_data )
static