Blender V4.5
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 Ipo;
27struct Key;
28struct Material;
29struct Object;
30struct VFont;
31
32/* These two Lines with # tell `makesdna` this struct can be excluded. */
33#
34#
35typedef struct BevPoint {
36 float vec[3], tilt, radius, weight, offset;
38 float sina, cosa;
40 float dir[3], tan[3], quat[4];
41 short dupe_tag;
43
44/* These two Lines with # tell `makesdna` this struct can be excluded. */
45#
46#
47typedef struct BevList {
48 struct BevList *next, *prev;
49 int nr, dupe_nr;
51 int poly;
52 int hole;
55 float *seglen;
58
76typedef struct BezTriple {
77 float vec[3][3];
79 float tilt;
81 float weight;
83 float radius;
84
86 char ipo;
87
89 uint8_t h1, h2;
91 uint8_t f1, f2, f3;
92
98 char hide;
99
101 char easing;
103 float back;
106
109 char _pad[3];
111
116#define BEZKEYTYPE(bezt) (eBezTriple_KeyframeType((bezt)->hide))
117#define BEZKEYTYPE_LVALUE(bezt) ((bezt)->hide)
118
122typedef struct BPoint {
123 float vec[4];
125 float tilt;
127 float weight;
129 uint8_t f1;
130 char _pad1[1];
131 short hide;
133 float radius;
134 char _pad[4];
136
141typedef struct Nurb {
143
144
145 struct Nurb *next, *prev;
146 short type;
148 short mat_nr;
149 short hide, flag;
152 char _pad[4];
156 short flagu, flagv;
157
158 float *knotsu, *knotsv;
161
165
166 /* only used for dynamically generated Nurbs created from OB_FONT's */
169
171 float kern;
172 short mat_nr;
173 char flag;
174 char _pad[1];
176
177typedef struct TextBox {
178 float x, y, w, h;
180
181/* These two Lines with # tell `makesdna` this struct can be excluded. */
182#
183#
184typedef struct EditNurb {
186
187 /* base of nurbs' list (old Curve->editnurb) */
189
190 /* index data for shape keys */
192
193 /* shape key being edited */
195
201
203
205#ifdef __cplusplus
208 static constexpr ID_Type id_type = ID_CU_LEGACY;
209#endif
210
213 struct AnimData *adt;
214
217
220
223 struct Ipo *ipo DNA_DEPRECATED;
224 struct Key *key;
225 struct Material **mat;
226
228
231
239 short ob_type;
240
242 char _pad0[7];
245
248 int flag;
250
251 /* default */
254
255 /* edit, index in nurb list */
256 int actnu;
257 /* edit, index in active nurb (BPoint or BezTriple) */
259
268 char _pad[3];
269
270 /* font part */
272 float xof, yof;
274
275 /* copy of EditFont vars (wchar_t aligned),
276 * warning! don't use in editmode (storage only) */
277 int pos;
279
280 /* text data */
287 int len;
288 char *str;
290
291 char family[64];
292 struct VFont *vfont;
293 struct VFont *vfontb;
294 struct VFont *vfonti;
295 struct VFont *vfontbi;
296
297 struct TextBox *tb;
299
302 /* font part end */
303
305 float ctime;
308
309 char _pad2[1];
310
317
325 const struct Curves *curve_eval;
326
328
329#ifdef __cplusplus
331 std::optional<int> material_index_max() const;
332#endif
333} Curve;
334
335/* **************** CURVE ********************* */
336
337/* checks if the given BezTriple is selected */
338#define BEZT_ISSEL_ANY(bezt) \
339 (((bezt)->f2 & SELECT) || ((bezt)->f1 & SELECT) || ((bezt)->f3 & SELECT))
340#define BEZT_ISSEL_ALL(bezt) \
341 (((bezt)->f2 & SELECT) && ((bezt)->f1 & SELECT) && ((bezt)->f3 & SELECT))
342#define BEZT_ISSEL_ALL_HIDDENHANDLES(v3d, bezt) \
343 ((((v3d) != NULL) && ((v3d)->overlay.handle_display == CURVE_HANDLE_NONE)) ? \
344 (bezt)->f2 & SELECT : \
345 BEZT_ISSEL_ALL(bezt))
346#define BEZT_ISSEL_ANY_HIDDENHANDLES(v3d, bezt) \
347 ((((v3d) != NULL) && ((v3d)->overlay.handle_display == CURVE_HANDLE_NONE)) ? \
348 (bezt)->f2 & SELECT : \
349 BEZT_ISSEL_ANY(bezt))
350
351#define BEZT_ISSEL_IDX(bezt, i) \
352 ((i == 0 && (bezt)->f1 & SELECT) || (i == 1 && (bezt)->f2 & SELECT) || \
353 (i == 2 && (bezt)->f3 & SELECT))
354
355#define BEZT_SEL_ALL(bezt) \
356 { \
357 (bezt)->f1 |= SELECT; \
358 (bezt)->f2 |= SELECT; \
359 (bezt)->f3 |= SELECT; \
360 } \
361 ((void)0)
362#define BEZT_DESEL_ALL(bezt) \
363 { \
364 (bezt)->f1 &= ~SELECT; \
365 (bezt)->f2 &= ~SELECT; \
366 (bezt)->f3 &= ~SELECT; \
367 } \
368 ((void)0)
369#define BEZT_SEL_INVERT(bezt) \
370 { \
371 (bezt)->f1 ^= SELECT; \
372 (bezt)->f2 ^= SELECT; \
373 (bezt)->f3 ^= SELECT; \
374 } \
375 ((void)0)
376
377#define BEZT_SEL_IDX(bezt, i) \
378 { \
379 switch (i) { \
380 case 0: \
381 (bezt)->f1 |= SELECT; \
382 break; \
383 case 1: \
384 (bezt)->f2 |= SELECT; \
385 break; \
386 case 2: \
387 (bezt)->f3 |= SELECT; \
388 break; \
389 default: \
390 break; \
391 } \
392 } \
393 ((void)0)
394
395#define BEZT_DESEL_IDX(bezt, i) \
396 { \
397 switch (i) { \
398 case 0: \
399 (bezt)->f1 &= ~SELECT; \
400 break; \
401 case 1: \
402 (bezt)->f2 &= ~SELECT; \
403 break; \
404 case 2: \
405 (bezt)->f3 &= ~SELECT; \
406 break; \
407 default: \
408 break; \
409 } \
410 } \
411 ((void)0)
412
413#define BEZT_IS_AUTOH(bezt) \
414 (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
These structs are the foundation for all linked lists in the library system.
#define typedef
#define DNA_DEFINE_CXX_METHODS(class_name)
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 Ipo *ipo DNA_DEPRECATED
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:404
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