Blender  V3.3
speaker.c
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
7 #include "DNA_defaults.h"
8 #include "DNA_object_types.h"
9 #include "DNA_sound_types.h"
10 #include "DNA_speaker_types.h"
11 
12 #include "BLI_math.h"
13 #include "BLI_utildefines.h"
14 
15 #include "BLT_translation.h"
16 
17 #include "BKE_anim_data.h"
18 #include "BKE_idtype.h"
19 #include "BKE_lib_id.h"
20 #include "BKE_lib_query.h"
21 #include "BKE_main.h"
22 #include "BKE_speaker.h"
23 
24 #include "BLO_read_write.h"
25 
26 static void speaker_init_data(ID *id)
27 {
28  Speaker *speaker = (Speaker *)id;
29 
31 
33 }
34 
36 {
37  Speaker *speaker = (Speaker *)id;
38 
40 }
41 
42 static void speaker_blend_write(BlendWriter *writer, ID *id, const void *id_address)
43 {
44  Speaker *spk = (Speaker *)id;
45 
46  /* write LibData */
47  BLO_write_id_struct(writer, Speaker, id_address, &spk->id);
48  BKE_id_blend_write(writer, &spk->id);
49 
50  if (spk->adt) {
51  BKE_animdata_blend_write(writer, spk->adt);
52  }
53 }
54 
55 static void speaker_blend_read_data(BlendDataReader *reader, ID *id)
56 {
57  Speaker *spk = (Speaker *)id;
58  BLO_read_data_address(reader, &spk->adt);
59  BKE_animdata_blend_read_data(reader, spk->adt);
60 
61 #if 0
62  spk->sound = newdataadr(fd, spk->sound);
63  direct_link_sound(fd, spk->sound);
64 #endif
65 }
66 
67 static void speaker_blend_read_lib(BlendLibReader *reader, ID *id)
68 {
69  Speaker *spk = (Speaker *)id;
70  BLO_read_id_address(reader, spk->id.lib, &spk->sound);
71 }
72 
73 static void speaker_blend_read_expand(BlendExpander *expander, ID *id)
74 {
75  Speaker *spk = (Speaker *)id;
76  BLO_expand(expander, spk->sound);
77 }
78 
80  .id_code = ID_SPK,
81  .id_filter = FILTER_ID_SPK,
82  .main_listbase_index = INDEX_ID_SPK,
83  .struct_size = sizeof(Speaker),
84  .name = "Speaker",
85  .name_plural = "speakers",
86  .translation_context = BLT_I18NCONTEXT_ID_SPEAKER,
88  .asset_type_info = NULL,
89 
91  .copy_data = NULL,
92  .free_data = NULL,
93  .make_local = NULL,
94  .foreach_id = speaker_foreach_id,
95  .foreach_cache = NULL,
96  .foreach_path = NULL,
97  .owner_get = NULL,
98 
99  .blend_write = speaker_blend_write,
100  .blend_read_data = speaker_blend_read_data,
101  .blend_read_lib = speaker_blend_read_lib,
102  .blend_read_expand = speaker_blend_read_expand,
103 
104  .blend_read_undo_preserve = NULL,
105 
106  .lib_override_apply_post = NULL,
107 };
108 
109 void *BKE_speaker_add(Main *bmain, const char *name)
110 {
111  Speaker *spk;
112 
113  spk = BKE_id_new(bmain, ID_SPK, name);
114 
115  return spk;
116 }
void BKE_animdata_blend_read_data(struct BlendDataReader *reader, struct AnimData *adt)
Definition: anim_data.c:1443
void BKE_animdata_blend_write(struct BlendWriter *writer, struct AnimData *adt)
Definition: anim_data.c:1421
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
Definition: BKE_idtype.h:39
void BKE_id_blend_write(struct BlendWriter *writer, struct ID *id)
Definition: lib_id.c:2008
void * BKE_id_new(struct Main *bmain, short type, const char *name)
Definition: lib_id.c:1159
#define BKE_LIB_FOREACHID_PROCESS_IDSUPER(_data, _id_super, _cb_flag)
@ IDWALK_CB_USER
Definition: BKE_lib_query.h:73
General operations for speakers.
#define BLI_assert(a)
Definition: BLI_assert.h:46
#define MEMCMP_STRUCT_AFTER_IS_ZERO(struct_var, member)
#define MEMCPY_STRUCT_AFTER(struct_dst, struct_src, member)
#define BLO_read_data_address(reader, ptr_p)
#define BLO_write_id_struct(writer, struct_name, id_address, id)
#define BLO_read_id_address(reader, lib, id_ptr_p)
#define BLO_expand(expander, id)
#define BLT_I18NCONTEXT_ID_SPEAKER
#define FILTER_ID_SPK
Definition: DNA_ID.h:920
@ INDEX_ID_SPK
Definition: DNA_ID.h:1035
@ ID_SPK
Definition: DNA_ID_enums.h:63
#define DNA_struct_default_get(struct_name)
Definition: DNA_defaults.h:29
Object is a sort of wrapper for general info.
struct Speaker Speaker
static void init_data(ModifierData *md)
static void * newdataadr(FileData *fd, const void *adr)
Definition: readfile.c:1600
static void speaker_blend_read_lib(BlendLibReader *reader, ID *id)
Definition: speaker.c:67
static void speaker_blend_read_expand(BlendExpander *expander, ID *id)
Definition: speaker.c:73
void * BKE_speaker_add(Main *bmain, const char *name)
Definition: speaker.c:109
static void speaker_init_data(ID *id)
Definition: speaker.c:26
IDTypeInfo IDType_ID_SPK
Definition: speaker.c:79
static void speaker_blend_read_data(BlendDataReader *reader, ID *id)
Definition: speaker.c:55
static void speaker_blend_write(BlendWriter *writer, ID *id, const void *id_address)
Definition: speaker.c:42
static void speaker_foreach_id(ID *id, LibraryForeachIDData *data)
Definition: speaker.c:35
short id_code
Definition: BKE_idtype.h:114
Definition: DNA_ID.h:368
struct Library * lib
Definition: DNA_ID.h:372
Definition: BKE_main.h:121
struct AnimData * adt
struct bSound * sound