]> git.donarmstrong.com Git - qmk_firmware.git/blobdiff - quantum/rgblight.h
rgblight.[ch] more configurable (#3582)
[qmk_firmware.git] / quantum / rgblight.h
index ba010dfae3c48c5fc2eac4cd4ae9a8155fdc730b..d1e00eef31e3b2dedf961f1176bc65839fe1673e 100644 (file)
 #ifndef RGBLIGHT_H
 #define RGBLIGHT_H
 
-#ifdef RGBLIGHT_ANIMATIONS
-       #define RGBLIGHT_MODES 36
-#else
-       #define RGBLIGHT_MODES 1
-#endif
+#include "rgblight_reconfig.h"
+
+#define _RGBM_SINGLE_STATIC(sym)   RGBLIGHT_MODE_ ## sym,
+#define _RGBM_SINGLE_DYNAMIC(sym)  RGBLIGHT_MODE_ ## sym,
+#define _RGBM_MULTI_STATIC(sym)    RGBLIGHT_MODE_ ## sym,
+#define _RGBM_MULTI_DYNAMIC(sym)   RGBLIGHT_MODE_ ## sym,
+#define _RGBM_TMP_STATIC(sym)      RGBLIGHT_MODE_ ## sym,
+#define _RGBM_TMP_DYNAMIC(sym)     RGBLIGHT_MODE_ ## sym,
+enum RGBLIGHT_EFFECT_MODE {
+    RGBLIGHT_MODE_zero = 0,
+#include "rgblight.h"
+    RGBLIGHT_MODE_last
+};
+
+#ifndef RGBLIGHT_H_DUMMY_DEFINE
+
+#define RGBLIGHT_MODES (RGBLIGHT_MODE_last-1)
 
 #ifndef RGBLIGHT_EFFECT_BREATHE_CENTER
 #define RGBLIGHT_EFFECT_BREATHE_CENTER 1.85  // 1-2.7
@@ -168,4 +180,69 @@ void rgblight_effect_christmas(void);
 void rgblight_effect_rgbtest(void);
 void rgblight_effect_alternating(void);
 
+#endif // #ifndef RGBLIGHT_H_DUMMY_DEFINE
+#endif // RGBLIGHT_H
+
+#ifdef _RGBM_SINGLE_STATIC
+  _RGBM_SINGLE_STATIC( STATIC_LIGHT )
+  #ifdef RGBLIGHT_EFFECT_BREATHING
+    _RGBM_MULTI_DYNAMIC( BREATHING )
+    _RGBM_TMP_DYNAMIC( breathing_3 )
+    _RGBM_TMP_DYNAMIC( breathing_4 )
+    _RGBM_TMP_DYNAMIC( BREATHING_end )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_RAINBOW_MOOD
+    _RGBM_MULTI_DYNAMIC( RAINBOW_MOOD )
+    _RGBM_TMP_DYNAMIC( rainbow_mood_7 )
+    _RGBM_TMP_DYNAMIC( RAINBOW_MOOD_end )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_RAINBOW_SWIRL
+    _RGBM_MULTI_DYNAMIC( RAINBOW_SWIRL )
+    _RGBM_TMP_DYNAMIC( rainbow_swirl_10 )
+    _RGBM_TMP_DYNAMIC( rainbow_swirl_11 )
+    _RGBM_TMP_DYNAMIC( rainbow_swirl_12 )
+    _RGBM_TMP_DYNAMIC( rainbow_swirl_13 )
+    _RGBM_TMP_DYNAMIC( RAINBOW_SWIRL_end )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_SNAKE
+    _RGBM_MULTI_DYNAMIC( SNAKE )
+    _RGBM_TMP_DYNAMIC( snake_16 )
+    _RGBM_TMP_DYNAMIC( snake_17 )
+    _RGBM_TMP_DYNAMIC( snake_18 )
+    _RGBM_TMP_DYNAMIC( snake_19 )
+    _RGBM_TMP_DYNAMIC( SNAKE_end )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_KNIGHT
+    _RGBM_MULTI_DYNAMIC( KNIGHT )
+    _RGBM_TMP_DYNAMIC( knight_22 )
+    _RGBM_TMP_DYNAMIC( KNIGHT_end )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_CHRISTMAS
+    _RGBM_SINGLE_DYNAMIC( CHRISTMAS )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_STATIC_GRADIENT
+    _RGBM_MULTI_STATIC( STATIC_GRADIENT )
+    _RGBM_TMP_STATIC( static_gradient_26 )
+    _RGBM_TMP_STATIC( static_gradient_27 )
+    _RGBM_TMP_STATIC( static_gradient_28 )
+    _RGBM_TMP_STATIC( static_gradient_29 )
+    _RGBM_TMP_STATIC( static_gradient_30 )
+    _RGBM_TMP_STATIC( static_gradient_31 )
+    _RGBM_TMP_STATIC( static_gradient_32 )
+    _RGBM_TMP_STATIC( static_gradient_33 )
+    _RGBM_TMP_STATIC( STATIC_GRADIENT_end )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_RGB_TEST
+    _RGBM_SINGLE_DYNAMIC( RGB_TEST )
+  #endif
+  #ifdef RGBLIGHT_EFFECT_ALTERNATING
+    _RGBM_SINGLE_DYNAMIC( ALTERNATING )
+  #endif
 #endif
+
+#undef _RGBM_SINGLE_STATIC
+#undef _RGBM_SINGLE_DYNAMIC
+#undef _RGBM_MULTI_STATIC
+#undef _RGBM_MULTI_DYNAMIC
+#undef _RGBM_TMP_STATIC
+#undef _RGBM_TMP_DYNAMIC