summaryrefslogtreecommitdiff
path: root/rotord/src/graph.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rotord/src/graph.cpp')
-rw-r--r--rotord/src/graph.cpp28
1 files changed, 21 insertions, 7 deletions
diff --git a/rotord/src/graph.cpp b/rotord/src/graph.cpp
index 9536fdc..03192f3 100644
--- a/rotord/src/graph.cpp
+++ b/rotord/src/graph.cpp
@@ -33,20 +33,34 @@ bool Graph::signal_render(string &signal_xml,const float framerate) {
return false;
}
*/
-bool Graph::preview(xmlIO &XML,string node,int frame,int w,int h){
- //
- //bool imencode(const string& ext, InputArray img, vector<uchar>& buf, const vector<int>& params=vector<int>())
- //if (find_node_id)
+bool Graph::preview(xmlIO &XML,string &node,string &_format,int frame,int w,int h){
if (nodes.find(node)!=nodes.end()){
- float t=frame*framerate;
+ float t=frame/framerate;
+ XML.addTag("preview");
+ XML.addAttribute("preview","frame",ofToString(frame),0);
+ XML.addAttribute("preview","nodeID",node,0);
+ XML.pushTag("preview");
if (dynamic_cast<Signal_node*>(nodes[node])){
Time_spec ts=Time_spec(t,framerate,0.0f);
XML.addValue("signal",dynamic_cast<Signal_node*>(nodes[node])->get_output(ts));
- return true;
}
if (dynamic_cast<Image_node*>(nodes[node])){
- return true;
+ Frame_spec fs=Frame_spec(t,framerate,0.0f,w,h);
+ Image *img=dynamic_cast<Image_node*>(nodes[node])->get_output(fs);
+ vector<uchar> buf;
+ string format=(_format==""?".png":_format);
+ if (cv::imencode(format,img->rgb,buf)){ //, const vector<int>& params=vector<int>())
+ stringstream output;
+ Poco::Base64Encoder *enc=new Poco::Base64Encoder(output);
+ enc->write(buf.data(),buf.size());
+ enc->close();
+ delete enc;
+ XML.addValue("image",output.str());
+ XML.addAttribute("image","format",format,0);
+ }
}
+ XML.popTag();
+ return true;
}
return false;
}