[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