diff options
Diffstat (limited to 'rotord/src/graph.cpp')
| -rw-r--r-- | rotord/src/graph.cpp | 28 |
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; } |
