Program Listing for File cuehandler.h

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

/*
 * CueHandler - Base class for mapping Cues to PixelMaestro actions.
 */

#ifndef CUEHANDLER_H
#define CUEHANDLER_H

#include <stdint.h>
#include "../core/palette.h"
#include "../core/section.h"
#include "cuecontroller.h"

namespace PixelMaestro {
    class CueController;
    class CueHandler {
        public:
            explicit CueHandler(CueController& controller);
            virtual ~CueHandler() { }
            virtual void run(uint8_t* cue) = 0;

        protected:
            CueController& controller_;

            void add_float_to_cue(uint32_t& index, float value);
            void add_uint16_to_cue(uint32_t& index, uint16_t value);
            void add_uint32_to_cue(uint32_t& index, uint32_t value);
            Section* get_section(uint8_t section_id, uint8_t layer_id) const;
            Palette* deserialize_palette(const uint8_t* cue, uint8_t num_colors);
            uint16_t serialize_palette(uint8_t cue[], const Palette& palette);
            uint32_t start_cue(uint8_t handler_byte, uint8_t action_byte);
            uint32_t start_cue(uint8_t handler_byte, uint8_t action_byte, uint8_t section_num, uint8_t layer_num);
    };
}

#endif // CUEHANDLER_H