115#define BEZKEYTYPE(bezt) (eBezTriple_KeyframeType((bezt)->hide))
116#define BEZKEYTYPE_LVALUE(bezt) ((bezt)->hide)
328 std::optional<int> material_index_max()
const;
335#define BEZT_ISSEL_ANY(bezt) \
336 (((bezt)->f2 & SELECT) || ((bezt)->f1 & SELECT) || ((bezt)->f3 & SELECT))
337#define BEZT_ISSEL_ALL(bezt) \
338 (((bezt)->f2 & SELECT) && ((bezt)->f1 & SELECT) && ((bezt)->f3 & SELECT))
339#define BEZT_ISSEL_ALL_HIDDENHANDLES(v3d, bezt) \
340 ((((v3d) != NULL) && ((v3d)->overlay.handle_display == CURVE_HANDLE_NONE)) ? \
341 (bezt)->f2 & SELECT : \
342 BEZT_ISSEL_ALL(bezt))
343#define BEZT_ISSEL_ANY_HIDDENHANDLES(v3d, bezt) \
344 ((((v3d) != NULL) && ((v3d)->overlay.handle_display == CURVE_HANDLE_NONE)) ? \
345 (bezt)->f2 & SELECT : \
346 BEZT_ISSEL_ANY(bezt))
348#define BEZT_ISSEL_IDX(bezt, i) \
349 ((i == 0 && (bezt)->f1 & SELECT) || (i == 1 && (bezt)->f2 & SELECT) || \
350 (i == 2 && (bezt)->f3 & SELECT))
352#define BEZT_SEL_ALL(bezt) \
354 (bezt)->f1 |= SELECT; \
355 (bezt)->f2 |= SELECT; \
356 (bezt)->f3 |= SELECT; \
359#define BEZT_DESEL_ALL(bezt) \
361 (bezt)->f1 &= ~SELECT; \
362 (bezt)->f2 &= ~SELECT; \
363 (bezt)->f3 &= ~SELECT; \
366#define BEZT_SEL_INVERT(bezt) \
368 (bezt)->f1 ^= SELECT; \
369 (bezt)->f2 ^= SELECT; \
370 (bezt)->f3 ^= SELECT; \
374#define BEZT_SEL_IDX(bezt, i) \
378 (bezt)->f1 |= SELECT; \
381 (bezt)->f2 |= SELECT; \
384 (bezt)->f3 |= SELECT; \
392#define BEZT_DESEL_IDX(bezt, i) \
396 (bezt)->f1 &= ~SELECT; \
399 (bezt)->f2 &= ~SELECT; \
402 (bezt)->f3 &= ~SELECT; \
410#define BEZT_IS_AUTOH(bezt) \
411 (ELEM((bezt)->h1, HD_AUTO, HD_AUTO_ANIM) && ELEM((bezt)->h2, HD_AUTO, HD_AUTO_ANIM))
ID and Library types, which are fundamental for SDNA.
#define DNA_DEFINE_CXX_METHODS(class_name)
These structs are the foundation for all linked lists in the library system.
char edit_data_from_original
struct CurveProfile * bevel_profile
const struct Curves * curve_eval
struct EditFont * editfont
struct CharInfo * strinfo
struct Object * textoncurve
float texspace_location[3]