Commit: 8931c901bf2370a9edf6c33724a69e0dd95e3f42
Author: Joshua Leung
Date:   Fri Dec 22 15:03:44 2017 +1300
Branches: greasepencil-object
https://developer.blender.org/rB8931c901bf2370a9edf6c33724a69e0dd95e3f42

Cleanup: Make it clearer which datablock/object we're dealing with

* gpd_act -> gpd_dst   ("_act" could also mean "active one we're looking at now)
* gpd     -> gpd_src   (we sometimes refer to "gpd" as the active one we're 
working on)

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

M       source/blender/editors/gpencil/gpencil_data.c

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

diff --git a/source/blender/editors/gpencil/gpencil_data.c 
b/source/blender/editors/gpencil/gpencil_data.c
index c03914f4505..ac0362fc0b5 100644
--- a/source/blender/editors/gpencil/gpencil_data.c
+++ b/source/blender/editors/gpencil/gpencil_data.c
@@ -1878,16 +1878,17 @@ void GPENCIL_OT_vertex_group_deselect(wmOperatorType 
*ot)
        ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO;
 }
 
+
+/****************************** Join ***********************************/
+
 /* join objects called from OBJECT_OT_join */
 int ED_gpencil_join_objects_exec(bContext *C, wmOperator *op)
 {
        Main *bmain = CTX_data_main(C);
        Scene *scene = CTX_data_scene(C);
        Object  *obact = CTX_data_active_object(C);
-       bGPdata *gpd_act = NULL;
+       bGPdata *gpd_dst = NULL;
        bool ok = false;
-       int i;
-       bGPDspoint *pt;
 
        /* Ensure we're in right mode and that the active object is correct */
        if (!obact || obact->type != OB_GPENCIL)
@@ -1899,6 +1900,7 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator 
*op)
        }
 
        /* Ensure all rotations are applied before */
+       // XXX: Why don't we apply them here instead of warning?
        CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases)
        {
                if (base->object->type == OB_GPENCIL) {
@@ -1928,7 +1930,7 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator 
*op)
                return OPERATOR_CANCELLED;
        }
 
-       gpd_act = obact->data;
+       gpd_dst = obact->data;
 
        /* loop and join all data */
        CTX_DATA_BEGIN(C, Base *, base, selected_editable_bases)
@@ -1936,7 +1938,7 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator 
*op)
                if ((base->object->type == OB_GPENCIL) && (base->object != 
obact)) {
                        /* we assume that each datablock is not already used in 
active object */
                        if (obact->data != base->object->data) {
-                               bGPdata *gpd = base->object->data;
+                               bGPdata *gpd_src = base->object->data;
 
                                /* Apply all GP modifiers before */
                                for (ModifierData *md = 
base->object->modifiers.first; md; md = md->next) {
@@ -1957,6 +1959,8 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator 
*op)
                                        for (bGPDlayer *gpl_src = 
gpd->layers.first; gpl_src; gpl_src = gpl_src->next) {
                                                for (bGPDframe *gpf = 
gpl_src->frames.first; gpf; gpf = gpf->next) {
                                                        for (bGPDstroke *gps = 
gpf->strokes.first; gps; gps = gps->next) {
+                                                               bGPDspoint *pt;
+                                                               int i;
                                                                for (i = 0, pt 
= gps->points; i < gps->totpoints; i++, pt++) {
                                                                        if 
((pt->weights) && (pt->weights->index == old_idx)) {
                                                                                
pt->weights->index = idx;
@@ -1972,9 +1976,9 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator 
*op)
 
                                /* add missing paletteslots */
                                bGPDpaletteref *palslot;
-                               for (palslot = gpd->palette_slots.first; 
palslot; palslot = palslot->next) {
-                                       if 
(!BKE_gpencil_paletteslot_find(gpd_act, palslot->palette)) {
-                                               
BKE_gpencil_paletteslot_add(gpd_act, palslot->palette);
+                               for (palslot = gpd_src->palette_slots.first; 
palslot; palslot = palslot->next) {
+                                       if 
(BKE_gpencil_paletteslot_find(gpd_dst, palslot->palette) == NULL) {
+                                               
BKE_gpencil_paletteslot_add(gpd_dst, palslot->palette);
                                        }
                                }
 
@@ -1989,18 +1993,19 @@ int ED_gpencil_join_objects_exec(bContext *C, 
wmOperator *op)
                                mul_m3_v3(imat, offset_global);
                                mul_v3_m3v3(offset_local, imat, offset_global);
 
-                               float diff_mat[4][4];
-                               float inverse_diff_mat[4][4];
-
-                               for (bGPDlayer *gpl_src = gpd->layers.first; 
gpl_src; gpl_src = gpl_src->next) {
+                               for (bGPDlayer *gpl_src = 
gpd_src->layers.first; gpl_src; gpl_src = gpl_src->next) {
                                        bGPDlayer *gpl_new = 
BKE_gpencil_layer_duplicate(gpl_src);
-                                       /* recalculate all strokes */
-                                       
ED_gpencil_parent_location(base->object, gpd, gpl_src, diff_mat);
-                                       /* undo matrix */
+                                       float diff_mat[4][4];
+                                       float inverse_diff_mat[4][4];
+
+                                       /* recalculate all stroke points */
+                                       
ED_gpencil_parent_location(base->object, gpd_src, gpl_src, diff_mat);
                                        invert_m4_m4(inverse_diff_mat, 
diff_mat);
 
                                        for (bGPDframe *gpf = 
gpl_new->frames.first; gpf; gpf = gpf->next) {
                                                for (bGPDstroke *gps = 
gpf->strokes.first; gps; gps = gps->next) {
+                                                       bGPDspoint *pt;
+                                                       int i;
                                                        for (i = 0, pt = 
gps->points; i < gps->totpoints; i++, pt++) {
                                                                float mpt[3];
                                                                
mul_v3_m4v3(mpt, inverse_diff_mat, &pt->x);
@@ -2009,10 +2014,10 @@ int ED_gpencil_join_objects_exec(bContext *C, 
wmOperator *op)
                                                        }
                                                }
                                        }
-                                       /* be sure name is unique */
-                                       BLI_uniquename(&gpd_act->layers, 
gpl_new, DATA_("GP_Layer"), '.', offsetof(bGPDlayer, info), 
sizeof(gpl_new->info));
-                                       /* add to datablock */
-                                       BLI_addtail(&gpd_act->layers, gpl_new);
+                                       /* be sure name is unique in new object 
*/
+                                       BLI_uniquename(&gpd_dst->layers, 
gpl_new, DATA_("GP_Layer"), '.', offsetof(bGPDlayer, info), 
sizeof(gpl_new->info));
+                                       /* add to destination datablock */
+                                       BLI_addtail(&gpd_dst->layers, gpl_new);
                                }
 
                                /* TODO: copy animdata */
@@ -2029,4 +2034,5 @@ int ED_gpencil_join_objects_exec(bContext *C, wmOperator 
*op)
        WM_event_add_notifier(C, NC_SCENE | ND_OB_ACTIVE, scene);
 
        return OPERATOR_FINISHED;
-}
\ No newline at end of file
+}
+

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

Reply via email to