/* SPDX-License-Identifier: GPL-2.0-or-later */

/* Note - never reorder or remove these, only add new animations at the end */
enum {
    VIALRGB_EFFECT_OFF = 0,
    VIALRGB_EFFECT_DIRECT,
    VIALRGB_EFFECT_SOLID_COLOR,
    VIALRGB_EFFECT_ALPHAS_MODS,
    VIALRGB_EFFECT_GRADIENT_UP_DOWN,
    VIALRGB_EFFECT_GRADIENT_LEFT_RIGHT,
    VIALRGB_EFFECT_BREATHING,
    VIALRGB_EFFECT_BAND_SAT,
    VIALRGB_EFFECT_BAND_VAL,
    VIALRGB_EFFECT_BAND_PINWHEEL_SAT,
    VIALRGB_EFFECT_BAND_PINWHEEL_VAL,
    VIALRGB_EFFECT_BAND_SPIRAL_SAT,
    VIALRGB_EFFECT_BAND_SPIRAL_VAL,
    VIALRGB_EFFECT_CYCLE_ALL,
    VIALRGB_EFFECT_CYCLE_LEFT_RIGHT,
    VIALRGB_EFFECT_CYCLE_UP_DOWN,
    VIALRGB_EFFECT_RAINBOW_MOVING_CHEVRON,
    VIALRGB_EFFECT_CYCLE_OUT_IN,
    VIALRGB_EFFECT_CYCLE_OUT_IN_DUAL,
    VIALRGB_EFFECT_CYCLE_PINWHEEL,
    VIALRGB_EFFECT_CYCLE_SPIRAL,
    VIALRGB_EFFECT_DUAL_BEACON,
    VIALRGB_EFFECT_RAINBOW_BEACON,
    VIALRGB_EFFECT_RAINBOW_PINWHEELS,
    VIALRGB_EFFECT_RAINDROPS,
    VIALRGB_EFFECT_JELLYBEAN_RAINDROPS,
    VIALRGB_EFFECT_HUE_BREATHING,
    VIALRGB_EFFECT_HUE_PENDULUM,
    VIALRGB_EFFECT_HUE_WAVE,
    VIALRGB_EFFECT_TYPING_HEATMAP,
    VIALRGB_EFFECT_DIGITAL_RAIN,
    VIALRGB_EFFECT_SOLID_REACTIVE_SIMPLE,
    VIALRGB_EFFECT_SOLID_REACTIVE,
    VIALRGB_EFFECT_SOLID_REACTIVE_WIDE,
    VIALRGB_EFFECT_SOLID_REACTIVE_MULTIWIDE,
    VIALRGB_EFFECT_SOLID_REACTIVE_CROSS,
    VIALRGB_EFFECT_SOLID_REACTIVE_MULTICROSS,
    VIALRGB_EFFECT_SOLID_REACTIVE_NEXUS,
    VIALRGB_EFFECT_SOLID_REACTIVE_MULTINEXUS,
    VIALRGB_EFFECT_SPLASH,
    VIALRGB_EFFECT_MULTISPLASH,
    VIALRGB_EFFECT_SOLID_SPLASH,
    VIALRGB_EFFECT_SOLID_MULTISPLASH,
    VIALRGB_EFFECT_PIXEL_RAIN,
    VIALRGB_EFFECT_PIXEL_FRACTAL,
};

