Commit: 4c5439075b64a2e9fafb7e38ef1650f56ebccd99
Author: Joshua Leung
Date:   Sun Nov 9 01:34:07 2014 +1300
Branches: GPencil_EditStrokes
https://developer.blender.org/rB4c5439075b64a2e9fafb7e38ef1650f56ebccd99

Fix: Stroke filling was incorrectly propagated to the following layers

This was noticeable when the enabling onion skinning on a layer without
fills which follows one which does.

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

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

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

diff --git a/source/blender/editors/gpencil/drawgpencil.c 
b/source/blender/editors/gpencil/drawgpencil.c
index 9098b3a..8188738 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -979,17 +979,25 @@ static void gp_draw_data(bGPdata *gpd, int offsx, int 
offsy, int winx, int winy,
                glLineWidth(lthick);
                glPointSize((float)(gpl->thickness + 2));
                
-               /* apply xray layer setting */
-               if (gpl->flag & GP_LAYER_NO_XRAY) dflag |=  GP_DRAWDATA_NO_XRAY;
-               else dflag &= ~GP_DRAWDATA_NO_XRAY;
+               /* Add layer drawing settings to the set of "draw flags" 
+                * NOTE: If the setting doesn't apply, it *must* be cleared,
+                *       as dflag's carry over from the previous layer
+                */
+#define GP_DRAWFLAG_APPLY(condition, draw_flag_value)     { \
+                       if (condition) dflag |= (draw_flag_value);      \
+                       else           dflag &= ~(draw_flag_value);     \
+               } (void)0
+               
+               /* xray... */
+               GP_DRAWFLAG_APPLY((gpl->flag & GP_LAYER_NO_XRAY), 
GP_DRAWDATA_NO_XRAY);
                
-               /* apply volumetric setting */
-               if (gpl->flag & GP_LAYER_VOLUMETRIC) dflag |= 
GP_DRAWDATA_VOLUMETRIC;
-               else dflag &= ~GP_DRAWDATA_VOLUMETRIC;
+               /* volumetric strokes... */
+               GP_DRAWFLAG_APPLY((gpl->flag & GP_LAYER_VOLUMETRIC), 
GP_DRAWDATA_VOLUMETRIC);
                
-               /* apply fill setting */
+               /* fill strokes... */
                // XXX: this is not a very good limit
-               if (gpl->fill[3] > 0.001f)  dflag |= GP_DRAWDATA_FILL;
+               GP_DRAWFLAG_APPLY((gpl->fill[3] > 0.001f), GP_DRAWDATA_FILL);
+#undef GP_DRAWFLAG_APPLY
                
                /* draw 'onionskins' (frame left + right) */
                if ((gpl->flag & GP_LAYER_ONIONSKIN) && !(dflag & 
GP_DRAWDATA_NO_ONIONS)) {

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

Reply via email to