RNA: packing functions for vfont & sound

D389 by @kevindietrich
This commit is contained in:
Campbell Barton 2015-02-07 22:31:00 +11:00
parent 5ebae1c0c0
commit e7c7f57481
Notes: blender-bot 2023-02-14 20:12:01 +01:00
Referenced by issue blender/blender-addons#37876, Pack/unpack Python functions for more data types
7 changed files with 152 additions and 2 deletions

View File

@ -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
)

View File

@ -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},

View File

@ -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);

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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