qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

jellybean_raindrops_anim.h (1332B)


      1 #ifdef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
      2 RGB_MATRIX_EFFECT(JELLYBEAN_RAINDROPS)
      3 #    ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
      4 
      5 static void jellybean_raindrops_set_color(uint8_t i, effect_params_t* params) {
      6     if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) return;
      7 
      8     hsv_t hsv = {random8(), random8_min_max(127, 255), rgb_matrix_config.hsv.v};
      9     rgb_t rgb = rgb_matrix_hsv_to_rgb(hsv);
     10     rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
     11 }
     12 
     13 bool JELLYBEAN_RAINDROPS(effect_params_t* params) {
     14     static uint16_t index = RGB_MATRIX_LED_COUNT + 1;
     15 
     16     // Periodic trigger for LED change
     17     if ((params->iter == 0) && (scale16by8(g_rgb_timer, qadd8(rgb_matrix_config.speed, 16)) % 5 == 0)) {
     18         index = random8_max(RGB_MATRIX_LED_COUNT);
     19     }
     20 
     21     RGB_MATRIX_USE_LIMITS(led_min, led_max);
     22     if (params->init) {
     23         for (uint8_t i = led_min; i < led_max; i++) {
     24             jellybean_raindrops_set_color(i, params);
     25         }
     26     }
     27     // Change LED once and set index out of range till next trigger
     28     else if (led_min <= index && index < led_max) {
     29         jellybean_raindrops_set_color(index, params);
     30         index = RGB_MATRIX_LED_COUNT + 1;
     31     }
     32     return rgb_matrix_check_finished_leds(led_max);
     33 }
     34 
     35 #    endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
     36 #endif     // ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS