#ifndef ROTOR_NODES_SOURCE #define ROTOR_NODES_SOURCE #include "rotor.h" namespace Rotor { class Signal_colour: public Image_node { public: Signal_colour(){ create_signal_input("Selector","Selector input"); create_attribute("palette","palette list of web colours","Colour palette","000000"); title="Signal colour"; description="Cycles through a palette of background colours according to selector signal"; NODEID="a2183fe0-2d09-11e3-9a64-538ee2cf40bc"; }; Signal_colour(map &settings):Signal_colour() { base_settings(settings); for (uint32_t i=0;ivalue.size()/6;i++){ palette.push_back(Colour(attributes["palette"]->value.substr(i*6,6))); } prevcol=-1; }; ~Signal_colour(){}; Image *output(const Frame_spec &frame){ if (palette.size()) { int col=((int)inputs[0]->get((Time_spec)frame))%palette.size(); if (col!=prevcol) cerr<<"colour now "< &_settings) { return new Signal_colour(_settings);}; private: vector palette; int prevcol; }; class Signal_greyscale: public Image_node { //Draws signal bars in greyscale public: Signal_greyscale(){ create_signal_input("Signal","Signal input"); title="Signal greyscale"; description="Renders signal level as greyscale background"; NODEID="ae91b8a0-2d09-11e3-aa7d-8b7f1ef1a439"; }; Signal_greyscale(map &settings):Signal_greyscale() { base_settings(settings); prevcol=-1; }; ~Signal_greyscale(){}; Image *output(const Frame_spec &frame){ uint8_t col=((uint8_t)(inputs[0]->get((Time_spec)frame)*255.0f)); if (col!=prevcol){ //how about when starting a new render? //for (int i=0;i &_settings) { return new Signal_greyscale(_settings);}; private: uint8_t prevcol; }; } #endif