1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
#ifndef ROTOR_NODES_SIGNALS
#define ROTOR_NODES_SIGNALS
#include "rotor.h"
namespace Rotor {
class Time: public Signal_node {
public:
Time(){
title="Time";
description="Outputs the time in seconds as a signal";
UID="432b0d1e-2d09-11e3-a8b9-e3affcfd2b31";
};
Time(map<string,string> &settings): Time() {
base_settings(settings);
};
Time* clone(map<string,string> &_settings) { return new Time(_settings);};
const float output(const Time_spec &time) {
return time.time;
}
};
class Track_time: public Signal_node {
public:
Track_time(){
title="Track time";
description="Outputs the fraction of the track as a signal";
UID="5892933e-2d09-11e3-8f2e-47c1defdb1d7";
};
Track_time(map<string,string> &settings): Track_time() {
base_settings(settings);
};
Track_time* clone(map<string,string> &_settings) { return new Track_time(_settings);};
const float output(const Time_spec &time) {
return time.time/time.duration;
}
};
class At_track_time: public Signal_node {
public:
At_track_time(){
create_signal_input("signal","Signal Input");
create_parameter("time","number","Track time to evaluate","Time",0.0f);
title="@Track time";
description="Gets input from a different point in the track";
UID="6a3edb9c-2d09-11e3-975c-df9df6d19f0a";
};
At_track_time(map<string,string> &settings): At_track_time() {
base_settings(settings);
};
At_track_time* clone(map<string,string> &_settings) { return new At_track_time(_settings);};
const float output(const Time_spec &time) {
Time_spec t=Time_spec(parameters["time"]->value*time.duration,time.framerate,time.duration);
return inputs[0]->get(t);
}
};
class Signal_output: public Signal_node {
public:
Signal_output(){
create_signal_input("signal","Signal Input");
title="Signal output";
description="Outputs a signal to xml for testing";
UID="74773190-2d09-11e3-ae26-7f2bb9af632c";
};
Signal_output(map<string,string> &settings): Signal_output() {
base_settings(settings);
};
Signal_output* clone(map<string,string> &_settings) { return new Signal_output(_settings);};
bool render(const float duration, const float framerate,string &xml_out){
//lost this somewhere
return true;
}
const float output(const Time_spec &time) {
return inputs[0]->get(time);
}
};
class Testcard: public Image_node {
public:
Testcard(){
//internal testing node only
};
Testcard(map<string,string> &settings): Testcard() {
base_settings(settings);
};
~Testcard(){};
Testcard* clone(map<string,string> &_settings) { return new Testcard(_settings);};
Image *output(const Frame_spec &frame){
float hs=(255.0f/frame.h);
for (int i=0;i<frame.h;i++){
for (int j=0;j<frame.w;j++){
image.RGBdata[(i*frame.w+j)*3]=(uint8_t)((int)((i+(frame.time*25.0f)*hs))%255);
image.RGBdata[((i*frame.w+j)*3)+1]=(uint8_t)((int)((j+(frame.time*100.0f)*hs))%255);
image.RGBdata[((i*frame.w+j)*3)+2]=(uint8_t)(0);
//image->Adata[i*frame.w+j]=(uint8_t)255;
//image->Zdata[i*frame.w+j]=(uint16_t)512; //1.0 in fixed point 8.8 bits
}
}
return ℑ
}
private:
};
}
#endif
|