]> git.donarmstrong.com Git - qmk_firmware.git/commitdiff
RGB Matrix Effects: Cycle Out to In & Cycle Out to In Dual (#5812)
authorXScorpion2 <rcalt2vt@gmail.com>
Sat, 11 May 2019 02:56:16 +0000 (21:56 -0500)
committerDrashna Jaelre <drashna@live.com>
Sat, 11 May 2019 02:56:16 +0000 (19:56 -0700)
docs/feature_rgb_matrix.md
quantum/rgb_matrix_animations/cycle_out_in_anim.h [new file with mode: 0644]
quantum/rgb_matrix_animations/cycle_out_in_dual_anim.h [new file with mode: 0644]
quantum/rgb_matrix_animations/rgb_matrix_effects.inc

index e29433a4bf5315866f2d820f40ea274480cba8a6..8347660dfe86605718fb92a7859df1d20d8b8202 100644 (file)
@@ -197,6 +197,8 @@ enum rgb_matrix_effects {
     RGB_MATRIX_CYCLE_ALL,           // Full keyboard solid hue cycling through full gradient
     RGB_MATRIX_CYCLE_LEFT_RIGHT,    // Full gradient scrolling left to right
     RGB_MATRIX_CYCLE_UP_DOWN,       // Full gradient scrolling top to bottom
+    RGB_MATRIX_CYCLE_OUT_IN,        // Full gradient scrolling out to in
+    RGB_MATRIX_CYCLE_OUT_IN_DUAL,   // Full dual gradients scrolling out to in
     RGB_MATRIX_RAINBOW_MOVING_CHEVRON,  // Full gradent Chevron shapped scrolling left to right
     RGB_MATRIX_DUAL_BEACON,         // Full gradient spinning around center of keyboard
     RGB_MATRIX_RAINBOW_BEACON,      // Full tighter gradient spinning around center of keyboard
@@ -236,6 +238,8 @@ You can disable a single effect by defining `DISABLE_[EFFECT_NAME]` in your `con
 |`#define DISABLE_RGB_MATRIX_CYCLE_ALL`                 |Disables `RGB_MATRIX_CYCLE_ALL`                |
 |`#define DISABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT`          |Disables `RGB_MATRIX_CYCLE_LEFT_RIGHT`         |
 |`#define DISABLE_RGB_MATRIX_CYCLE_UP_DOWN`             |Disables `RGB_MATRIX_CYCLE_UP_DOWN`            |
+|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN`              |Disables `RGB_MATRIX_CYCLE_OUT_IN`             |
+|`#define DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL`         |Disables `RGB_MATRIX_CYCLE_OUT_IN_DUAL`        |
 |`#define DISABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON`    |Disables `RGB_MATRIX_RAINBOW_MOVING_CHEVRON`   |
 |`#define DISABLE_RGB_MATRIX_DUAL_BEACON`               |Disables `RGB_MATRIX_DUAL_BEACON`              |
 |`#define DISABLE_RGB_MATRIX_RAINBOW_BEACON`            |Disables `RGB_MATRIX_RAINBOW_BEACON`           |
diff --git a/quantum/rgb_matrix_animations/cycle_out_in_anim.h b/quantum/rgb_matrix_animations/cycle_out_in_anim.h
new file mode 100644 (file)
index 0000000..dc9d09f
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef DISABLE_RGB_MATRIX_CYCLE_OUT_IN
+RGB_MATRIX_EFFECT(CYCLE_OUT_IN)
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+bool CYCLE_OUT_IN(effect_params_t* params) {
+  RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+  HSV hsv = { 0, rgb_matrix_config.sat, rgb_matrix_config.val };
+  uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 4);
+  for (uint8_t i = led_min; i < led_max; i++) {
+    RGB_MATRIX_TEST_LED_FLAGS();
+    int16_t dx = g_led_config.point[i].x - 112;
+    int16_t dy = g_led_config.point[i].y - 32;
+    uint8_t dist = sqrt16(dx * dx + dy * dy);
+    hsv.h = 3 * dist / 2 + time;
+    RGB rgb = hsv_to_rgb(hsv);
+    rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+  }
+  return led_max < DRIVER_LED_TOTAL;
+}
+
+#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+#endif // DISABLE_RGB_MATRIX_CYCLE_OUT_IN
diff --git a/quantum/rgb_matrix_animations/cycle_out_in_dual_anim.h b/quantum/rgb_matrix_animations/cycle_out_in_dual_anim.h
new file mode 100644 (file)
index 0000000..941e6b9
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+RGB_MATRIX_EFFECT(CYCLE_OUT_IN_DUAL)
+#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+
+bool CYCLE_OUT_IN_DUAL(effect_params_t* params) {
+  RGB_MATRIX_USE_LIMITS(led_min, led_max);
+
+  HSV hsv = { 0, rgb_matrix_config.sat, rgb_matrix_config.val };
+  uint8_t time = scale16by8(g_rgb_counters.tick, rgb_matrix_config.speed / 4);
+  for (uint8_t i = led_min; i < led_max; i++) {
+    RGB_MATRIX_TEST_LED_FLAGS();
+    int16_t dx = 56 - abs8(g_led_config.point[i].x - 112);
+    int16_t dy = g_led_config.point[i].y - 32;
+    uint8_t dist = sqrt16(dx * dx + dy * dy);
+    hsv.h = 3 * dist + time;
+    RGB rgb = hsv_to_rgb(hsv);
+    rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
+  }
+  return led_max < DRIVER_LED_TOTAL;
+}
+
+#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
+#endif // DISABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
index 9bc64546133292f7e0a2378a7faf984213354b0f..f05a415a58c404291afe7a433ccf967c2235b0a0 100644 (file)
@@ -7,6 +7,8 @@
 #include "rgb_matrix_animations/cycle_left_right_anim.h"
 #include "rgb_matrix_animations/cycle_up_down_anim.h"
 #include "rgb_matrix_animations/rainbow_moving_chevron_anim.h"
+#include "rgb_matrix_animations/cycle_out_in_anim.h"
+#include "rgb_matrix_animations/cycle_out_in_dual_anim.h"
 #include "rgb_matrix_animations/dual_beacon_anim.h"
 #include "rgb_matrix_animations/rainbow_beacon_anim.h"
 #include "rgb_matrix_animations/rainbow_pinwheels_anim.h"