[Bf-committers] [Bf-blender-cvs] SVN commit: /data/svn/bf-blender [20757] branches/soc-2009-kazanbas/source/ blender: Added two RNA struct functions - merely wrappers around the C api.
Arystan Dyussenov
arystan.d at gmail.com
Tue Jun 9 16:57:56 CEST 2009
Yay, committed with Chingiz's username :-P.
On Tue, Jun 9, 2009 at 8:53 PM, Chingiz Dyussenov <chingiz.ds at gmail.com>wrote:
> Revision: 20757
>
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=20757
> Author: chingachgook
> Date: 2009-06-09 16:53:19 +0200 (Tue, 09 Jun 2009)
>
> Log Message:
> -----------
> Added two RNA struct functions - merely wrappers around the C api.
>
> - add_mesh to Main - calls C add_mesh and returns a new mesh
> - copy to Mesh - calls C copy_mesh and returns a new copy
>
> Not sure about function placement and naming though.
> Put both functions in editmesh.c, mesh editor module. Added prototypes
> to rna_internal.h. Prefixed both with "RNA_api_".
>
> Wanted to code Mesh.copy so that it copies Mesh data from another object
> instead of creating a new Mesh, but this needs CustomData manipulations
> which I should study later.
>
> Maybe we need a separate file for API functions? e.g. mesh_api.c?
>
> Modified Paths:
> --------------
> branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_main.c
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c
>
> Modified: branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
> ===================================================================
> --- branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
> 2009-06-09 13:51:32 UTC (rev 20756)
> +++ branches/soc-2009-kazanbas/source/blender/editors/mesh/editmesh.c
> 2009-06-09 14:53:19 UTC (rev 20757)
> @@ -2027,3 +2027,51 @@
> vc->em= me->edit_mesh;
> }
> }
> +
> +/* Python API */
> +Mesh *RNA_api_add_mesh(Main *main, char *name)
> +{
> + return add_mesh(name);
> +}
> +
> +Mesh *RNA_api_mesh_copy(Mesh *me)
> +{
> + return copy_mesh(me);
> +}
> +
> +/*
> +void RNA_api_mesh_copy_(Mesh *me, Object *ob, int apply_transform)
> +{
> + if (ob->type != OB_MESH) {
> + return;
> + }
> +
> + Mesh *src= (Mesh*)ob->data;
> +
> + CustomData_free(&me->vdata, me->totvert);
> + CustomData_free(&me->edata, me->totedge);
> + CustomData_free(&me->fdata, me->totface);
> +
> + CustomData_copy(&src->vdata, &me->vdata, CD_MASK_MESH,
> CD_DUPLICATE, me->totvert);
> + CustomData_copy(&src->edata, &me->edata, CD_MASK_MESH,
> CD_DUPLICATE, me->totedge);
> + CustomData_copy(&src->fdata, &me->fdata, CD_MASK_MESH,
> CD_DUPLICATE, me->totface);
> + mesh_update_customdata_pointers(me);
> +
> + // ensure indirect linked data becomes lib-extern
> + for(i=0; i<src->fdata.totlayer; i++) {
> + if(src->fdata.layers[i].type == CD_MTFACE) {
> + tface= (MTFace*)src->fdata.layers[i].data;
> +
> + for(a=0; a<src->totface; a++, tface++)
> + if(tface->tpage)
> + id_lib_extern((ID*)tface->tpage);
> + }
> + }
> +
> + me->mselect= NULL;
> + me->bb= src->bb;
> +
> + //men->key= copy_key(me->key);
> + //if(men->key) men->key->from= (ID *)men;
> +}
> +*/
>
> Modified:
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h
> ===================================================================
> ---
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h
> 2009-06-09 13:51:32 UTC (rev 20756)
> +++
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_internal.h
> 2009-06-09 14:53:19 UTC (rev 20757)
> @@ -189,6 +189,8 @@
> /* API functions */
>
> void RNA_api_ui_layout(struct StructRNA *srna);
> +struct Mesh *RNA_api_add_mesh(struct Main *main, char *name);
> +struct Mesh *RNA_api_mesh_copy(struct Mesh *me);
>
> /* ID Properties */
>
>
> Modified:
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_main.c
> ===================================================================
> --- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_main.c
> 2009-06-09 13:51:32 UTC (rev 20756)
> +++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_main.c
> 2009-06-09 14:53:19 UTC (rev 20757)
> @@ -218,6 +218,8 @@
> {
> StructRNA *srna;
> PropertyRNA *prop;
> + FunctionRNA *func;
> +
> const char *lists[][5]= {
> {"cameras", "Camera", "rna_Main_camera_begin", "Cameras",
> "Camera datablocks."},
> {"scenes", "Scene", "rna_Main_scene_begin", "Scenes", "Scene
> datablocks."},
> @@ -265,6 +267,13 @@
> RNA_def_property_collection_funcs(prop, lists[i][2],
> "rna_iterator_listbase_next", "rna_iterator_listbase_end",
> "rna_iterator_listbase_get", 0, 0, 0);
> RNA_def_property_ui_text(prop, lists[i][3], lists[i][4]);
> }
> +
> + func= RNA_def_function(srna, "add_mesh", "RNA_api_add_mesh");
> + RNA_def_function_ui_description(func, "Add a new mesh.");
> + prop= RNA_def_string(func, "name", "", 0, "", "New name for the
> datablock.");
> + RNA_def_property_flag(prop, PROP_REQUIRED);
> + prop= RNA_def_pointer(func, "mesh", "Mesh", "", "A new mesh.");
> + RNA_def_function_return(func, prop);
> }
>
> #endif
>
> Modified:
> branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c
> ===================================================================
> --- branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c
> 2009-06-09 13:51:32 UTC (rev 20756)
> +++ branches/soc-2009-kazanbas/source/blender/makesrna/intern/rna_mesh.c
> 2009-06-09 14:53:19 UTC (rev 20757)
> @@ -1044,6 +1044,7 @@
> {
> StructRNA *srna;
> PropertyRNA *prop;
> + FunctionRNA *func;
>
> srna= RNA_def_struct(brna, "Mesh", "ID");
> RNA_def_struct_ui_text(srna, "Mesh", "Mesh datablock to define
> geometric surfaces.");
> @@ -1126,6 +1127,11 @@
> RNA_def_property_ui_text(prop, "Shape Keys", "");
>
> rna_def_texmat_common(srna, "rna_Mesh_texspace_editable");
> +
> + func= RNA_def_function(srna, "copy", "RNA_api_mesh_copy");
> + RNA_def_function_ui_description(func, "Create a copy of this
> mesh.");
> + prop= RNA_def_pointer(func, "mesh", "Mesh", "", "A new mesh.");
> + RNA_def_function_return(func, prop);
> }
>
> void RNA_def_mesh(BlenderRNA *brna)
>
>
> _______________________________________________
> Bf-blender-cvs mailing list
> Bf-blender-cvs at blender.org
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
More information about the Bf-committers
mailing list