2.5 - NLA SoC Branch Merged to 2.5!
[blender.git] / source / blender / editors / space_graph / graph_draw.c
index f8f613223db2c3cb035bf81d09ff66fec91ca0b4..8b242794ca301cc48169e874b3ab2dcd2d074a23 100644 (file)
@@ -775,6 +775,46 @@ void graph_draw_ghost_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, Vie
        glDisable(GL_BLEND);
 }
 
+/* check if any FModifiers to draw controls for  - fcm is 'active' modifier */
+static short fcurve_needs_draw_fmodifier_controls (FCurve *fcu, FModifier *fcm)
+{
+       /* don't draw if there aren't any modifiers at all */
+       if (fcu->modifiers.first == NULL) 
+               return 0;
+       
+       /* if there's an active modifier - don't draw if it doesn't drastically
+        * alter the curve...
+        */
+       if (fcm) {
+               switch (fcm->type) {
+                       /* clearly harmless */
+                       case FMODIFIER_TYPE_CYCLES:
+                               return 0;
+                               
+                       /* borderline... */
+                       case FMODIFIER_TYPE_NOISE:
+                               return 0;
+               }
+       }
+       
+       /* if only one modifier - don't draw if it is muted or disabled */
+       if (fcu->modifiers.first == fcu->modifiers.last) {
+               fcm= fcu->modifiers.first;
+               if (fcm->flag & (FMODIFIER_FLAG_DISABLED|FMODIFIER_FLAG_MUTED)) 
+                       return 0;
+       }
+       
+       /* if only active modifier - don't draw if it is muted or disabled */
+       if (fcm) {
+               if (fcm->flag & (FMODIFIER_FLAG_DISABLED|FMODIFIER_FLAG_MUTED)) 
+                       return 0;
+       }
+       
+       /* if we're still here, this means that there are modifiers with controls to be drawn */
+       // FIXME: what happens if all the modifiers were muted/disabled
+       return 1;
+}
+
 /* This is called twice from space_graph.c -> graph_main_area_draw()
  * Unselected then selected F-Curves are drawn so that they do not occlude each other.
  */