Program Listing for File animationcuehandler.h

Return to documentation for file (src/cue/animationcuehandler.h)

#ifndef ANIMATIONCUEHANDLER_H
#define ANIMATIONCUEHANDLER_H

#include "../animation/animation.h"
#include "../core/colors.h"
#include "cuehandler.h"
#include "cuecontroller.h"

namespace PixelMaestro {
    class AnimationCueHandler : public CueHandler {
        public:
            enum class Action : uint8_t {
                SetCycleIndex,
                SetFade,
                SetFireOptions,
                SetLightningOptions,
                SetOrientation,
                SetPalette,
                SetPlasmaOptions,
                SetRadialOptions,
                SetReverse,
                SetSparkleOptions,
                SetTimer,
                SetWaveOptions,
                Start,
                Stop,
                SetCenter
            };

            enum class Byte : uint8_t {
                HandlerByte = (uint8_t)CueController::Byte::PayloadByte,
                ActionByte,
                SectionByte,
                LayerByte,
                OptionsByte
            };

            explicit AnimationCueHandler(CueController& controller) : CueHandler(controller) { }
            ~AnimationCueHandler() = default;

            // Animation-specific calls
            uint8_t* set_fire_options(uint8_t section_num, uint8_t layer_num, uint8_t multiplier);
            uint8_t* set_lightning_options(uint8_t section_num, uint8_t layer_num, uint8_t num_bolts, int8_t drift, uint8_t fork_chance);
            uint8_t* set_plasma_options(uint8_t section_num, uint8_t layer_num, float size, float resolution);
            uint8_t* set_radial_options(uint8_t section_num, uint8_t layer_num, uint8_t resolution);
            uint8_t* set_sparkle_options(uint8_t section_num, uint8_t layer_num, uint8_t threshold);
            uint8_t* set_wave_options(uint8_t section_num, uint8_t layer_num, int8_t skew);

            // General Animation calls
            uint8_t* set_center(uint8_t section_num, uint8_t layer_num, uint16_t x, uint16_t y);
            uint8_t* set_cycle_index(uint8_t section_num, uint8_t layer_num, uint8_t cycle_index);
            uint8_t* set_fade(uint8_t section_num, uint8_t layer_num, bool fade);
            uint8_t* set_orientation(uint8_t section_num, uint8_t layer_num, Animation::Orientation orientation);
            uint8_t* set_palette(uint8_t section_num, uint8_t layer_num, const Palette& palette);
            uint8_t* set_reverse(uint8_t section_num, uint8_t layer_num, bool reverse);
            uint8_t* set_timer(uint8_t section_num, uint8_t layer_num, uint16_t interval, uint16_t delay = 0);
            uint8_t* start(uint8_t section_num, uint8_t layer_num);
            uint8_t* stop(uint8_t section_num, uint8_t layer_num);

            void run(uint8_t* cue);
    };
}

#endif // ANIMATIONCUEHANDLER_H