Blender V5.0
MOD_sound_equalizer.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2025 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
8
9#include <fmt/format.h>
10
11#include "BKE_colortools.hh"
12#include "BLI_listbase.h"
13#include "BLO_read_write.hh"
14#include "BLT_translation.hh"
15
16#include "DNA_sequence_types.h"
17
18#include "SEQ_modifier.hh"
19#include "SEQ_sound.hh"
20
21#include "RNA_access.hh"
22
23#include "UI_interface.hh"
25
26#include "modifier.hh"
27
28namespace blender::seq {
29
30static void sound_equalizermodifier_draw(const bContext * /*C*/, Panel *panel)
31{
32 uiLayout *layout = panel->layout;
34
35 layout->use_property_split_set(true);
36
37 uiLayout &flow = layout->grid_flow(true, 0, true, false, false);
38 RNA_BEGIN (ptr, sound_eq, "graphics") {
39 PointerRNA curve_mapping = RNA_pointer_get(&sound_eq, "curve_mapping");
40 const float clip_min_x = RNA_float_get(&curve_mapping, "clip_min_x");
41 const float clip_max_x = RNA_float_get(&curve_mapping, "clip_max_x");
42
43 uiLayout &col = flow.column(false);
44 uiLayout &split = col.split(0.4f, false);
45 split.label(fmt::format("{:.2f}", clip_min_x), ICON_NONE);
46 split.label("Hz", ICON_NONE);
47 split.alignment_set(ui::LayoutAlign::Right);
48 split.label(fmt::format("{:.2f}", clip_max_x), ICON_NONE);
49 uiTemplateCurveMapping(&col, &sound_eq, "curve_mapping", 0, false, true, true, false, false);
50 uiLayout &row = col.row(false);
52 row.label("dB", ICON_NONE);
53 }
54 RNA_END;
55}
56
62
64{
65 const SoundEqualizerModifierData *semd = reinterpret_cast<const SoundEqualizerModifierData *>(
66 smd);
68 BLO_write_struct_by_name(writer, "EQCurveMappingData", eqcmd);
69 BKE_curvemapping_blend_write(writer, &eqcmd->curve_mapping);
70 }
71}
72
74{
75 SoundEqualizerModifierData *semd = reinterpret_cast<SoundEqualizerModifierData *>(smd);
78 BKE_curvemapping_blend_read(reader, &eqcmd->curve_mapping);
79 }
80}
81
83 /*idname*/ "SoundEqualizer",
84 /*name*/ CTX_N_(BLT_I18NCONTEXT_ID_SEQUENCE, "Equalizer"),
85 /*struct_name*/ "SoundEqualizerModifierData",
86 /*struct_size*/ sizeof(SoundEqualizerModifierData),
88 /*free_data*/ sound_equalizermodifier_free,
90 /*apply*/ nullptr,
91 /*panel_register*/ sound_equalizermodifier_register,
92 /*blend_write*/ sound_equalizermodifier_write,
93 /*blend_read*/ sound_equalizermodifier_read,
94};
95
96}; // namespace blender::seq
void BKE_curvemapping_blend_read(BlendDataReader *reader, CurveMapping *cumap)
void BKE_curvemapping_blend_write(BlendWriter *writer, const CurveMapping *cumap)
#define LISTBASE_FOREACH(type, var, list)
void BLO_write_struct_by_name(BlendWriter *writer, const char *struct_name, const void *data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
#define CTX_N_(context, msgid)
#define BLT_I18NCONTEXT_ID_SEQUENCE
@ eSeqModifierType_SoundEqualizer
static void split(const char *text, const char *seps, char ***str, int *count)
#define RNA_BEGIN(sptr, itemptr, propname)
#define RNA_END
void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, blender::StringRefNull propname, int type, bool levels, bool brush, bool neg_slope, bool tone, bool presets)
PointerRNA * UI_panel_custom_data_get(const Panel *panel)
uint col
void sound_equalizermodifier_init_data(StripModifierData *smd)
static void sound_equalizermodifier_write(BlendWriter *writer, const StripModifierData *smd)
static void sound_equalizermodifier_draw(const bContext *, Panel *panel)
void sound_equalizermodifier_free(StripModifierData *smd)
static void sound_equalizermodifier_read(BlendDataReader *reader, StripModifierData *smd)
static void sound_equalizermodifier_register(ARegionType *region_type)
void sound_equalizermodifier_copy_data(StripModifierData *target, StripModifierData *smd)
StripModifierTypeInfo seqModifierType_SoundEqualizer
PanelType * modifier_panel_register(ARegionType *region_type, const eStripModifierType type, PanelDrawFn draw)
PointerRNA RNA_pointer_get(PointerRNA *ptr, const char *name)
float RNA_float_get(PointerRNA *ptr, const char *name)
struct uiLayout * layout
void alignment_set(blender::ui::LayoutAlign alignment)
void label(blender::StringRef name, int icon)
uiLayout & column(bool align)
uiLayout & grid_flow(bool row_major, int columns_len, bool even_columns, bool even_rows, bool align)
void use_property_split_set(bool value)
PointerRNA * ptr
Definition wm_files.cc:4238