static const PROGMEM vialrgb_supported_mode_t supported_modes[] = {
    { VIALRGB_EFFECT_OFF, 0 },
#ifdef RGB_MATRIX_EFFECT_VIALRGB_DIRECT
    { VIALRGB_EFFECT_DIRECT, RGB_MATRIX_VIALRGB_DIRECT },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_COLOR
    { VIALRGB_EFFECT_SOLID_COLOR, RGB_MATRIX_SOLID_COLOR },
#endif
#ifdef RGB_MATRIX_EFFECT_ALPHAS_MODS
    { VIALRGB_EFFECT_ALPHAS_MODS, RGB_MATRIX_ALPHAS_MODS },
#endif
#ifdef RGB_MATRIX_EFFECT_GRADIENT_UP_DOWN
    { VIALRGB_EFFECT_GRADIENT_UP_DOWN, RGB_MATRIX_GRADIENT_UP_DOWN },
#endif
#ifdef RGB_MATRIX_EFFECT_GRADIENT_LEFT_RIGHT
    { VIALRGB_EFFECT_GRADIENT_LEFT_RIGHT, RGB_MATRIX_GRADIENT_LEFT_RIGHT },
#endif
#ifdef RGB_MATRIX_EFFECT_BREATHING
    { VIALRGB_EFFECT_BREATHING, RGB_MATRIX_BREATHING },
#endif
#ifdef RGB_MATRIX_EFFECT_BAND_SAT
    { VIALRGB_EFFECT_BAND_SAT, RGB_MATRIX_BAND_SAT },
#endif
#ifdef RGB_MATRIX_EFFECT_BAND_VAL
    { VIALRGB_EFFECT_BAND_VAL, RGB_MATRIX_BAND_VAL },
#endif
#ifdef RGB_MATRIX_EFFECT_BAND_PINWHEEL_SAT
    { VIALRGB_EFFECT_BAND_PINWHEEL_SAT, RGB_MATRIX_BAND_PINWHEEL_SAT },
#endif
#ifdef RGB_MATRIX_EFFECT_BAND_PINWHEEL_VAL
    { VIALRGB_EFFECT_BAND_PINWHEEL_VAL, RGB_MATRIX_BAND_PINWHEEL_VAL },
#endif
#ifdef RGB_MATRIX_EFFECT_BAND_SPIRAL_SAT
    { VIALRGB_EFFECT_BAND_SPIRAL_SAT, RGB_MATRIX_BAND_SPIRAL_SAT },
#endif
#ifdef RGB_MATRIX_EFFECT_BAND_SPIRAL_VAL
    { VIALRGB_EFFECT_BAND_SPIRAL_VAL, RGB_MATRIX_BAND_SPIRAL_VAL },
#endif
#ifdef RGB_MATRIX_EFFECT_CYCLE_ALL
    { VIALRGB_EFFECT_CYCLE_ALL, RGB_MATRIX_CYCLE_ALL },
#endif
#ifdef RGB_MATRIX_EFFECT_CYCLE_LEFT_RIGHT
    { VIALRGB_EFFECT_CYCLE_LEFT_RIGHT, RGB_MATRIX_CYCLE_LEFT_RIGHT },
#endif
#ifdef RGB_MATRIX_EFFECT_CYCLE_UP_DOWN
    { VIALRGB_EFFECT_CYCLE_UP_DOWN, RGB_MATRIX_CYCLE_UP_DOWN },
#endif
#ifdef RGB_MATRIX_EFFECT_RAINBOW_MOVING_CHEVRON
    { VIALRGB_EFFECT_RAINBOW_MOVING_CHEVRON, RGB_MATRIX_RAINBOW_MOVING_CHEVRON },
#endif
#ifdef RGB_MATRIX_EFFECT_CYCLE_OUT_IN
    { VIALRGB_EFFECT_CYCLE_OUT_IN, RGB_MATRIX_CYCLE_OUT_IN },
#endif
#ifdef RGB_MATRIX_EFFECT_CYCLE_OUT_IN_DUAL
    { VIALRGB_EFFECT_CYCLE_OUT_IN_DUAL, RGB_MATRIX_CYCLE_OUT_IN_DUAL },
#endif
#ifdef RGB_MATRIX_EFFECT_CYCLE_PINWHEEL
    { VIALRGB_EFFECT_CYCLE_PINWHEEL, RGB_MATRIX_CYCLE_PINWHEEL },
#endif
#ifdef RGB_MATRIX_EFFECT_CYCLE_SPIRAL
    { VIALRGB_EFFECT_CYCLE_SPIRAL, RGB_MATRIX_CYCLE_SPIRAL },
#endif
#ifdef RGB_MATRIX_EFFECT_DUAL_BEACON
    { VIALRGB_EFFECT_DUAL_BEACON, RGB_MATRIX_DUAL_BEACON },
#endif
#ifdef RGB_MATRIX_EFFECT_RAINBOW_BEACON
    { VIALRGB_EFFECT_RAINBOW_BEACON, RGB_MATRIX_RAINBOW_BEACON },
#endif
#ifdef RGB_MATRIX_EFFECT_RAINBOW_PINWHEELS
    { VIALRGB_EFFECT_RAINBOW_PINWHEELS, RGB_MATRIX_RAINBOW_PINWHEELS },
#endif
#ifdef RGB_MATRIX_EFFECT_RAINDROPS
    { VIALRGB_EFFECT_RAINDROPS, RGB_MATRIX_RAINDROPS },
#endif
#ifdef RGB_MATRIX_EFFECT_JELLYBEAN_RAINDROPS
    { VIALRGB_EFFECT_JELLYBEAN_RAINDROPS, RGB_MATRIX_JELLYBEAN_RAINDROPS },
#endif
#ifdef RGB_MATRIX_EFFECT_HUE_BREATHING
    { VIALRGB_EFFECT_HUE_BREATHING, RGB_MATRIX_HUE_BREATHING },
#endif
#ifdef RGB_MATRIX_EFFECT_HUE_PENDULUM
    { VIALRGB_EFFECT_HUE_PENDULUM, RGB_MATRIX_HUE_PENDULUM },
#endif
#ifdef RGB_MATRIX_EFFECT_HUE_WAVE
    { VIALRGB_EFFECT_HUE_WAVE, RGB_MATRIX_HUE_WAVE },
#endif
#ifdef RGB_MATRIX_EFFECT_TYPING_HEATMAP
    { VIALRGB_EFFECT_TYPING_HEATMAP, RGB_MATRIX_TYPING_HEATMAP },
#endif
#ifdef RGB_MATRIX_EFFECT_DIGITAL_RAIN
    { VIALRGB_EFFECT_DIGITAL_RAIN, RGB_MATRIX_DIGITAL_RAIN },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE_SIMPLE
    { VIALRGB_EFFECT_SOLID_REACTIVE_SIMPLE, RGB_MATRIX_SOLID_REACTIVE_SIMPLE },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE
    { VIALRGB_EFFECT_SOLID_REACTIVE, RGB_MATRIX_SOLID_REACTIVE },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE_WIDE
    { VIALRGB_EFFECT_SOLID_REACTIVE_WIDE, RGB_MATRIX_SOLID_REACTIVE_WIDE },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE_MULTIWIDE
    { VIALRGB_EFFECT_SOLID_REACTIVE_MULTIWIDE, RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE_CROSS
    { VIALRGB_EFFECT_SOLID_REACTIVE_CROSS, RGB_MATRIX_SOLID_REACTIVE_CROSS },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE_MULTICROSS
    { VIALRGB_EFFECT_SOLID_REACTIVE_MULTICROSS, RGB_MATRIX_SOLID_REACTIVE_MULTICROSS },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE_NEXUS
    { VIALRGB_EFFECT_SOLID_REACTIVE_NEXUS, RGB_MATRIX_SOLID_REACTIVE_NEXUS },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_REACTIVE_MULTINEXUS
    { VIALRGB_EFFECT_SOLID_REACTIVE_MULTINEXUS, RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS },
#endif
#ifdef RGB_MATRIX_EFFECT_SPLASH
    { VIALRGB_EFFECT_SPLASH, RGB_MATRIX_SPLASH },
#endif
#ifdef RGB_MATRIX_EFFECT_MULTISPLASH
    { VIALRGB_EFFECT_MULTISPLASH, RGB_MATRIX_MULTISPLASH },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_SPLASH
    { VIALRGB_EFFECT_SOLID_SPLASH, RGB_MATRIX_SOLID_SPLASH },
#endif
#ifdef RGB_MATRIX_EFFECT_SOLID_MULTISPLASH
    { VIALRGB_EFFECT_SOLID_MULTISPLASH, RGB_MATRIX_SOLID_MULTISPLASH },
#endif
#ifdef RGB_MATRIX_EFFECT_PIXEL_RAIN
    { VIALRGB_EFFECT_PIXEL_RAIN, RGB_MATRIX_PIXEL_RAIN },
#endif
#ifdef RGB_MATRIX_EFFECT_PIXEL_FRACTAL
    { VIALRGB_EFFECT_PIXEL_FRACTAL, RGB_MATRIX_PIXEL_FRACTAL },
#endif
};