Blender  V3.3
DNA_key_types.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 #pragma once
4 
13 #include "DNA_ID.h"
14 #include "DNA_defs.h"
15 #include "DNA_listBase.h"
16 
17 #ifdef __cplusplus
18 extern "C" {
19 #endif
20 
21 struct AnimData;
22 struct Ipo;
23 
24 typedef struct KeyBlock {
25  struct KeyBlock *next, *prev;
26 
32  float pos;
34  float curval;
35 
37  short type;
38  char _pad1[2];
39 
41  short relative;
42  short flag;
43 
45  int totelem;
47  int uid;
48 
50  void *data;
52  char name[64];
54  char vgroup[64];
55 
57  float slidermin;
58  float slidermax;
59 
61 
62 typedef struct Key {
63  ID id;
65  struct AnimData *adt;
66 
73 
78  char elemstr[32];
80  int elemsize;
81  char _pad[4];
82 
86  struct Ipo *ipo DNA_DEPRECATED;
87 
88  ID *from;
89 
91  int totkey;
92  short flag;
94  char type;
95  char _pad2;
96 
99  float ctime;
100 
105  int uidgen;
106 } Key;
107 
108 /* **************** KEY ********************* */
109 
110 /* Key->type: KeyBlocks are interpreted as... */
111 enum {
112  /* Sequential positions over time (using KeyBlock->pos and Key->ctime) */
114 
115  /* States to blend between (default) */
117 };
118 
119 /* Key->flag */
120 enum {
122 };
123 
124 /* KeyBlock->type */
125 enum {
130 };
131 
132 /* KeyBlock->flag */
133 enum {
134  KEYBLOCK_MUTE = (1 << 0),
135  KEYBLOCK_SEL = (1 << 1),
136  KEYBLOCK_LOCKED = (1 << 2),
137 };
138 
139 #define KEYELEM_FLOAT_LEN_COORD 3
140 
141 /* Curve key data layout constants */
142 #define KEYELEM_ELEM_SIZE_CURVE 3
143 
144 #define KEYELEM_ELEM_LEN_BPOINT 2
145 #define KEYELEM_FLOAT_LEN_BPOINT (KEYELEM_ELEM_LEN_BPOINT * KEYELEM_ELEM_SIZE_CURVE)
146 
147 #define KEYELEM_ELEM_LEN_BEZTRIPLE 4
148 #define KEYELEM_FLOAT_LEN_BEZTRIPLE (KEYELEM_ELEM_LEN_BEZTRIPLE * KEYELEM_ELEM_SIZE_CURVE)
149 
150 #ifdef __cplusplus
151 }
152 #endif
ID and Library types, which are fundamental for sdna.
@ KEY_DS_EXPAND
struct KeyBlock KeyBlock
@ KEYBLOCK_SEL
@ KEYBLOCK_MUTE
@ KEYBLOCK_LOCKED
@ KEY_LINEAR
@ KEY_CARDINAL
@ KEY_BSPLINE
@ KEY_CATMULL_ROM
struct Key Key
@ KEY_RELATIVE
@ KEY_NORMAL
These structs are the foundation for all linked lists in the library system.
Definition: DNA_ID.h:368
struct KeyBlock * prev
Definition: DNA_key_types.h:25
short flag
Definition: DNA_key_types.h:42
char name[64]
Definition: DNA_key_types.h:52
float pos
Definition: DNA_key_types.h:32
float slidermax
Definition: DNA_key_types.h:58
float slidermin
Definition: DNA_key_types.h:57
float curval
Definition: DNA_key_types.h:34
struct KeyBlock * next
Definition: DNA_key_types.h:25
char vgroup[64]
Definition: DNA_key_types.h:54
short relative
Definition: DNA_key_types.h:41
short type
Definition: DNA_key_types.h:37
char _pad1[2]
Definition: DNA_key_types.h:38
void * data
Definition: DNA_key_types.h:50
ID * from
Definition: DNA_key_types.h:88
int totkey
Definition: DNA_key_types.h:91
float ctime
Definition: DNA_key_types.h:99
char _pad2
Definition: DNA_key_types.h:95
struct Ipo *ipo DNA_DEPRECATED
Definition: DNA_key_types.h:86
short flag
Definition: DNA_key_types.h:92
char elemstr[32]
Definition: DNA_key_types.h:78
ID id
Definition: DNA_key_types.h:63
int uidgen
int elemsize
Definition: DNA_key_types.h:80
struct AnimData * adt
Definition: DNA_key_types.h:65
char type
Definition: DNA_key_types.h:94
ListBase block
Definition: DNA_key_types.h:84
KeyBlock * refkey
Definition: DNA_key_types.h:72
char _pad[4]
Definition: DNA_key_types.h:81