From e7c7f574818cbe7e6a940ad303019e07b1a8fdde Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sat, 7 Feb 2015 22:31:00 +1100 Subject: RNA: packing functions for vfont & sound D389 by @kevindietrich --- source/blender/makesrna/intern/CMakeLists.txt | 2 + source/blender/makesrna/intern/makesrna.c | 4 +- source/blender/makesrna/intern/rna_internal.h | 2 + source/blender/makesrna/intern/rna_sound.c | 2 + source/blender/makesrna/intern/rna_sound_api.c | 71 ++++++++++++++++++++++++++ source/blender/makesrna/intern/rna_vfont.c | 2 + source/blender/makesrna/intern/rna_vfont_api.c | 71 ++++++++++++++++++++++++++ 7 files changed, 152 insertions(+), 2 deletions(-) create mode 100644 source/blender/makesrna/intern/rna_sound_api.c create mode 100644 source/blender/makesrna/intern/rna_vfont_api.c diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt index 0778b14ed25..6df9e3c4e15 100644 --- a/source/blender/makesrna/intern/CMakeLists.txt +++ b/source/blender/makesrna/intern/CMakeLists.txt @@ -117,9 +117,11 @@ set(APISRC rna_scene_api.c rna_sensor_api.c rna_sequencer_api.c + rna_sound_api.c rna_space_api.c rna_text_api.c rna_ui_api.c + rna_vfont_api.c rna_wm_api.c ) diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c index ec285bc448c..14c39862467 100644 --- a/source/blender/makesrna/intern/makesrna.c +++ b/source/blender/makesrna/intern/makesrna.c @@ -3325,10 +3325,10 @@ static RNAProcessItem PROCESS_ITEMS[] = { {"rna_test.c", NULL, RNA_def_test}, {"rna_text.c", "rna_text_api.c", RNA_def_text}, {"rna_timeline.c", NULL, RNA_def_timeline_marker}, - {"rna_sound.c", NULL, RNA_def_sound}, + {"rna_sound.c", "rna_sound_api.c", RNA_def_sound}, {"rna_ui.c", "rna_ui_api.c", RNA_def_ui}, {"rna_userdef.c", NULL, RNA_def_userdef}, - {"rna_vfont.c", NULL, RNA_def_vfont}, + {"rna_vfont.c", "rna_vfont_api.c", RNA_def_vfont}, {"rna_wm.c", "rna_wm_api.c", RNA_def_wm}, {"rna_world.c", NULL, RNA_def_world}, {"rna_movieclip.c", NULL, RNA_def_movieclip}, diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h index bd1d9698c63..d0be858fe09 100644 --- a/source/blender/makesrna/intern/rna_internal.h +++ b/source/blender/makesrna/intern/rna_internal.h @@ -297,6 +297,8 @@ void RNA_api_texture(struct StructRNA *srna); void RNA_api_environment_map(struct StructRNA *srna); void RNA_api_sequences(BlenderRNA *brna, PropertyRNA *cprop); void RNA_api_sequence_elements(BlenderRNA *brna, PropertyRNA *cprop); +void RNA_api_sound(struct StructRNA *srna); +void RNA_api_vfont(struct StructRNA *srna); /* main collection functions */ void RNA_def_main_cameras(BlenderRNA *brna, PropertyRNA *cprop); diff --git a/source/blender/makesrna/intern/rna_sound.c b/source/blender/makesrna/intern/rna_sound.c index aa39e81d390..4b745c60b5b 100644 --- a/source/blender/makesrna/intern/rna_sound.c +++ b/source/blender/makesrna/intern/rna_sound.c @@ -98,6 +98,8 @@ static void rna_def_sound(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Mono", "If the file contains multiple audio channels they are rendered to a single one"); RNA_def_property_update(prop, 0, "rna_Sound_update"); + + RNA_api_sound(srna); } void RNA_def_sound(BlenderRNA *brna) diff --git a/source/blender/makesrna/intern/rna_sound_api.c b/source/blender/makesrna/intern/rna_sound_api.c new file mode 100644 index 00000000000..07b65983b33 --- /dev/null +++ b/source/blender/makesrna/intern/rna_sound_api.c @@ -0,0 +1,71 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2015 by the Blender Foundation. + * All rights reserved. + * + * Contributor(s): Kevin Dietrich + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/makesrna/intern/rna_sound_api.c + * \ingroup RNA + */ + +#include "DNA_packedFile_types.h" + +#include "RNA_define.h" +#include "RNA_enum_types.h" + +#ifdef RNA_RUNTIME + +#include "BKE_packedFile.h" + +static void rna_Sound_pack(bSound *sound, Main *bmain, ReportList *reports) +{ + sound->packedfile = newPackedFile(reports, sound->name, ID_BLEND_PATH(bmain, &sound->id)); +} + +static void rna_Sound_unpack(bSound *sound, Main *bmain, ReportList *reports, int method) +{ + if (!sound->packedfile) { + BKE_report(reports, RPT_ERROR, "Sound not packed"); + } + else { + /* reports its own error on failure */ + unpackSound(bmain, reports, sound, method); + } +} + +#else + +void RNA_api_sound(StructRNA *srna) +{ + FunctionRNA *func; + + func = RNA_def_function(srna, "pack", "rna_Sound_pack"); + RNA_def_function_ui_description(func, "Pack the sound into the current blend file"); + RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_MAIN); + + func = RNA_def_function(srna, "unpack", "rna_Sound_unpack"); + RNA_def_function_ui_description(func, "Unpack the sound to the samples filename"); + RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_MAIN); + RNA_def_enum(func, "method", unpack_method_items, PF_USE_LOCAL, "method", "How to unpack"); +} + +#endif diff --git a/source/blender/makesrna/intern/rna_vfont.c b/source/blender/makesrna/intern/rna_vfont.c index f24f94282b6..0879f4d355d 100644 --- a/source/blender/makesrna/intern/rna_vfont.c +++ b/source/blender/makesrna/intern/rna_vfont.c @@ -84,6 +84,8 @@ void RNA_def_vfont(BlenderRNA *brna) prop = RNA_def_property(srna, "packed_file", PROP_POINTER, PROP_NONE); RNA_def_property_pointer_sdna(prop, NULL, "packedfile"); RNA_def_property_ui_text(prop, "Packed File", ""); + + RNA_api_vfont(srna); } #endif diff --git a/source/blender/makesrna/intern/rna_vfont_api.c b/source/blender/makesrna/intern/rna_vfont_api.c new file mode 100644 index 00000000000..6e6c08d5293 --- /dev/null +++ b/source/blender/makesrna/intern/rna_vfont_api.c @@ -0,0 +1,71 @@ +/* + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2015 by the Blender Foundation. + * All rights reserved. + * + * Contributor(s): Kevin Dietrich + * + * ***** END GPL LICENSE BLOCK ***** + */ + +/** \file blender/makesrna/intern/rna_vfont_api.c + * \ingroup RNA + */ + +#include "DNA_packedFile_types.h" + +#include "RNA_define.h" +#include "RNA_enum_types.h" + +#ifdef RNA_RUNTIME + +#include "BKE_packedFile.h" + +static void rna_VectorFont_pack(VFont *vfont, Main *bmain, ReportList *reports) +{ + vfont->packedfile = newPackedFile(reports, vfont->name, ID_BLEND_PATH(bmain, &vfont->id)); +} + +static void rna_VectorFont_unpack(VFont *vfont, ReportList *reports, int method) +{ + if (!vfont->packedfile) { + BKE_report(reports, RPT_ERROR, "Font not packed"); + } + else { + /* reports its own error on failure */ + unpackVFont(reports, vfont, method); + } +} + +#else + +void RNA_api_vfont(StructRNA *srna) +{ + FunctionRNA *func; + + func = RNA_def_function(srna, "pack", "rna_VectorFont_pack"); + RNA_def_function_ui_description(func, "Pack the font into the current blend file"); + RNA_def_function_flag(func, FUNC_USE_REPORTS | FUNC_USE_MAIN); + + func = RNA_def_function(srna, "unpack", "rna_VectorFont_unpack"); + RNA_def_function_ui_description(func, "Unpack the font to the samples filename"); + RNA_def_function_flag(func, FUNC_USE_REPORTS); + RNA_def_enum(func, "method", unpack_method_items, PF_USE_LOCAL, "method", "How to unpack"); +} + +#endif -- cgit v1.2.3