Commit: cad4bfe653e12bb4c6178b7a83d35806d10ee9b0
Author: Tamito Kajiyama
Date:   Tue Apr 15 13:29:03 2014 +0900
https://developer.blender.org/rBcad4bfe653e12bb4c6178b7a83d35806d10ee9b0

Freestyle: Added missing mesh property definitions for Freestyle Edge/Face 
marks.

This revision also addresses the issue of these properties not shown in the 
Outliner
in the Datablocks display mode.  Now Freestyle edge/face marks can be keyframed
through the Outliner.

===================================================================

M       source/blender/makesrna/intern/rna_mesh.c

===================================================================

diff --git a/source/blender/makesrna/intern/rna_mesh.c 
b/source/blender/makesrna/intern/rna_mesh.c
index 42f316e..ac917d9 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -742,6 +742,68 @@ static void rna_CustomDataLayer_clone_set(PointerRNA *ptr, 
CustomData *data, int
        CustomData_set_layer_clone_index(data, type, n);
 }
 
+static int rna_MEdge_freestyle_edge_mark_get(PointerRNA *ptr)
+{
+       Mesh *me = rna_mesh(ptr);
+       MEdge *medge = (MEdge *)ptr->data;
+       FreestyleEdge *fed = CustomData_get(&me->edata, (int)(medge - 
me->medge), CD_FREESTYLE_EDGE);
+
+       return fed && (fed->flag & FREESTYLE_EDGE_MARK) != 0;
+}
+
+static void rna_MEdge_freestyle_edge_mark_set(PointerRNA *ptr, int value)
+{
+       Mesh *me = rna_mesh(ptr);
+       MEdge *medge = (MEdge *)ptr->data;
+       FreestyleEdge *fed = CustomData_get(&me->edata, (int)(medge - 
me->medge), CD_FREESTYLE_EDGE);
+
+       if (!fed) {
+               fed = CustomData_add_layer(&me->edata, CD_FREESTYLE_EDGE, 
CD_CALLOC, NULL, me->totedge);
+
+               /* auto-enable Freestyle edge mark drawing */
+               if (value) {
+                       me->drawflag |= ME_DRAW_FREESTYLE_EDGE;
+               }
+       }
+       if (value) {
+               fed->flag |= FREESTYLE_EDGE_MARK;
+       }
+       else {
+               fed->flag &= ~FREESTYLE_EDGE_MARK;
+       }
+}
+
+static int rna_MPoly_freestyle_face_mark_get(PointerRNA *ptr)
+{
+       Mesh *me = rna_mesh(ptr);
+       MPoly *mpoly = (MPoly *)ptr->data;
+       FreestyleFace *ffa = CustomData_get(&me->pdata, (int)(mpoly - 
me->mpoly), CD_FREESTYLE_FACE);
+
+       return ffa && (ffa->flag & FREESTYLE_FACE_MARK) != 0;
+}
+
+static void rna_MPoly_freestyle_face_mark_set(PointerRNA *ptr, int value)
+{
+       Mesh *me = rna_mesh(ptr);
+       MPoly *mpoly = (MPoly *)ptr->data;
+       FreestyleFace *ffa = CustomData_get(&me->pdata, (int)(mpoly - 
me->mpoly), CD_FREESTYLE_FACE);
+
+       if (!ffa) {
+               ffa = CustomData_add_layer(&me->pdata, CD_FREESTYLE_FACE, 
CD_CALLOC, NULL, me->totpoly);
+
+               /* auto-enable Freestyle face mark drawing */
+               if (value) {
+                       me->drawflag |= ME_DRAW_FREESTYLE_FACE;
+               }
+       }
+       if (value) {
+               ffa->flag |= FREESTYLE_FACE_MARK;
+       }
+       else {
+               ffa->flag &= ~FREESTYLE_FACE_MARK;
+       }
+}
+
 /* Generic UV rename! */
 static void rna_MeshUVLayer_name_set(PointerRNA *ptr, const char *name)
 {
@@ -1808,6 +1870,11 @@ static void rna_def_medge(BlenderRNA *brna)
        RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_LOOSEEDGE);
        RNA_def_property_ui_text(prop, "Loose", "Loose edge");
 
+       prop = RNA_def_property(srna, "freestyle_edge_mark", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_funcs(prop, 
"rna_MEdge_freestyle_edge_mark_get", "rna_MEdge_freestyle_edge_mark_set");
+       RNA_def_property_ui_text(prop, "Freestyle Edge Mark", "Edge mark for 
Freestyle line rendering");
+       RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+
        prop = RNA_def_property(srna, "index", PROP_INT, PROP_UNSIGNED);
        RNA_def_property_clear_flag(prop, PROP_EDITABLE);
        RNA_def_property_int_funcs(prop, "rna_MeshEdge_index_get", NULL, NULL);
@@ -2007,6 +2074,11 @@ static void rna_def_mpolygon(BlenderRNA *brna)
        RNA_def_property_ui_text(prop, "Smooth", "");
        RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
 
+       prop = RNA_def_property(srna, "freestyle_face_mark", PROP_BOOLEAN, 
PROP_NONE);
+       RNA_def_property_boolean_funcs(prop, 
"rna_MPoly_freestyle_face_mark_get", "rna_MPoly_freestyle_face_mark_set");
+       RNA_def_property_ui_text(prop, "Freestyle Face Mark", "Face mark for 
Freestyle line rendering");
+       RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
+
        prop = RNA_def_property(srna, "normal", PROP_FLOAT, PROP_DIRECTION);
        RNA_def_property_array(prop, 3);
        RNA_def_property_range(prop, -1.0f, 1.0f);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to