#ifndef ROTOR_NODES_H #define ROTOR_NODES_H #include "rotor.h" #include "nodes_audio_analysis.h" #include "nodes_source.h" using namespace std; namespace Rotor{ //colour node could be an alias of vec3f node and they could be interchangeable? //image node //vector_image node: supporting scalable images //image cache types? //timeline type could get around the big problem with needing to find keyframes //basic test nodes class Time: public Number_node { public: Time(){ type="time"; description="time in fractional seconds"; title="Time"; type_id="4bdaaa7a-8194-11e3-8a4f-2ff6852ae2c7"; ui_type="none"; }; Time(Json::Value &settings):Time() { init(settings); }; const double &get_output(const Frame_parameters &frame){ result=frame.time; return result; } Time* clone(Json::Value &_settings) { return new Time(_settings);}; private: }; class Multiply: public Number_node { public: Multiply(){ factors=create_array("factors","Factors to multiply","Factors"); type="multiply"; description="multiplies numbers"; title="Multiply"; type_id="11c67850-7ce4-11e3-abf6-930ef8613c46"; ui_type="none"; } Multiply(Json::Value &settings):Multiply() { init(settings); }; const double &get_output(const Frame_parameters &frame){ result=1.0f; //for (auto val:factors->get_values()) { // result*=val.get(frame); //} //std::cerr<<"multiplying "<get_number()<<" factors"<get_number();i++){ //std::cerr<<"result from input "<get(i,frame)<get(i,frame); } return result; } Multiply* clone(Json::Value &_settings) { return new Multiply(_settings);}; private: Number_array *factors; }; class Print: public String_node { public: Print(){ inlet=create_inlet("inlet"); type="print"; description="number as a string"; title="Print"; type_id="9b9232b8-8194-11e3-a5a2-07659a1b53c3"; ui_type="none"; } Print(Json::Value &settings):Print() { init(settings); }; const std::string &get_output(const Frame_parameters &frame){ std::ostringstream out; out << inlet->get(frame); result=out.str(); return result; } Print* clone(Json::Value &_settings) { return new Print(_settings);}; private: Number_inlet *inlet; }; } #endif //ROTOR_NODES_H