Blender V5.0
DNA_curve_types.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#pragma once
10
11#include "DNA_ID.h"
12#include "DNA_curve_enums.h"
13#include "DNA_defs.h"
14#include "DNA_listBase.h"
15#include "DNA_vec_types.h"
16
17#ifdef __cplusplus
18# include <optional>
19#endif
20
21struct AnimData;
22struct Curves;
23struct CurveProfile;
24struct EditFont;
25struct GHash;
26struct Key;
27struct Material;
28struct Object;
29struct VFont;
30
31/* These two Lines with # tell `makesdna` this struct can be excluded. */
32#
33#
34typedef struct BevPoint {
35 float vec[3], tilt, radius, weight, offset;
37 float sina, cosa;
39 float dir[3], tan[3], quat[4];
40 short dupe_tag;
42
43/* These two Lines with # tell `makesdna` this struct can be excluded. */
44#
45#
46typedef struct BevList {
47 struct BevList *next, *prev;
48 int nr, dupe_nr;
50 int poly;
51 int hole;
54 float *seglen;
57
75typedef struct BezTriple {
76 float vec[3][3];
78 float tilt;
80 float weight;
82 float radius;
83
85 char ipo;
86
88 uint8_t h1, h2;
90 uint8_t f1, f2, f3;
91
97 char hide;
98
100 char easing;
102 float back;
105
108 char _pad[3];
110
115#define BEZKEYTYPE(bezt) (eBezTriple_KeyframeType((bezt)->hide))
116#define BEZKEYTYPE_LVALUE(bezt) ((bezt)->hide)
117
121typedef struct BPoint {
122 float vec[4];
124 float tilt;
126 float weight;
128 uint8_t f1;
129 char _pad1[1];
130 short hide;
132 float radius;
133 char _pad[4];
135
140typedef struct Nurb {
142
143
144 struct Nurb *next, *prev;
145 short type;
147 short mat_nr;
148 short hide, flag;
151 char _pad[4];
155 short flagu, flagv;
156
157 float *knotsu, *knotsv;
160
164
165 /* only used for dynamically generated Nurbs created from OB_FONT's */
168
170 float kern;
171 short mat_nr;
172 char flag;
173 char _pad[1];
175
176typedef struct TextBox {
177 float x, y, w, h;
179
180/* These two Lines with # tell `makesdna` this struct can be excluded. */
181#
182#
183typedef struct EditNurb {
185
186 /* base of nurbs' list (old Curve->editnurb) */
188
189 /* index data for shape keys */
191
192 /* shape key being edited */
194
200
202
204#ifdef __cplusplus
207 static constexpr ID_Type id_type = ID_CU_LEGACY;
208#endif
209
212 struct AnimData *adt;
213
216
219
221 struct Key *key;
222 struct Material **mat;
223
225
228
236 short ob_type;
237
239 char _pad0[7];
242
245 int flag;
247
248 /* default */
251
252 /* edit, index in nurb list */
253 int actnu;
254 /* edit, index in active nurb (BPoint or BezTriple) */
256
265 char _pad[3];
266
267 /* font part */
269 float xof, yof;
271
272 /* copy of EditFont vars (wchar_t aligned),
273 * warning! don't use in editmode (storage only) */
274 int pos;
276
277 /* text data */
284 int len;
285 char *str;
287
288 char family[64];
289 struct VFont *vfont;
290 struct VFont *vfontb;
291 struct VFont *vfonti;
292 struct VFont *vfontbi;
293
294 struct TextBox *tb;
296
299 /* font part end */
300
302 float ctime;
305
306 char _pad2[1];
307
314
322 const struct Curves *curve_eval;
323
325
326#ifdef __cplusplus
328 std::optional<int> material_index_max() const;
329#endif
330} Curve;
331
332/* **************** CURVE ********************* */
333
334/* checks if the given BezTriple is selected */
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))
347
348#define BEZT_ISSEL_IDX(bezt, i) \
349 ((i == 0 && (bezt)->f1 & SELECT) || (i == 1 && (bezt)->f2 & SELECT) || \
350 (i == 2 && (bezt)->f3 & SELECT))
351
352#define BEZT_SEL_ALL(bezt) \
353 { \
354 (bezt)->f1 |= SELECT; \
355 (bezt)->f2 |= SELECT; \
356 (bezt)->f3 |= SELECT; \
357 } \
358 ((void)0)
359#define BEZT_DESEL_ALL(bezt) \
360 { \
361 (bezt)->f1 &= ~SELECT; \
362 (bezt)->f2 &= ~SELECT; \
363 (bezt)->f3 &= ~SELECT; \
364 } \
365 ((void)0)
366#define BEZT_SEL_INVERT(bezt) \
367 { \
368 (bezt)->f1 ^= SELECT; \
369 (bezt)->f2 ^= SELECT; \
370 (bezt)->f3 ^= SELECT; \
371 } \
372 ((void)0)
373
374#define BEZT_SEL_IDX(bezt, i) \
375 { \
376 switch (i) { \
377 case 0: \
378 (bezt)->f1 |= SELECT; \
379 break; \
380 case 1: \
381 (bezt)->f2 |= SELECT; \
382 break; \
383 case 2: \
384 (bezt)->f3 |= SELECT; \
385 break; \
386 default: \
387 break; \
388 } \
389 } \
390 ((void)0)
391
392#define BEZT_DESEL_IDX(bezt, i) \
393 { \
394 switch (i) { \
395 case 0: \
396 (bezt)->f1 &= ~SELECT; \
397 break; \
398 case 1: \
399 (bezt)->f2 &= ~SELECT; \
400 break; \
401 case 2: \
402 (bezt)->f3 &= ~SELECT; \
403 break; \
404 default: \
405 break; \
406 } \
407 } \
408 ((void)0)
409
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.
ID_Type
@ ID_CU_LEGACY
struct CharInfo CharInfo
struct TextBox TextBox
#define DNA_DEFINE_CXX_METHODS(class_name)
Definition DNA_defs.h:66
These structs are the foundation for all linked lists in the library system.
#define typedef
char _pad1[1]
char _pad[4]
uint8_t f1
float vec[4]
struct BevList * next
float * seglen
BevPoint * bevpoints
int * segbevcount
struct BevList * prev
float dir[3]
float tan[3]
float quat[4]
float vec[3]
char auto_handle_type
float vec[3][3]
struct Object * bevobj
char edit_data_from_original
char overflow
float spacing
struct CurveProfile * bevel_profile
struct Material ** mat
struct VFont * vfont
short totcol
float bevfac2
struct CharInfo curinfo
struct TextBox * tb
short resolv
void * batch_cache
struct AnimData * adt
float ulheight
float ulpos
const struct Curves * curve_eval
struct EditFont * editfont
char bevfac2_mapping
short bevresol
char family[64]
short resolv_ren
float extrude
short resolu
float bevfac1
char spacemode
char texspace_flag
short twist_mode
float wordspace
float bevel_radius
struct Key * key
struct CharInfo * strinfo
char _pad2[1]
struct VFont * vfontb
float linewidth
struct Object * textoncurve
float shear
char _pad0[7]
char bevel_mode
char * str
EditNurb * editnurb
struct VFont * vfonti
float offset
float smallcaps_scale
ListBase nurb
float linedist
float fsize
struct VFont * vfontbi
float ctime
short ob_type
float texspace_size[3]
char taper_radius_mode
float texspace_location[3]
char bevfac1_mapping
struct Object * taperobj
short resolu_ren
float twist_smooth
char _pad[3]
char needs_flush_to_id
struct GHash * keyindex
ListBase nurbs
Definition DNA_ID.h:414
short flagu
short orderu
struct Nurb * next
short orderv
float * knotsu
short flag
short tilt_interp
short type
float * knotsv
BezTriple * bezt
BPoint * bp
short resolu
struct Nurb * prev
char _pad[4]
short resolv
short radius_interp
short hide
short flagv
short mat_nr